mirror of
https://github.com/3b1b/manim.git
synced 2025-04-13 09:47:07 +00:00
4.5 KiB
4.5 KiB
Mobject Module README
Overview
The mobject (Mathematical Object) module is the core of Manim's visual system. It provides the base classes and implementations for all visual elements that can be displayed and animated in Manim.
Key Components
1. Base Mobject Class (mobject.py
)
- Purpose: Base class for all visual objects
- Key Features:
- Manages object properties and state
- Handles transformations and updates
- Provides core functionality for all mobjects
- Properties:
color
,opacity
,shading
position
,scale
,rotation
submobjects
: Child mobjects
- Usage:
class CustomMobject(Mobject): def __init__(self): super().__init__() self.init_points()
2. Geometry Mobjects (geometry.py
)
- Purpose: Basic geometric shapes
- Key Classes:
Circle
,Square
,Rectangle
Line
,Arrow
,Polygon
Arc
,CurvedArrow
- Usage:
circle = Circle(radius=2) square = Square(side_length=3) line = Line(start=LEFT, end=RIGHT)
3. Text and LaTeX Mobjects (text.py
)
- Purpose: Text and mathematical notation
- Key Classes:
Text
: Regular textTex
: LaTeX mathMathTex
: Mathematical expressions
- Usage:
text = Text("Hello World") equation = Tex(r"\frac{d}{dx}f(x) = \lim_{h \to 0} \frac{f(x+h)-f(x)}{h}")
4. Coordinate Systems (coordinate_systems.py
)
- Purpose: Mathematical coordinate systems
- Key Classes:
NumberLine
: One-dimensional number lineAxes
: 2D coordinate systemThreeDAxes
: 3D coordinate system
- Usage:
axes = Axes( x_range=[-3, 3], y_range=[-3, 3] )
5. Vectorized Mobjects (types/vectorized_mobject.py
)
- Purpose: Efficient rendering of complex shapes
- Key Classes:
VMobject
: Vector-based mobjectVGroup
: Group of vectorized mobjectsDashedVMobject
: Dashed line version
- Usage:
vgroup = VGroup(circle, square, line) dashed_line = DashedVMobject(line)
6. 3D Mobjects (three_dimensions.py
)
- Purpose: Three-dimensional objects
- Key Classes:
Sphere
,Cube
,Cylinder
Surface
: Parametric surfacesThreeDScene
: 3D scene support
- Usage:
sphere = Sphere(radius=2) cube = Cube(side_length=3)
7. Interactive Mobjects (interactive.py
)
- Purpose: User-interactive elements
- Key Classes:
ValueTracker
: Tracks numerical valuesButton
: Clickable buttonsSlider
: Value sliders
- Usage:
tracker = ValueTracker(0) slider = Slider(min_value=0, max_value=10)
Mobject Features
1. Transformations
- Position changes
- Scaling and rotation
- Color and opacity changes
- Complex transformations
2. Grouping
- Parent-child relationships
- Group transformations
- Layering and z-index
3. Animation Support
- Property interpolation
- Path following
- Complex animations
Interaction with Other Modules
-
Animation Module:
- Mobjects are animated
- Properties can be interpolated
- Supports complex transformations
-
Scene Module:
- Mobjects are added to scenes
- Scene manages mobject updates
- Handles mobject rendering
-
Camera Module:
- Mobjects are rendered through camera
- 3D mobjects use camera perspective
- Camera affects mobject appearance
Best Practices
-
Mobject Creation:
- Use appropriate mobject types
- Consider performance implications
- Plan for animation needs
-
Organization:
- Group related mobjects
- Use appropriate layering
- Manage z-index carefully
-
Performance:
- Minimize complex mobjects
- Use vectorized mobjects when possible
- Consider rendering complexity
Example Usage
class MobjectExample(Scene):
def construct(self):
# Create basic shapes
circle = Circle(radius=2, color=BLUE)
square = Square(side_length=3, color=RED)
# Create text
text = Text("Example", font_size=24)
# Create coordinate system
axes = Axes(
x_range=[-3, 3],
y_range=[-3, 3]
)
# Group mobjects
group = VGroup(circle, square, text)
# Transform and animate
self.play(
ShowCreation(axes),
FadeIn(group)
)
self.play(
group.animate.shift(UP),
group.animate.scale(1.5)
)