manim-mcp 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/README.md +104 -0
  2. package/dist/demo.mp4 +0 -0
  3. package/dist/index.js +65 -0
  4. package/dist/mcp-app.html +142 -0
  5. package/dist/server.js +1492 -0
  6. package/package.json +67 -0
  7. package/references/composer/SKILL.md +154 -0
  8. package/references/composer/references/3b1b-series-patterns.md +217 -0
  9. package/references/composer/references/domain-planning-guides/calculus-planning.md +188 -0
  10. package/references/composer/references/domain-planning-guides/linear-algebra-planning.md +169 -0
  11. package/references/composer/references/domain-planning-guides/ml-planning.md +286 -0
  12. package/references/composer/references/domain-planning-guides/number-theory-planning.md +187 -0
  13. package/references/composer/references/domain-planning-guides/physics-planning.md +249 -0
  14. package/references/composer/references/domain-planning-guides/probability-planning.md +200 -0
  15. package/references/composer/references/mathematical-storytelling.md +359 -0
  16. package/references/composer/references/narrative-patterns.md +221 -0
  17. package/references/composer/references/opening-patterns.md +284 -0
  18. package/references/composer/references/pacing-guide.md +289 -0
  19. package/references/composer/references/scene-archetypes.md +534 -0
  20. package/references/composer/references/scene-examples.md +379 -0
  21. package/references/composer/references/visual-techniques.md +480 -0
  22. package/references/composer/templates/scenes-template.md +147 -0
  23. package/references/manimce/SKILL.md +166 -0
  24. package/references/manimce/examples/3d_visualization.py +373 -0
  25. package/references/manimce/examples/basic_animations.py +212 -0
  26. package/references/manimce/examples/graph_plotting.py +401 -0
  27. package/references/manimce/examples/lorenz_attractor.py +172 -0
  28. package/references/manimce/examples/math_visualization.py +315 -0
  29. package/references/manimce/examples/updater_patterns.py +369 -0
  30. package/references/manimce/rules/3b1b-translation.md +594 -0
  31. package/references/manimce/rules/3d.md +254 -0
  32. package/references/manimce/rules/advanced-animations.md +594 -0
  33. package/references/manimce/rules/animation-groups.md +212 -0
  34. package/references/manimce/rules/animations.md +128 -0
  35. package/references/manimce/rules/api-pitfalls.md +89 -0
  36. package/references/manimce/rules/axes.md +214 -0
  37. package/references/manimce/rules/camera.md +208 -0
  38. package/references/manimce/rules/cli.md +232 -0
  39. package/references/manimce/rules/color-conventions.md +444 -0
  40. package/references/manimce/rules/colors.md +199 -0
  41. package/references/manimce/rules/config.md +264 -0
  42. package/references/manimce/rules/creation-animations.md +158 -0
  43. package/references/manimce/rules/graphing.md +233 -0
  44. package/references/manimce/rules/grouping.md +220 -0
  45. package/references/manimce/rules/latex.md +202 -0
  46. package/references/manimce/rules/lines.md +241 -0
  47. package/references/manimce/rules/long-form-video.md +552 -0
  48. package/references/manimce/rules/mathematical-domains.md +689 -0
  49. package/references/manimce/rules/mobjects.md +116 -0
  50. package/references/manimce/rules/multi-scene-composition.md +112 -0
  51. package/references/manimce/rules/pedagogy.md +532 -0
  52. package/references/manimce/rules/physics-simulations.md +610 -0
  53. package/references/manimce/rules/positioning.md +211 -0
  54. package/references/manimce/rules/scenes.md +121 -0
  55. package/references/manimce/rules/shapes.md +300 -0
  56. package/references/manimce/rules/styling.md +177 -0
  57. package/references/manimce/rules/text-animations.md +222 -0
  58. package/references/manimce/rules/text.md +189 -0
  59. package/references/manimce/rules/timing.md +227 -0
  60. package/references/manimce/rules/transform-animations.md +157 -0
  61. package/references/manimce/rules/updaters.md +226 -0
  62. package/references/manimce/templates/basic_scene.py +64 -0
  63. package/references/manimce/templates/camera_scene.py +100 -0
  64. package/references/manimce/templates/threed_scene.py +138 -0
