Scene helper¶
- class manim_extensions.compass.CompassScene(camera_class=<class 'manim.camera.moving_camera.MovingCamera'>, **kwargs)[source]¶
Bases:
MovingCameraSceneA scene equipped with a compass, ruler, and pencil. Mainly implements compass placement, arc drawing, and ruler/pencil animations.
Example: CompassSceneDocExample ¶
from manim import * from manim_extensions.compass import CompassScene class CompassSceneDocExample(CompassScene): def construct(self): self.draw_arc(ORIGIN, RIGHT, PI / 2) self.wait()
from manim import * from manim_extensions.compass import CompassScene class CompassSceneDocExample(CompassScene): def construct(self): self.draw_arc(ORIGIN, RIGHT, PI / 2) self.wait()- setup()[source]¶
CompassScene.setup example.
Example: CompassSceneSetupDocExample ¶
from manim import * from manim_extensions.compass import CompassScene class CompassSceneSetupDocExample(CompassScene): def setup(self): super().setup() self.compass.move_to(ORIGIN) def construct(self): self.wait()
from manim import * from manim_extensions.compass import CompassScene class CompassSceneSetupDocExample(CompassScene): def setup(self): super().setup() self.compass.move_to(ORIGIN) def construct(self): self.wait()
- compass_move_niddle_tip_to(pos=array([0., 0., 0.]), run_time=1)[source]¶
Move the compass needle tip to pos.
Example: CompassSceneMoveNiddleTipToDocExample ¶
from manim import * from manim_extensions.compass import CompassScene class CompassSceneMoveNiddleTipToDocExample(CompassScene): def construct(self): self.compass_move_niddle_tip_to(ORIGIN) self.wait()
from manim import * from manim_extensions.compass import CompassScene class CompassSceneMoveNiddleTipToDocExample(CompassScene): def construct(self): self.compass_move_niddle_tip_to(ORIGIN) self.wait()
- rotate_compass_about_niddle_tip(angle_or_arc, arc=None, added_anims=None, **kwargs)[source]¶
Rotate angle around the compass needle tip (niddle_tip).
Example: RotateCompassAboutNiddleTipDocExample ¶
from manim import * from manim_extensions.compass import CompassScene class RotateCompassAboutNiddleTipDocExample(CompassScene): def construct(self): self.rotate_compass_about_niddle_tip(PI / 2) self.wait()
from manim import * from manim_extensions.compass import CompassScene class RotateCompassAboutNiddleTipDocExample(CompassScene): def construct(self): self.rotate_compass_about_niddle_tip(PI / 2) self.wait()
- compass_split_span(span=3, run_time=1)[source]¶
Rotate the two compass legs uniformly outward/inward so the opened distance equals span.
Example: CompassSplitSpanDocExample ¶
from manim import * from manim_extensions.compass import CompassScene class CompassSplitSpanDocExample(CompassScene): def construct(self): self.compass_split_span(2) self.wait()
from manim import * from manim_extensions.compass import CompassScene class CompassSplitSpanDocExample(CompassScene): def construct(self): self.compass_split_span(2) self.wait()
- split_cmpass_span(span=1, run_time=1)[source]¶
Fix niddle_tip, then move pen_tip along the line through niddle_tip and pen_tip to reach the given span.
Example: SplitCmpassSpanDocExample ¶
from manim import * from manim_extensions.compass import CompassScene class SplitCmpassSpanDocExample(CompassScene): def construct(self): self.split_cmpass_span(2) self.wait()
from manim import * from manim_extensions.compass import CompassScene class SplitCmpassSpanDocExample(CompassScene): def construct(self): self.split_cmpass_span(2) self.wait()
- set_compass(niddle_pos=None, pen_pos=None, run_time=1.0)[source]¶
Place the compass at the specified positions: move niddle_tip to niddle_pos and pen_tip to pen_pos.
- Parameters:
niddle_pos (
Point) – target position for the compass needle tip (niddle_tip)pen_pos (
Point) – target position for the compass pen tip (pen_tip)manim: (..) –
CompassSceneSetCompassDocExample: from manim import * from manim_extensions.compass import CompassScene
- class CompassSceneSetCompassDocExample(CompassScene):
- def construct(self):
self.set_compass(ORIGIN, 2 * RIGHT) self.wait()
- draw_arc(niddle_point=array([0., 0., 0.]), pen_point=array([1., 0., 0.]), angle=1.0471975511965976, move_time=1.0, wait_time=1.0, run_time=1.0, arc_color=None, **kwargs)[source]¶
Draw an arc with the compass. The arc radius is computed from niddle_point and pen_point.
- Parameters:
niddle_point – centre of the arc
pen_point – starting point of the arc
angle – central angle of the arc
move_time – time to move the compass into position
run_time – time to draw the arc
wait_time – wait time between the two animations
arc_color – colour of the arc
kwargs – other keyword arguments for the arc
return – The drawn arc
manim: (..) –
CompassSceneDrawArcDocExample: from manim import * from manim_extensions.compass import CompassScene
- class CompassSceneDrawArcDocExample(CompassScene):
- def construct(self):
self.draw_arc(ORIGIN, RIGHT, PI / 2) self.wait()
- Return type:
- flip_compass(run_time=1)[source]¶
Flip the compass.
Example: FlipCompassDocExample ¶
from manim import * from manim_extensions.compass import CompassScene class FlipCompassDocExample(CompassScene): def construct(self): self.flip_compass() self.wait()
from manim import * from manim_extensions.compass import CompassScene class FlipCompassDocExample(CompassScene): def construct(self): self.flip_compass() self.wait()
- put_compass_aside(aside_pos=array([1., 0., 0.]), span_buff=0.1, run_time=1.0)[source]¶
Put the compass aside.
- Parameters:
aside_pos (
Point) – position to place the compassspan_buff (
float) – distance between the two compass tips when placed asiderun_time (
float) – time required to place the compassmanim: (..) –
PutCompassAsideDocExample: from manim import * from manim_extensions.compass import CompassScene
- class PutCompassAsideDocExample(CompassScene):
- def construct(self):
self.put_compass_aside(2 * RIGHT) self.wait()
- set_ruler(start=None, end=None, lag_ratio=0.5, run_time=1.0, with_pencil=True)[source]¶
Place the ruler so that one of its edges aligns with start and end.
- Parameters:
start (
Point) – start point of the ruler placementend (
Point) – end point of the ruler placementlag_ratio (
float) – lag ratio between the ruler and pencil placement animationsrun_time (
float) – time to place the rulerwith_pencil (
bool) – whether to place the pencil at the same timemanim: (..) –
CompassSceneSetRulerDocExample: from manim import * from manim_extensions.compass import CompassScene
- class CompassSceneSetRulerDocExample(CompassScene):
- def construct(self):
self.set_ruler(LEFT, RIGHT, with_pencil=False) self.wait()
- set_pencil(pos, run_time=1.0)[source]¶
Move the pencil nib to the specified position.
Example: SetPencilDocExample ¶
from manim import * from manim_extensions.compass import CompassScene class SetPencilDocExample(CompassScene): def construct(self): self.set_pencil(ORIGIN) self.wait()
from manim import * from manim_extensions.compass import CompassScene class SetPencilDocExample(CompassScene): def construct(self): self.set_pencil(ORIGIN) self.wait()
- draw_line(start=None, end=None, run_time=1.0, with_pencil=True, color=ManimColor('#F7D96F'), **kwargs)[source]¶
Draw a straight line using the ruler.
Example: DrawLineDocExample ¶
from manim import * from manim_extensions.compass import CompassScene class DrawLineDocExample(CompassScene): def construct(self): self.draw_line(LEFT, RIGHT) self.wait()
from manim import * from manim_extensions.compass import CompassScene class DrawLineDocExample(CompassScene): def construct(self): self.draw_line(LEFT, RIGHT) self.wait()- Return type:
- put_pencil_away(pos=array([0., -3., 0.]), run_time=1)[source]¶
Translate the pencil as a whole to the specified position.
Example: CompassScenePutPencilAwayDocExample ¶
from manim import * from manim_extensions.compass import CompassScene class CompassScenePutPencilAwayDocExample(CompassScene): def construct(self): self.put_pencil_away(2 * DOWN) self.wait()
from manim import * from manim_extensions.compass import CompassScene class CompassScenePutPencilAwayDocExample(CompassScene): def construct(self): self.put_pencil_away(2 * DOWN) self.wait()
- put_ruler_aside(aside_pos=array([0., -3., 0.]), horizontal_or_vertical=True, run_time=1.0)[source]¶
Put the ruler aside at aside_pos.
- Parameters:
aside_pos (
Point) – position where the ruler will be placedhorizontal_or_vertical (
bool) – whether to place it horizontallyrun_time (
float) – time required to place the rulermanim: (..) –
PutRulerAsideDocExample: from manim import * from manim_extensions.compass import CompassScene
- class PutRulerAsideDocExample(CompassScene):
- def construct(self):
self.put_ruler_aside(2 * DOWN) self.wait()