Source code for hmanim.native.rotated_translate

from typing import Any, Dict, Optional

from manim import Animation

from .circle import Circle, CircleRotatedTranslate
from .dot import Dot, DotRotatedTranslate
from .vmobject import VMobject, VMobjectRotatedTranslate


[docs] class RotatedTranslate(Animation): """An animation that translates a :class:`VMobject` along an axis that is rotated away from the x-axis. Examples -------- .. manim:: RotatedTranslateExample from hmanim.native import Circle, Dot, Point, RotatedTranslate class RotatedTranslateExample(Scene): def construct(self): # The plane that all our hyperbolic objects live in. plane = PolarPlane(size=5) # Draw a circle. center = Point(0.0, 0.0) circle = Circle( center=center, radius=5.0, plane=plane, ) self.add(circle) # Draw the circle center. dot = Dot(center, plane=plane) self.add(dot) # Translate both the circle and the circle center. distance = 3.0 angle = TAU / 8 self.play( RotatedTranslate( circle, distance=distance, angle=angle, ), RotatedTranslate( dot, distance=distance, angle=angle, ), ) """ def __new__( cls, mobject: VMobject, distance: float, angle: float, run_time=3, apply_function_kwargs: Optional[Dict[str, Any]] = None, **kwargs ) -> Animation: if isinstance(mobject, Circle): return CircleRotatedTranslate( mobject, distance, angle, run_time, apply_function_kwargs, **kwargs ) elif isinstance(mobject, VMobject): return VMobjectRotatedTranslate( mobject, distance, angle, run_time, apply_function_kwargs, **kwargs ) elif isinstance(mobject, Dot): return DotRotatedTranslate( mobject, distance, angle, run_time, apply_function_kwargs, **kwargs ) else: raise TypeError( "RotatedTranslate only works on Circles, Dots, and VMobject." )