Guest User

Untitled

a guest
Dec 24th, 2025
24
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.89 KB | None | 0 0
  1. def calculate_acceleration(mass, torque, engine_power):
  2. """
  3. mass: вес объекта
  4. torque: базовый крутящий момент
  5. engine_power: сила двигателя от 0.0 до 1.0
  6. """
  7.  
  8. # Константы баланса
  9. K1_TORQUE_BONUS = 3.0 # Насколько резвее слабый мотор (множитель)
  10. K2_MASS_DRAG = 0.005 # Насколько сильно масса убивает слабый мотор
  11.  
  12. # 1. Рассчитываем множитель момента
  13. # Чем меньше Power, тем больше бонус к моменту
  14. torque_multiplier = 1 + (K1_TORQUE_BONUS * (1.0 - engine_power))
  15.  
  16. # 2. Рассчитываем "чистую" тягу по Ньютону (F = ma -> a = F/m)
  17. base_acceleration = (torque * torque_multiplier) / mass
  18.  
  19. # 3. Рассчитываем штраф за массу для слабых двигателей
  20. # Чем меньше Power, тем сильнее влияет масса
  21. mass_penalty = K2_MASS_DRAG * mass * ((1.0 - engine_power) ** 2)
  22.  
  23. # Итоговое ускорение
  24. final_acceleration = base_acceleration - mass_penalty
  25.  
  26. # Ускорение не может быть отрицательным (если не учитываем горки)
  27. return max(0.0, final_acceleration)
  28.  
  29. # Тесты
  30. print(f"Слабый + Легкий: {calculate_acceleration(100, 500, 0.0):.2f}") # Ожидаем: Высокое
  31. print(f"Сильный + Легкий: {calculate_acceleration(100, 500, 1.0):.2f}") # Ожидаем: Среднее
  32. print(f"Слабый + Тяжелый: {calculate_acceleration(1000, 500, 0.0):.2f}") # Ожидаем: 0 (не тянет)
  33. print(f"Сильный + Тяжелый: {calculate_acceleration(1000, 500, 1.0):.2f}")# Ожидаем: Низкое, но > 0
Advertisement
Add Comment
Please, Sign In to add comment