@@ -0,0 +1,100 @@
1
+ """
2
+ Moving Camera Scene Template for Manim Community
3
+
4
+ Use this for scenes that require zooming, panning, or following objects.
5
+
6
+ Render: manim -pql your_file.py YourCameraScene
7
+ """
8
+
9
+ from manim import *
10
+
11
+
12
+ class YourCameraScene(MovingCameraScene):
13
+ """
14
+ Template for scenes with camera movement.
15
+
16
+ Inherits from MovingCameraScene which provides:
17
+ - self.camera.frame: The camera frame mobject
18
+ - Ability to zoom, pan, and follow objects
19
+ """
20
+
21
+ def construct(self):
22
+ # ============================================================
23
+ # SETUP: Create objects to showcase camera movement
24
+ # ============================================================
25
+
26
+ # Create a grid of shapes to demonstrate camera movement
27
+ shapes = VGroup(*[
28
+ Circle(radius=0.3, color=color, fill_opacity=0.5)
29
+ for color in [RED, BLUE, GREEN, YELLOW, PURPLE]
30
+ ]).arrange(RIGHT, buff=1)
31
+
32
+ # Add labels
33
+ labels = VGroup(*[
34
+ Text(str(i + 1), font_size=24).move_to(shape)
35
+ for i, shape in enumerate(shapes)
36
+ ])
37
+
38
+ # Title
39
+ title = Text("Camera Movement Demo", font_size=36).to_edge(UP)
40
+
41
+ self.add(shapes, labels)
42
+ self.play(Write(title))
43
+ self.wait()
44
+
45
+ # ============================================================
46
+ # CAMERA OPERATIONS: Zoom, pan, follow
47
+ # ============================================================
48
+
49
+ # --- ZOOM IN ---
50
+ # Save original camera state
51
+ self.camera.frame.save_state()
52
+
53
+ # Zoom into first shape
54
+ self.play(
55
+ self.camera.frame.animate.set(width=4).move_to(shapes[0])
56
+ )
57
+ self.wait()
58
+
59
+ # --- PAN ---
60
+ # Move camera to another shape
61
+ self.play(
62
+ self.camera.frame.animate.move_to(shapes[2])
63
+ )
64
+ self.wait()
65
+
66
+ # --- ZOOM OUT ---
67
+ # Restore original camera
68
+ self.play(Restore(self.camera.frame))
69
+ self.wait()
70
+
71
+ # --- FOLLOW OBJECT ---
72
+ # Create moving dot
73
+ dot = Dot(color=RED, radius=0.15).move_to(LEFT * 5)
74
+ self.add(dot)
75
+
76
+ # Set camera to follow the dot
77
+ self.camera.frame.add_updater(
78
+ lambda m: m.move_to(dot.get_center())
79
+ )
80
+
81
+ # Move the dot (camera follows automatically)
82
+ self.play(dot.animate.move_to(RIGHT * 5), run_time=3)
83
+ self.wait()
84
+
85
+ # Stop following
86
+ self.camera.frame.clear_updaters()
87
+
88
+ # ============================================================
89
+ # CLEANUP: Reset and fade out
90
+ # ============================================================
91
+
92
+ self.play(
93
+ self.camera.frame.animate.move_to(ORIGIN).set(width=14)
94
+ )
95
+ self.play(FadeOut(shapes, labels, title, dot))
96
+ self.wait()
97
+
98
+
99
+ # Run this specific scene:
100
+ # manim -pql camera_scene.py YourCameraScene
@@ -0,0 +1,138 @@
1
+ """
2
+ 3D Scene Template for Manim Community
3
+
4
+ Use this for 3D visualizations with camera rotation and surfaces.
5
+
6
+ Render: manim -pql your_file.py Your3DScene
7
+ """
8
+
9
+ from manim import *
10
+ import numpy as np
11
+
12
+
13
+ class Your3DScene(ThreeDScene):
14
+ """
15
+ Template for 3D scenes.
16
+
17
+ Inherits from ThreeDScene which provides:
18
+ - set_camera_orientation(phi, theta, gamma)
19
+ - move_camera()
20
+ - begin_ambient_camera_rotation() / stop_ambient_camera_rotation()
21
+ - add_fixed_in_frame_mobjects() for 2D overlays
22
+ """
23
+
24
+ def construct(self):
25
+ # ============================================================
26
+ # CAMERA SETUP
27
+ # ============================================================
28
+
29
+ # Set initial camera orientation
30
+ # phi: angle from z-axis (0 = top-down, 90 = side view)
31
+ # theta: rotation around z-axis
32
+ self.set_camera_orientation(
33
+ phi=70 * DEGREES,
34
+ theta=-45 * DEGREES
35
+ )
36
+
37
+ # ============================================================
38
+ # 3D AXES
39
+ # ============================================================
40
+
41
+ axes = ThreeDAxes(
42
+ x_range=[-3, 3, 1],
43
+ y_range=[-3, 3, 1],
44
+ z_range=[-2, 2, 1],
45
+ x_length=6,
46
+ y_length=6,
47
+ z_length=4,
48
+ )
49
+
50
+ # Axis labels (stay fixed to camera orientation)
51
+ axis_labels = axes.get_axis_labels(
52
+ x_label="x",
53
+ y_label="y",
54
+ z_label="z"
55
+ )
56
+
57
+ self.play(Create(axes))
58
+ self.add(axis_labels)
59
+ self.wait()
60
+
61
+ # ============================================================
62
+ # 3D OBJECTS
63
+ # ============================================================
64
+
65
+ # --- Basic 3D shapes ---
66
+ sphere = Sphere(radius=0.5, color=BLUE).shift(LEFT * 2)
67
+ cube = Cube(side_length=0.8, color=RED, fill_opacity=0.8)
68
+
69
+ self.play(Create(sphere), Create(cube))
70
+ self.wait()
71
+
72
+ # --- 3D Surface ---
73
+ # z = sin(sqrt(x^2 + y^2))
74
+ surface = Surface(
75
+ lambda u, v: axes.c2p(
76
+ u, v,
77
+ np.sin(np.sqrt(u ** 2 + v ** 2))
78
+ ),
79
+ u_range=[-2.5, 2.5],
80
+ v_range=[-2.5, 2.5],
81
+ resolution=(20, 20),
82
+ fill_opacity=0.6,
83
+ )
84
+ surface.set_color_by_gradient(BLUE, TEAL, GREEN)
85
+
86
+ self.play(
87
+ FadeOut(sphere),
88
+ FadeOut(cube),
89
+ Create(surface),
90
+ run_time=2
91
+ )
92
+ self.wait()
93
+
94
+ # ============================================================
95
+ # 2D OVERLAY (Fixed to screen)
96
+ # ============================================================
97
+
98
+ # Title that stays fixed to screen (doesn't rotate with 3D scene)
99
+ title = Text("3D Surface Visualization", font_size=36)
100
+ title.to_corner(UL)
101
+ self.add_fixed_in_frame_mobjects(title)
102
+ self.play(Write(title))
103
+
104
+ # Math equation overlay
105
+ equation = MathTex(r"z = \sin\sqrt{x^2 + y^2}")
106
+ equation.to_corner(UR)
107
+ self.add_fixed_in_frame_mobjects(equation)
108
+ self.play(Write(equation))
109
+
110
+ # ============================================================
111
+ # CAMERA MOVEMENT
112
+ # ============================================================
113
+
114
+ # --- Manual camera movement ---
115
+ self.move_camera(phi=45 * DEGREES, theta=30 * DEGREES, run_time=2)
116
+ self.wait()
117
+
118
+ # --- Continuous rotation ---
119
+ self.begin_ambient_camera_rotation(rate=0.2) # radians per second
120
+ self.wait(5)
121
+ self.stop_ambient_camera_rotation()
122
+
123
+ # ============================================================
124
+ # CLEANUP
125
+ # ============================================================
126
+
127
+ self.play(
128
+ FadeOut(surface),
129
+ FadeOut(axes),
130
+ FadeOut(axis_labels),
131
+ FadeOut(title),
132
+ FadeOut(equation),
133
+ )
134
+ self.wait()
135
+
136
+
137
+ # Run this specific scene:
138
+ # manim -pql threed_scene.py Your3DScene