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.

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