Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def calculate_acceleration(mass, torque, engine_power):
- """
- mass: вес объекта
- torque: базовый крутящий момент
- engine_power: сила двигателя от 0.0 до 1.0
- """
- # Константы баланса
- K1_TORQUE_BONUS = 3.0 # Насколько резвее слабый мотор (множитель)
- K2_MASS_DRAG = 0.005 # Насколько сильно масса убивает слабый мотор
- # 1. Рассчитываем множитель момента
- # Чем меньше Power, тем больше бонус к моменту
- torque_multiplier = 1 + (K1_TORQUE_BONUS * (1.0 - engine_power))
- # 2. Рассчитываем "чистую" тягу по Ньютону (F = ma -> a = F/m)
- base_acceleration = (torque * torque_multiplier) / mass
- # 3. Рассчитываем штраф за массу для слабых двигателей
- # Чем меньше Power, тем сильнее влияет масса
- mass_penalty = K2_MASS_DRAG * mass * ((1.0 - engine_power) ** 2)
- # Итоговое ускорение
- final_acceleration = base_acceleration - mass_penalty
- # Ускорение не может быть отрицательным (если не учитываем горки)
- return max(0.0, final_acceleration)
- # Тесты
- print(f"Слабый + Легкий: {calculate_acceleration(100, 500, 0.0):.2f}") # Ожидаем: Высокое
- print(f"Сильный + Легкий: {calculate_acceleration(100, 500, 1.0):.2f}") # Ожидаем: Среднее
- print(f"Слабый + Тяжелый: {calculate_acceleration(1000, 500, 0.0):.2f}") # Ожидаем: 0 (не тянет)
- print(f"Сильный + Тяжелый: {calculate_acceleration(1000, 500, 1.0):.2f}")# Ожидаем: Низкое, но > 0
Advertisement
Add Comment
Please, Sign In to add comment