Skip to content

Examples Gallery ​

This gallery contains a collection of best practice code snippets together with their corresponding video output, illustrating different functionalities across the library.

All examples are under the MIT license - feel free to copy & paste them to your projects!

Getting Started ​

Fluxion Logo Animation

python
from fluxion import *

class fluxionLogo(Scene):
    def construct(self):
        self.camera.background_color = "#ece6e2"
        logo_green = "#87c2a5"
        logo_blue = "#525893"
        logo_red = "#e07a5f"
        logo_black = "#343434"
        ds_f = Text("F", fill_opacity=1, color=logo_black).scale(7)
        ds_f.shift(2.25 * LEFT + 1.5 * UP)
        circle = Circle(color=logo_green, fill_opacity=1).shift(LEFT)
        square = Square(color=logo_blue, fill_opacity=1).shift(UP)
        triangle = Triangle(color=logo_red, fill_opacity=1).shift(RIGHT)
        logo = VGroup(triangle, square, circle, ds_f)
        logo.move_to(ORIGIN)
        self.play(DrawBorderThenFill(logo))
        self.play(logo.animate.shift(UP * 0.5))
        self.wait()

Opening Fluxion ​

Opening Animation

python
class OpeningFluxion(Scene):
    def construct(self):
        title = Text("Fluxion", font_size=96)
        subtitle = Text("Mathematical Animation Engine", font_size=36)
        subtitle.next_to(title, DOWN)
        
        self.play(Write(title))
        self.play(FadeIn(subtitle, shift=UP))
        self.wait()

Basic Shapes ​

Create Circle ​

Creating a Circle

python
class CreateCircle(Scene):
    def construct(self):
        circle = Circle()
        circle.set_fill(PINK, opacity=0.5)
        self.play(Create(circle))
        self.wait()

Shapes ​

Multiple Shapes

python
class Shapes(Scene):
    def construct(self):
        circle = Circle()
        square = Square()
        triangle = Triangle()
        
        circle.shift(LEFT)
        square.shift(UP)
        triangle.shift(RIGHT)
        
        self.add(circle, square, triangle)
        self.wait()

Square and Circle ​

Square and Circle Positioning

python
class SquareAndCircle(Scene):
    def construct(self):
        circle = Circle()
        circle.set_fill(PINK, opacity=0.5)
        
        square = Square()
        square.set_fill(BLUE, opacity=0.5)
        
        square.next_to(circle, RIGHT, buff=0.5)
        self.play(Create(circle), Create(square))
        self.wait()

Transformations ​

Square to Circle ​

Square to Circle Transform

python
class SquareToCircle(Scene):
    def construct(self):
        circle = Circle()
        circle.set_fill(PINK, opacity=0.5)
        square = Square()
        square.rotate(PI / 4)
        
        self.play(Create(square))
        self.play(Transform(square, circle))
        self.play(FadeOut(square))
        self.wait()

Animated Square to Circle ​

Animated Transformation

python
class AnimatedSquareToCircle(Scene):
    def construct(self):
        circle = Circle()
        square = Square()
        
        self.play(Create(square))
        self.play(square.animate.rotate(PI / 4))
        self.play(Transform(square, circle))
        self.play(square.animate.set_fill(PINK, opacity=0.5))
        self.wait()

Transform Cycle ​

Transform Cycle

python
class TransformCycle(Scene):
    def construct(self):
        a = Circle()
        t1 = Square()
        t2 = Triangle()
        self.add(a)
        self.wait()
        for t in [t1, t2]:
            self.play(Transform(a, t))
        self.wait()

Example Transform ​

Transform Example

python
class ExampleTransform(Scene):
    def construct(self):
        A = Text("A")
        B = Text("B")
        self.add(A)
        self.wait()
        self.play(Transform(A, B))
        self.wait()

Animations ​

Some Animations ​

Basic Animations

python
class SomeAnimations(Scene):
    def construct(self):
        square = Square()
        self.play(FadeIn(square))
        self.play(Rotate(square, PI/4))
        self.play(FadeOut(square))
        self.wait()

Creating Mobjects ​

Creating Mobjects

python
class CreatingMobjects(Scene):
    def construct(self):
        circle = Circle()
        self.add(circle)
        self.wait(1)
        self.remove(circle)
        self.wait(1)

Animate Example ​

Using .animate

python
class AnimateExample(Scene):
    def construct(self):
        square = Square()
        self.add(square)
        self.play(square.animate.shift(UP * 2))
        self.play(square.animate.rotate(PI / 4))
        self.wait()

