Add MoveCar

This commit is contained in:
Grant Sanderson 2021-01-01 21:11:27 -08:00
parent 69850f88fa
commit 51e5de9ad1

View file

@ -92,6 +92,42 @@ class Car(SVGMobject):
return self[1][4]
class MoveCar(ApplyMethod):
CONFIG = {
"moving_forward": True,
"run_time": 5,
}
def __init__(self, car, target_point, **kwargs):
self.check_if_input_is_car(car)
self.target_point = target_point
super().__init__(car.move_to, target_point, **kwargs)
def check_if_input_is_car(self, car):
if not isinstance(car, Car):
raise Exception("MoveCar must take in Car object")
def begin(self):
super().begin()
car = self.mobject
distance = get_norm(op.sub(
self.target_mobject.get_right(),
self.starting_mobject.get_right(),
))
if not self.moving_forward:
distance *= -1
tire_radius = car.get_tires()[0].get_width() / 2
self.total_tire_radians = -distance / tire_radius
def interpolate_mobject(self, alpha):
ApplyMethod.interpolate_mobject(self, alpha)
if alpha == 0:
return
radians = alpha * self.total_tire_radians
for tire in self.mobject.get_tires():
tire.rotate_in_place(radians)
class PartyHat(SVGMobject):
CONFIG = {
"file_name": "party_hat",