Hello friends,
I'm trying to code a projectile. For the last HOUR, I can't make this test to pass using formulas...
Here is the logic of the physics:
def update_physics(self, delta_t:int) -> None:
"""Updates the physics of the ball.
Args:
delta_t (int): time since last call, in milliseconds.
"""
# Speed update:
self.speed += self.acceleration
self.speed += self.gravity * delta_t
# Position update.
self.position += self.speed * delta_t
if self.position.z < 0:
self.position.z = 0
self.speed.z = 0
# Acceleration update:
self.acceleration = Vec3(0,0,0)
And here is the test failing:
def test_speed_z_hauteur():
test = Ball_m() # Class for converting g to a m/s^2 instead of m/ms^2
speed = 30
time = 5
gravity = 9.80665
displacement = speed * time - (0.5 * gravity * time**2) # Use a formula
test.set_speed(Vec3(0,0, speed))
test.update_physics(time)
assert test.position.z == displacement, f'{test.position.z} == {displacement}'