边学边做Manim中星形多边形

边学边做Manim中星形多边形
老刘博客在Manim 中的RegularPolygram中用于生成具有规则间距顶点的“广义正多边形”,例如星形、复合等边多边形等,其关键参数如下在下面会注意介绍。
1.概念与核心参数
1.1RegularPolygram
- num_vertices (int):顶点总数(必填)。
- density (int, 默认=2):步长,表示“每隔多少个顶点连一次线”。例如 density=2 常用于绘制五角星;当 density=1 时等价于正多边形。
- radius (float, 默认=1):外接圆半径,控制大小。
- start_angle (float 或 None, 默认=None):起始顶点相对 x 轴正向 的角度,用于旋转图形。
- kwargs:其他样式参数(如 color、fill_color、fill_opacity、stroke_width 等)。
1.2与相近类的区别:
- Polygon:由一组顶点顺序连线并闭合,顶点可任意。
- RegularPolygon:正 n 边形,顶点等距分布,无跳跃连接。
- Polygram:可传入多组顶点,形成多个子多边形或复合图形。
- RegularPolygram:顶点等距分布,但按 density 跳跃连接,能生成星形与复合等边图形。
2.常见用法与示例
下面我们来使用不同的参数,来制作不同的正多边形。
2.1基本五角星与七角星
我们先来看下面的代码
1 | from manim import * |
代码演示的视频效果
2.2从正多边形到星形
调整 density的参数来画出不同的代顶点的多边形
1 | from manim import * |
来看演示的效果
2.3旋转与样式
使用.rotate(PI/2参数来调整图形的旋转
1 | from manim import * |
下面来看视频效果
3.圆角星形
圆角星形的含义,就是星形的顶点不再是尖锐状,而是成一个圆弧状,就是柔化了顶点的尖角,来看代码
1 | from manim import * |
说明:
1 | round_corners(radius=数值) |
是 Polygram 提供的方法,RegularPolygram 继承后可直接使用,用于柔化尖角。
来看视频效果
4.density 取值与图形效果
- 规则:设 n=num_vertices、d=density,每次连接跳 d 个顶点,实际会生成 gcd(n, d) 个连通分支(组件)。
- 常见对应关系(以最小正整数为例):
- n=5
- d=1:正五边形(1 个组件)
- d=2:五角星(1 个组件)
- n=6
- d=1:正六边形(1 个组件)
- d=2:两条相交等边三角形(2 个组件)
- d=3:三对平行线段(3 个组件)
- n=8
- d=1:正八边形(1 个组件)
- d=2:八角星(1 个组件)
- d=3:两个正方形(2 个组件)
- d=4:四条直径(4 个组件)
- n=5
- 提示:若 d ≥ n/2,图形通常会退化为若干直径或线段;选择 d 与 n 互素时,通常会得到单一连通的星形。
5.实用建议
- 需要“空心轮廓”时,将 fill_opacity=0;需要“实心星形”时,设置 fill_color 与 fill_opacity>0。
- 调整朝向用 start_angle(如 start_angle=PI/2 让顶点朝上)。
- 需要更柔和外观时,使用 round_corners(radius=…) 控制圆角半径。
- 组合多个图形时,用 VGroup(…).arrange(…) 统一排版与间距。
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果