Movement ​

Moving Around ​

Moving Around

python
class MovingAround(Scene):
    def construct(self):
        square = Square(color=BLUE, fill_opacity=1)
        self.play(square.animate.shift(LEFT))
        self.play(square.animate.set_fill(ORANGE))
        self.play(square.animate.scale(0.3))
        self.play(square.animate.rotate(0.4))
        self.wait()

Moving Dots ​

Moving Dots

python
class MovingDots(Scene):
    def construct(self):
        d1 = Dot(color=BLUE)
        d2 = Dot(color=GREEN)
        d2.shift(RIGHT * 3)
        
        self.add(d1, d2)
        self.play(d1.animate.shift(RIGHT * 3), d2.animate.shift(LEFT * 3))
        self.wait()

Point Moving on Shapes ​

Point Moving on Shapes

python
class PointMovingOnShapes(Scene):
    def construct(self):
        circle = Circle(radius=1, color=BLUE)
        dot = Dot()
        self.play(GrowFromCenter(circle))
        self.play(MoveAlongPath(dot, circle), run_time=2, rate_func=linear)
        self.wait()

Point with Trace ​

Point with Trace

python
class PointWithTrace(Scene):
    def construct(self):
        path = Circle(radius=2)
        dot = Dot(color=RED)
        dot.move_to(path.point_from_proportion(0))
        
        trace = TracedPath(dot.get_center, stroke_color=YELLOW)
        self.add(path, dot, trace)
        self.play(MoveAlongPath(dot, path), run_time=3, rate_func=linear)
        self.wait()

Moving Group to Destination ​

Moving Group

python
class MovingGroupToDestination(Scene):
    def construct(self):
        group = VGroup(Circle(), Square(), Triangle())
        group.arrange(RIGHT)
        
        self.add(group)
        self.play(group.animate.shift(UP * 2))
        self.wait()

Rotation ​

Different Rotations ​

Different Rotation Methods

python
class DifferentRotations(Scene):
    def construct(self):
        left_square = Square(color=BLUE, fill_opacity=0.7).shift(2 * LEFT)
        right_square = Square(color=GREEN, fill_opacity=0.7).shift(2 * RIGHT)
        self.play(
            left_square.animate.rotate(PI), 
            Rotate(right_square, angle=PI), 
            run_time=2
        )
        self.wait()

Example Rotation ​

Rotation Example

python
class ExampleRotation(Scene):
    def construct(self):
        square = Square()
        self.add(square)
        self.play(Rotate(square, PI/4))
        self.wait()

Rotation Updater ​

Rotation with Updater

python
class RotationUpdater(Scene):
    def construct(self):
        square = Square()
        square.add_updater(lambda m, dt: m.rotate(dt * PI / 2))
        self.add(square)
        self.wait(2)
        square.clear_updaters()
        self.wait()

Moving Angle ​

Moving Angle

python
class MovingAngle(Scene):
    def construct(self):
        line1 = Line(ORIGIN, RIGHT * 2)
        line2 = Line(ORIGIN, UP * 2)
        angle = Angle(line1, line2)
        
        self.add(line1, line2, angle)
        self.play(Rotate(line2, PI/4, about_point=ORIGIN))
        self.wait()

Styling ​

Mobject Styling ​

Mobject Styling

python
class MobjectStyling(Scene):
    def construct(self):
        circle = Circle()
        circle.set_fill(PINK, opacity=0.5)
        circle.set_stroke(color=GREEN, width=10)
        self.play(Create(circle))
        self.wait()

Mobject Placement ​

Mobject Placement

python
class MobjectPlacement(Scene):
    def construct(self):
        c = Circle()
        c.to_edge(UP)
        s = Square()
        s.next_to(c, DOWN)
        t = Triangle()
        t.to_corner(UR)
        
        self.add(c, s, t)
        self.wait()

Mobject Z-Order ​

Z-Order (Layering)

python
class MobjectZOrder(Scene):
    def construct(self):
        circle = Circle(fill_opacity=1, color=RED)
        square = Square(fill_opacity=1, color=BLUE).shift(RIGHT)
        
        self.add(circle, square)
        self.wait()
        self.bring_to_front(circle)
        self.wait()

Boolean Operations ​

Boolean Operations ​

Boolean Operations

