Manim Practice 1

Manim Practice 1

取材自以下视频中3:00处

[数学之美]看完你会爱上数学的~谨以此片致敬高质量科普工作者们(manim制作)

from manimlib.imports import *


class RedHeart(Scene):
    def construct(self):
    	self.add_sound("ManimPractice1BGMReflections.mp3")
        axes = Axes(x_min=-5, x_max=5, y_min=-3, y_max=4,
                    number_line_config={"unit_size": 1},
                    x_axis_config={"tick_frequency": 1})
        # 此处坐标上显示的是[-3,0][3,0][0,-3][0,3]
        axes.add_coordinates([-math.sqrt(8), math.sqrt(8)], [-math.sqrt(8), math.sqrt(8)])
        self.add(axes.get_axis_labels())
        self.play(Write(axes), Write(axes.axis_labels))
        heart_text = TextMobject(r"$f(x)=\left | x \right | ^{\frac{2}{3}}+0.9 \sqrt{8-x^{2}} \sin (\pi a x)$",
                                 color=YELLOW, font='Consolas').shift(DOWN * 3.5)
        self.play(Write(heart_text))
        heart_text.generate_target()
        heart_text.target.become(Text("I", color=YELLOW, font='Concolas')).shift(LEFT * 1.5)
        for a in {1, 3, 5, 7, 9, 11}:
            heart = ParametricFunction(
                lambda x: np.array([
                    x,
                    abs(x) ** (2 / 3) + 0.9 * math.sqrt(abs(8 - x ** 2)) * math.sin(PI * x * a),
                    0
                ]),
                t_min=-math.sqrt(8), t_max=math.sqrt(8)
            )
            a_text = Text("a = " + str(a), font='Concolas').shift(RIGHT * 4.5, UP * 3).scale(0.5)
            self.play(Write(a_text))
            self.play(ShowCreation(heart))
            if a != 11:
                self.play(FadeOut(heart), FadeOut(a_text))
            else:
                a_text.generate_target()
                a_text.target.become(Text("Manim...", font='Consolas')).shift(RIGHT * 3.375)
                self.play(FadeToColor(heart, RED), FadeOut(axes), FadeOut(axes.axis_labels))
                heart.generate_target()
                heart.target.become(Text("Love", color=RED, font='Consolas'))
                self.play(MoveToTarget(heart), MoveToTarget(heart_text), MoveToTarget(a_text))
                self.wait(2)

Result:

ManimPractice1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值