A Student’s Animation with Manim

打印 被阅读次数

Nicole, my 8th-grade student, had never used Manim or coded a video before.

But in just a few days, she made this beautiful animation — spelling out her name, stroke by stroke, with a dancing dot.

Every line, arc, and circle in the animation came from code she wrote herself.

She had to think geometrically, visualize paths, and experiment with timing.

Here’s what I loved most:

She kept tweaking the shape of the letter “e” until it felt just right to her eyes.

That’s not just code — that’s care.

And that’s how a dot becomes alive.

Not by magic, but by math, motion, and a student’s quiet creativity.

====

%%manim -ql NameWriting

class NameWriting(Scene):

    def construct(self):

        s = 0.7

        #N

        lineN = Line([-6, -2, 0], [-6, 2, 0]).shift(RIGHT*s)

        lineN1 = Line([-6, 2, 0], [-3, -2, 0]).shift(RIGHT*s)

        lineN2 = Line([-3, -2, 0], [-3, 2, 0]).shift(RIGHT*s)

        self.add(lineN, lineN1, lineN2)

     

        #i

        lineI = Line([-2.5, 0, 0], [-2.5, -2, 0]).shift(RIGHT*s)

        dotI = Dot().move_to([-2.5, 0.25, 0]).shift(RIGHT*s)

        self.add(lineI, dotI)

     

        #c

        arcC = Arc(start_angle=57*DEGREES, angle=250*DEGREES, radius=1).move_to([-1.25, -1, 0]).shift(RIGHT*s)

        self.add(arcC)

     

        #o

        circleO = Circle(radius=1, color=WHITE).move_to([0.75, -1, 0]).shift(RIGHT*s)

        self.add(circleO)

     

        #l

        lineL = Line([2.2, 2, 0], [2.2, -2, 0]).shift(RIGHT*s)

        self.add(lineL)

     

        #e

        lineE = Line([2.72, -0.75, 0], [4.65, -0.75, 0]).shift(RIGHT*s)

        arcE = Arc(start_angle=15*DEGREES, angle=320*DEGREES, radius=1).move_to([3.653, -1, 0]).shift(RIGHT*s)

        self.add(lineE, arcE)

     

        self.wait(1.5)

        # Animate the dot

        dotI2 = dotI.copy().move_to([-6, -2, 0]).shift(RIGHT*s)

        self.play(Transform(dotI, dotI2))

        self.play(MoveAlongPath(dotI, lineN), run_time=2)

        self.play(MoveAlongPath(dotI, lineN1), run_time=2)

        self.play(MoveAlongPath(dotI, lineN2), run_time=2)

        self.play(MoveAlongPath(dotI, lineI), run_time=2)

        self.play(MoveAlongPath(dotI, arcC), run_time=2)

        self.play(MoveAlongPath(dotI, circleO), run_time=2)

        self.play(MoveAlongPath(dotI, lineL), run_time=2)

        self.play(MoveAlongPath(dotI, lineE), run_time=2)

        self.play(MoveAlongPath(dotI, arcE), run_time=2)

        dotI3 = dotI.copy().move_to([-2.5, 0.25, 0]).shift(RIGHT*s)

        self.play(Transform(dotI, dotI3))

        self.add(dotI3)

        self.wait(2)

====

Even a beginner, with just math and code, can create something personal and beautiful.

Stories like this make me believe in the long journey ahead.



登录后才可评论.