python
class BooleanOperations(Scene):
    def construct(self):
        ellipse1 = Ellipse(
            width=4.0, height=5.0, fill_opacity=0.5, 
            color=BLUE, stroke_width=10
        ).move_to(LEFT)
        ellipse2 = ellipse1.copy().set_color(color=RED).move_to(RIGHT)
        
        self.play(FadeIn(ellipse1), FadeIn(ellipse2))
        i = Intersection(ellipse1, ellipse2, color=GREEN, fill_opacity=0.5)
        self.play(i.animate.scale(0.25).move_to(RIGHT * 5 + UP * 2.5))
        self.wait()

Graphs and Plots ​

Sin and Cos Function Plot ​

Sin and Cos Plot

python
class SinAndCosFunctionPlot(Scene):
    def construct(self):
        axes = Axes(x_range=[-10, 10], y_range=[-1.5, 1.5])
        sin_graph = axes.plot(lambda x: np.sin(x), color=BLUE)
        cos_graph = axes.plot(lambda x: np.cos(x), color=RED)
        
        self.play(Create(axes))
        self.play(Create(sin_graph), Create(cos_graph))
        self.wait()

Sine Curve Unit Circle ​

Sine Curve from Unit Circle

python
class SineCurveUnitCircle(Scene):
    def construct(self):
        circle = Circle(radius=1)
        axes = Axes(x_range=[0, 4*PI], y_range=[-2, 2])
        sine = axes.plot(lambda x: np.sin(x), color=BLUE)
        
        self.play(Create(circle), Create(axes))
        self.play(Create(sine))
        self.wait()

Graph Area Plot ​

Graph Area Plot

python
class GraphAreaPlot(Scene):
    def construct(self):
        axes = Axes(x_range=[0, 5], y_range=[0, 6])
        curve = axes.plot(lambda x: x**2, color=BLUE)
        area = axes.get_area(curve, x_range=[0, 2], color=BLUE, opacity=0.3)
        
        self.play(Create(axes), Create(curve))
        self.play(FadeIn(area))
        self.wait()

Polygon on Axes ​

Polygon on Axes

python
class PolygonOnAxes(Scene):
    def construct(self):
        axes = Axes(x_range=[-5, 5], y_range=[-5, 5])
        polygon = Polygon(
            axes.c2p(0, 0),
            axes.c2p(2, 0),
            axes.c2p(2, 2),
            axes.c2p(0, 2),
            color=BLUE, fill_opacity=0.5
        )
        
        self.play(Create(axes))
        self.play(Create(polygon))
        self.wait()

Heat Diagram Plot ​

Heat Diagram

python
class HeatDiagramPlot(Scene):
    def construct(self):
        # Create heat map visualization
        axes = Axes(x_range=[0, 10], y_range=[0, 10])
        # Add heat map data visualization
        self.play(Create(axes))
        self.wait()

3D Animations ​

3D Camera Rotation ​

3D Camera Rotation

python
class ThreeDCameraRotation(ThreeDScene):
    def construct(self):
        axes = ThreeDAxes()
        self.set_camera_orientation(phi=75 * DEGREES, theta=30 * DEGREES)
        self.add(axes)
        self.begin_ambient_camera_rotation(rate=0.1)
        self.wait(5)

3D Camera Illusion Rotation ​

3D Illusion Rotation

python
class ThreeDCameraIllusionRotation(ThreeDScene):
    def construct(self):
        axes = ThreeDAxes()
        cube = Cube()
        self.set_camera_orientation(phi=75 * DEGREES, theta=30 * DEGREES)
        self.add(axes, cube)
        self.move_camera(phi=135 * DEGREES, theta=45 * DEGREES, run_time=3)
        self.wait()

3D Surface Plot ​

3D Surface Plot

python
class ThreeDSurfacePlot(ThreeDScene):
    def construct(self):
        axes = ThreeDAxes()
        surface = Surface(
            lambda u, v: axes.c2p(u, v, np.sin(u) * np.cos(v)),
            u_range=[-3, 3],
            v_range=[-3, 3]
        )
        self.set_camera_orientation(phi=75 * DEGREES, theta=30 * DEGREES)
        self.add(axes, surface)
        self.wait()

3D Light Source Position ​

3D Light Source

python
class ThreeDLightSourcePosition(ThreeDScene):
    def construct(self):
        axes = ThreeDAxes()
        sphere = Sphere()
        self.set_camera_orientation(phi=75 * DEGREES, theta=30 * DEGREES)
        self.renderer.camera.light_source.move_to(3*IN)
        self.add(axes, sphere)
        self.wait()

Advanced Features ​

Counting Scene ​

