测试据说赶超claude的deepseek新版本

听说国产AI之光deepseek非常低调地发布了一个小升级,结果就引爆了网上的AI话题,原来这个小升级的AI编程水平达到甚至可能超过了AI编程的王者claude 3.7。AI编程也是我比较感兴趣的领域,之前也试过用AI编程制作教学动画视频。发现claude绝对是最好用的,无论是在理解人类的意图,还是最终编码出的结果可用性,不报错方面都是无与伦比的。这次deepseek3.1升级出来后,也来试试它的编程做动画的能力。结果确实做成功了。至少这方面可以和claude一较高下。

我的题目是让deepseek生成讲解圆面积的推导过程。虽然不是一次成功的,经过了几轮对话反馈了一些错误和问题。就得到下面这个动画了,效果非常棒。
下载.gif

下面是最终生成的代码:

%%manim -qm -v WARNING CircleAreaProof

class CircleAreaProof(Scene):
    def construct(self):
        # 1. 初始化圆和标记半径
        circle = Circle(radius=2, color=WHITE)
        radius_line = Line(circle.get_center(), circle.get_right(), color=YELLOW)
        radius_label = MathTex("r", color=YELLOW).next_to(radius_line, UP)

        self.play(Create(circle), Create(radius_line), Write(radius_label))
        self.wait(1)

        # 2. 将圆分割成多个扇形(以16份为例)
        num_sectors = 16
        sectors = VGroup()
        colors = [BLUE, GREEN]  # 交替颜色
        angle_step = 2 * PI / num_sectors

        for i in range(num_sectors):
            sector = Sector(
                radius=2,  # 关键修改:使用 radius 而不是 outer_radius
                angle=angle_step,
                start_angle=i * angle_step,
                fill_color=colors[i % 2],
                fill_opacity=0.6,
                stroke_color=WHITE
            )
            sectors.add(sector)

        self.play(FadeOut(radius_line), FadeOut(radius_label))
        self.play(DrawBorderThenFill(sectors), run_time=2)
        self.wait(1)

       # 3. 展开扇形(分步旋转+平移)
        group1 = VGroup(*[sectors[i] for i in range(0, num_sectors, 2)])  # 奇数索引
        group2 = VGroup(*[sectors[i] for i in range(1, num_sectors, 2)])  # 偶数索引

        # 预计算旋转和位移目标
        for i, sector in enumerate(group1):
            start_angle = i * 2 * angle_step
            sector.target_angle = -PI/2 - start_angle  # 逆时针旋转到向右
            sector.target_pos = LEFT * 3 + RIGHT * i * angle_step * 2  # 水平排列

        for i, sector in enumerate(group2):
            start_angle = (i * 2 + 1) * angle_step
            sector.target_angle = PI/2 - start_angle  # 顺时针旋转到向左
            sector.target_pos = LEFT * 3 + RIGHT * i * angle_step * 2 + DOWN * 2  # 下方排列

        # 第一步:旋转所有扇形
        self.play(
            *[Rotate(sector, angle=sector.target_angle, about_point=ORIGIN) for sector in group1],
            *[Rotate(sector, angle=sector.target_angle, about_point=ORIGIN) for sector in group2],
            run_time=2
        )
        self.wait(0.5)

        # 第二步:平移所有扇形
        self.play(
            *[sector.animate.move_to(sector.target_pos) for sector in group1],
            *[sector.animate.move_to(sector.target_pos) for sector in group2],
            run_time=2
        )
        self.wait(1)



        # 4. 拼接成矩形
        self.play(
            group2.animate.shift(UP * 2.2),  # 将绿色组上移
            run_time=2
        )
        self.wait(1)

        # 5. 显示矩形的高和长
        height_line = DashedLine(
            group1[0].get_bottom(), group2[0].get_top(), color=YELLOW
        )
        height_label = MathTex("r", color=YELLOW).next_to(height_line, RIGHT)

        length_line = DashedLine(
            group1[0].get_left(), group1[-1].get_right(), color=YELLOW
        )
        length_label = MathTex(r"\pi r", color=YELLOW).next_to(length_line, DOWN)

        self.play(
            Create(height_line), Write(height_label),
            Create(length_line), Write(length_label),
            run_time=1.5
        )
        self.wait(1)

        # 6. 推导面积公式
        formula = MathTex(
            r"\text{Area} = \pi r \times r = \pi r^2",  # 使用英文
            color=BLUE
        ).to_edge(UP)


        self.play(Write(formula), run_time=2)
        self.wait(2)