[ PROMPT_NODE_27755 ]
Mobjects
[ SKILL_DOCUMENTATION ]
# Mobjects in Manim
Mobjects (Mathematical Objects) are the building blocks of Manim animations. They represent anything that can be displayed on screen.
## Basic Shapes
```python
from manim import *
class BasicShapes(Scene):
def construct(self):
# Circle
circle = Circle(radius=1, color=BLUE)
circle.set_fill(BLUE, opacity=0.5)
# Square
square = Square(side_length=2, color=RED)
# Rectangle
rectangle = Rectangle(width=3, height=1.5, color=GREEN)
# Display them
self.play(Create(circle))
self.play(Create(square))
self.play(Create(rectangle))
```
## Common Mobjects
### Geometric Shapes
```python
class GeometricShapes(Scene):
def construct(self):
# Basic shapes
circle = Circle()
square = Square()
triangle = Triangle()
pentagon = RegularPolygon(n=5)
# Arrange in a row
shapes = VGroup(circle, square, triangle, pentagon)
shapes.arrange(RIGHT, buff=0.5)
self.play(Create(shapes))
```
### Lines and Arrows
```python
class LinesAndArrows(Scene):
def construct(self):
# Line
line = Line(start=LEFT, end=RIGHT, color=BLUE)
# Arrow
arrow = Arrow(start=LEFT, end=RIGHT, color=RED)
# Double arrow
double_arrow = DoubleArrow(start=LEFT * 2, end=RIGHT * 2)
# Vector
vector = Vector(direction=UP + RIGHT)
arrows = VGroup(line, arrow, double_arrow, vector)
arrows.arrange(DOWN, buff=0.5)
self.play(Create(arrows))
```
## Mobject Properties
### Color and Opacity
```python
class ColorOpacity(Scene):
def construct(self):
circle = Circle()
# Set stroke color
circle.set_stroke(color=BLUE, width=5)
# Set fill
circle.set_fill(RED, opacity=0.7)
self.play(Create(circle))
```
### Size and Position
```python
class SizePosition(Scene):
def construct(self):
square = Square()
# Scale
square.scale(2)
# Move
square.shift(UP * 2 + RIGHT * 3)
# Rotate
square.rotate(PI / 4)
self.play(Create(square))
```
## Text and LaTeX
```python
class TextExample(Scene):
def construct(self):
# Regular text
text = Text("Hello, Manim!")
# LaTeX text
formula = MathTex(r"e^{ipi} + 1 = 0")
# Equation
equation = Tex(r"The famous equation: $E = mc^2$")
group = VGroup(text, formula, equation)
group.arrange(DOWN, buff=1)
self.play(Write(text))
self.play(Write(formula))
self.play(Write(equation))
```
## Grouping Mobjects
```python
class GroupingExample(Scene):
def construct(self):
# Create multiple circles
circles = VGroup(*[Circle(radius=0.5) for _ in range(5)])
# Arrange them
circles.arrange(RIGHT, buff=0.3)
# Apply color gradient
circles.set_color_by_gradient(BLUE, RED)
# Animate all at once
self.play(Create(circles))
# Animate each individually
self.play(*[circle.animate.shift(UP) for circle in circles])
```
## Custom Mobjects
```python
class CustomMobject(VMobject):
def __init__(self, **kwargs):
super().__init__(**kwargs)
# Add custom shape construction
self.set_points_as_corners([
LEFT, UP, RIGHT, DOWN, LEFT
])
self.set_fill(BLUE, opacity=0.5)
class CustomExample(Scene):
def construct(self):
custom = CustomMobject()
self.play(Create(custom))
```
## Resources
- [Mobjects Reference](https://docs.manim.community/en/stable/reference/manim.mobject.mobject.Mobject.html)
- [Geometry Documentation](https://docs.manim.community/en/stable/reference/manim.mobject.geometry.html)