Counting Animation

python
class CountingScene(Scene):
    def construct(self):
        number = DecimalNumber(0)
        number.add_updater(lambda m, dt: m.increment_value(dt))
        self.add(number)
        self.wait(5)

Run Time ​

Run Time Control

python
class RunTime(Scene):
    def construct(self):
        square = Square()
        self.play(Create(square), run_time=3)
        self.play(FadeOut(square), run_time=0.5)
        self.wait()

ArgMin Example ​

ArgMin Visualization

python
class ArgMinExample(Scene):
    def construct(self):
        axes = Axes(x_range=[-3, 3], y_range=[-1, 4])
        graph = axes.plot(lambda x: x**2, color=BLUE)
        dot = Dot(axes.c2p(0, 0), color=RED)
        
        self.play(Create(axes), Create(graph))
        self.play(FadeIn(dot))
        self.wait()

Brace Annotation ​

Brace Annotation

python
class BraceAnnotation(Scene):
    def construct(self):
        line = Line(LEFT * 2, RIGHT * 2)
        brace = Brace(line, UP)
        text = brace.get_text("Length")
        
        self.play(Create(line))
        self.play(GrowFromCenter(brace), Write(text))
        self.wait()

Vector Arrow ​

Vector Arrow

python
class VectorArrow(Scene):
    def construct(self):
        plane = NumberPlane()
        vector = Arrow(ORIGIN, RIGHT * 3 + UP * 2, buff=0, color=YELLOW)
        
        self.add(plane)
        self.play(GrowArrow(vector))
        self.wait()

Gradient Image from Array ​

Gradient Image

python
class GradientImageFromArray(Scene):
    def construct(self):
        # Create gradient array
        n = 256
        array = np.zeros((n, n, 3))
        for i in range(n):
            for j in range(n):
                array[i, j] = [i/n, j/n, 0.5]
        
        image = ImageMobject(array)
        self.play(FadeIn(image))
        self.wait()

Camera Features ​

Following Graph Camera ​

Camera Following Graph

python
class FollowingGraphCamera(Scene):
    def construct(self):
        axes = Axes()
        graph = axes.plot(lambda x: np.sin(x), color=BLUE)
        dot = Dot(axes.c2p(0, 0), color=RED)
        
        self.camera.frame.add_updater(lambda m: m.move_to(dot))
        self.add(axes, graph, dot)
        self.play(MoveAlongPath(dot, graph), run_time=5, rate_func=linear)

Moving Frame Box ​

Moving Frame Box

python
class MovingFrameBox(Scene):
    def construct(self):
        text = Text("Focus Here")
        box = SurroundingRectangle(text, color=YELLOW)
        
        self.play(Write(text))
        self.play(Create(box))
        self.play(box.animate.shift(RIGHT * 2))
        self.wait()

Moving Zoomed Scene Around ​

Zoomed Scene

python
class MovingZoomedSceneAround(Scene):
    def construct(self):
        dot = Dot()
        self.add(dot)
        self.camera.frame.save_state()
        self.play(self.camera.frame.animate.scale(0.5).move_to(dot))
        self.wait()
        self.play(Restore(self.camera.frame))

Fixed in Frame MObject Test ​

Fixed in Frame

python
class FixedInFrameMObjectTest(Scene):
    def construct(self):
        circle = Circle()
        text = Text("Fixed").fix_in_frame()
        
        self.add(circle, text)
        self.play(self.camera.frame.animate.shift(RIGHT * 2))
        self.wait()

Voiceover ​

Voiceover Example ​

Voiceover Integration

python
from fluxion_voiceover import VoiceoverScene

class VoiceoverExample(VoiceoverScene):
    def construct(self):
        with self.voiceover("Welcome to Fluxion!") as tracker:
            circle = Circle()
            self.play(Create(circle), run_time=tracker.duration)
        
        with self.voiceover("Watch it transform!") as tracker:
            square = Square()
            self.play(Transform(circle, square), run_time=tracker.duration)

Toy Example ​

Toy Example

python
class ToyExample(Scene):
    def construct(self):
        orange_square = Square(color=ORANGE, fill_opacity=0.5)
        blue_circle = Circle(color=BLUE, fill_opacity=0.5)
        
        self.play(Create(orange_square))
        self.play(Transform(orange_square, blue_circle))
        self.play(FadeOut(orange_square))

Browse by Category ​

More Resources ​

Released under the MIT License.

Support Fluxion Engine

If you find this project useful, please consider supporting its development.

Support Project