Visual studies
Short Manim examples with strong visual payoff and minimal code.
These examples show what small Manim scenes can look like in practice. You can explore the ideas here and then try them yourself in the Manim Lab editor.
← Return to the main Manim Lab when you want to render your own scenes.
Rendered in Manim Lab: all the animations on this page were rendered in the Manim Lab page using our renderer.
Examples
P1 • Fourier sketch
A moving point traces a surprising curve. Small code, rich motion.
〰️ Fourier sketch analysis
from manim import *
import numpy as np
class FourierSketch(Scene):
def construct(self):
plane = NumberPlane(
x_range=[-4,4,1],
y_range=[-3,3,1],
background_line_style={"stroke_opacity":0.18}
).scale(0.8)
t = ValueTracker(0)
dot = always_redraw(
lambda: Dot(
np.array([
2*np.cos(t.get_value()) + np.cos(3*t.get_value()),
2*np.sin(t.get_value()) - np.sin(2*t.get_value()),
0
]),
color=YELLOW
)
)
path = TracedPath(dot.get_center, stroke_color=TEAL, stroke_width=4)
self.add(plane, path, dot)
self.play(t.animate.set_value(TAU), run_time=5, rate_func=linear)
self.wait(1)
- A single traced point produces the whole pattern.
- Changing coefficients creates new shapes.
Preview
Fourier sketch
P2 • Roots on the unit circle
Complex roots arranged as points on a circle reveal their symmetry immediately.
🌸 Roots of unity algebra
from manim import *
import numpy as np
class RootsBlossom(Scene):
def construct(self):
plane = ComplexPlane()
circle = Circle(radius=2.2)
roots = VGroup(*[
Dot(
2.2*np.array([np.cos(2*np.pi*k/7),np.sin(2*np.pi*k/7),0]),
color=YELLOW
)
for k in range(7)
])
self.play(Create(plane),Create(circle))
self.play(LaggedStart(*[FadeIn(r) for r in roots],lag_ratio=0.08))
self.wait(1)
- Algebra becomes geometry.
- The symmetry appears instantly.
Preview
Roots of unity
P3 • Vector flower
A rotating vector creates a flower-like curve as it moves.
🌀 Vector flower geometry
from manim import *
import numpy as np
class VectorFlower(Scene):
def construct(self):
plane = NumberPlane()
t = ValueTracker(0)
dot = always_redraw(lambda: Dot(
[2*np.cos(3*t.get_value())*np.cos(t.get_value()),
2*np.cos(3*t.get_value())*np.sin(t.get_value()),
0],
color=YELLOW
))
trail = TracedPath(dot.get_center)
self.add(plane, trail, dot)
self.play(t.animate.set_value(2*TAU), run_time=5, rate_func=linear)
self.wait(1)
- Repeated motion creates structure.
- Small rules produce complex curves.
Preview
Vector flower
P4 • Cube teaser
A playful grid inspired by the Rubik cube. Lightweight and fun.
🧊 Cube teaser play
from manim import *
class RubikTeaser(Scene):
def construct(self):
colors=[RED,BLUE,GREEN,YELLOW,ORANGE,PURPLE,TEAL,PINK,GOLD]
squares=VGroup(*[
Square(side_length=0.7).set_fill(colors[i],opacity=0.9)
for i in range(9)
]).arrange_in_grid(3,3,buff=0.06)
self.play(LaggedStart(*[FadeIn(s) for s in squares],lag_ratio=0.05))
self.wait(1)
- Simple grid animation.
- Good starting point for puzzle-style visuals.
Preview
Cube teaser