You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Manim绘制由正方形组成的直角三角形?

修改Manim代码实现正方形直角三角形

原代码存在几个关键问题:

  • 循环内重复创建group,导致之前的正方形被丢弃,且i=0时group为空,访问group[i]直接报错
  • 未调用复制方法:copy = group[i].copy应该改为copy = group[i].copy()
  • 索引越界:group[i+1]不存在,当前group最多只有i个元素,索引最大为i-1
  • 整体逻辑错误,没有正确累积元素并构建三角形布局

以下是修改后的代码(以直角在左下角的三角形为例):

from manim import *

class SquareTriangle(Scene):
    def construct(self):
        total_blocks = VGroup()
        # 构建10行,第n行包含n个正方形
        for row_num in range(1, 11):
            # 创建当前行的正方形组,横向紧密排列
            row = VGroup(*[Square(side_length=1) for _ in range(row_num)]).arrange(RIGHT, buff=0)
            # 与上一行对齐并放置在下方
            if row_num > 1:
                row.next_to(total_blocks[-1], DOWN, buff=0)
                row.align_to(total_blocks[-1], LEFT)
            total_blocks.add(row)
        
        # 将整体移至屏幕中心
        total_blocks.move_to(ORIGIN)
        # 逐行淡入动画
        for row in total_blocks:
            self.play(FadeIn(row), run_time=0.3)
        self.wait()

如果需要直角在右上角的三角形,只需将对齐方式改为右对齐:

# 替换原对齐代码
row.align_to(total_blocks[-1], RIGHT)

关键修改说明:

  • 使用total_blocks作为总容器,逐步添加每行的正方形组,避免数据丢失
  • 用arrange方法快速完成每行正方形的横向排列
  • 通过next_to和align_to实现行与行的对齐,构建直角三角形结构
  • 采用逐行动画的方式,更清晰展示三角形的构建过程

内容的提问来源于stack exchange,提问作者Pulsar Plasma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 20:27:18