ArcPolygonFromArcs¶
完整名称: manim.mobject.geometry.arc.ArcPolygonFromArcs
- 类 ArcPolygonFromArcs(*arcs, **kwargs)[source]¶
基类:
VMobject
一种广义多边形,允许点之间用弧线连接。
此版本接受预定义的弧来生成弧多边形,并引入了少量新语法。然而,与
Polygon
不同的是,它不能直接通过点创建。为了获得正确的外观,传入的弧应该无缝连接:
[a,b][b,c][c,a]
如果弧之间有任何间隙,这些间隙将用直线填充,这可以有意地用于任何直线部分。弧也可以作为直线传入,例如使用
angle=0
初始化的弧。- 参数:
arcs (Arc | ArcBetweenPoints) – 这些是用于组装弧多边形的弧。
kwargs (任意) – 传递给
VMobject
构造函数的关键字参数。影响弧多边形本身的绘制方式,但不影响传入的弧。
- arcs¶
用于初始化 ArcPolygonFromArcs 的弧
>>> from manim import ArcPolygonFromArcs, Arc, ArcBetweenPoints >>> ap = ArcPolygonFromArcs(Arc(), ArcBetweenPoints([1,0,0], [0,1,0]), Arc()) >>> ap.arcs [Arc, ArcBetweenPoints, Arc]
提示
两个
ArcPolygon
实例也可以正确地相互转换。请注意,任何用angle=0
初始化的弧实际上会是一条直线,因此,如果一个直线部分需要无缝地转换为一个弧形部分,反之亦然,请将直线部分初始化为可忽略的角度(例如angle=0.0001
)。注意
有一个替代版本(
ArcPolygon
),可以使用点来实例化。另请参阅
示例
弧多边形的一个例子是勒洛三角形。勒洛三角形不是用3条直线连接外部点,而是用3条弧连接这些点,形成一个等宽的形状。
传入的弧在弧多边形中作为子对象存储。这意味着弧会随着弧多边形的变化而变化,例如当弧多边形被移动时,并且这些弧可以在弧多边形初始化后进行操作。
此外,
ArcPolygonFromArcs
中包含的弧以及弧多边形本身都会被绘制,例如这会影响在Create
中的绘制时间。在大多数情况下,弧本身不需要绘制,在这种情况下,它们可以作为不可见的传入。示例: ArcPolygonExample ¶
from manim import * class ArcPolygonExample(Scene): def construct(self): arc_conf = {"stroke_width": 0} poly_conf = {"stroke_width": 10, "stroke_color": BLUE, "fill_opacity": 1, "color": PURPLE} a = [-1, 0, 0] b = [1, 0, 0] c = [0, np.sqrt(3), 0] arc0 = ArcBetweenPoints(a, b, radius=2, **arc_conf) arc1 = ArcBetweenPoints(b, c, radius=2, **arc_conf) arc2 = ArcBetweenPoints(c, a, radius=2, **arc_conf) reuleaux_tri = ArcPolygonFromArcs(arc0, arc1, arc2, **poly_conf) self.play(FadeIn(reuleaux_tri)) self.wait(2)
class ArcPolygonExample(Scene): def construct(self): arc_conf = {"stroke_width": 0} poly_conf = {"stroke_width": 10, "stroke_color": BLUE, "fill_opacity": 1, "color": PURPLE} a = [-1, 0, 0] b = [1, 0, 0] c = [0, np.sqrt(3), 0] arc0 = ArcBetweenPoints(a, b, radius=2, **arc_conf) arc1 = ArcBetweenPoints(b, c, radius=2, **arc_conf) arc2 = ArcBetweenPoints(c, a, radius=2, **arc_conf) reuleaux_tri = ArcPolygonFromArcs(arc0, arc1, arc2, **poly_conf) self.play(FadeIn(reuleaux_tri)) self.wait(2)
弧多边形本身也可以被隐藏,这样只绘制其中包含的弧。这可以用于轻松调试弧或突出显示它们。
示例: ArcPolygonExample2 ¶
from manim import * class ArcPolygonExample2(Scene): def construct(self): arc_conf = {"stroke_width": 3, "stroke_color": BLUE, "fill_opacity": 0.5, "color": GREEN} poly_conf = {"color": None} a = [-1, 0, 0] b = [1, 0, 0] c = [0, np.sqrt(3), 0] arc0 = ArcBetweenPoints(a, b, radius=2, **arc_conf) arc1 = ArcBetweenPoints(b, c, radius=2, **arc_conf) arc2 = ArcBetweenPoints(c, a, radius=2, stroke_color=RED) reuleaux_tri = ArcPolygonFromArcs(arc0, arc1, arc2, **poly_conf) self.play(FadeIn(reuleaux_tri)) self.wait(2)
class ArcPolygonExample2(Scene): def construct(self): arc_conf = {"stroke_width": 3, "stroke_color": BLUE, "fill_opacity": 0.5, "color": GREEN} poly_conf = {"color": None} a = [-1, 0, 0] b = [1, 0, 0] c = [0, np.sqrt(3), 0] arc0 = ArcBetweenPoints(a, b, radius=2, **arc_conf) arc1 = ArcBetweenPoints(b, c, radius=2, **arc_conf) arc2 = ArcBetweenPoints(c, a, radius=2, stroke_color=RED) reuleaux_tri = ArcPolygonFromArcs(arc0, arc1, arc2, **poly_conf) self.play(FadeIn(reuleaux_tri)) self.wait(2)
方法
属性
animate (动画)
用于动画化
self
的任何方法的应用。animation_overrides (动画覆盖)
颜色
depth (深度)
mobject 的深度。
fill_color (填充颜色)
如果存在多种颜色(用于渐变),则返回第一种颜色
height (高度)
mobject 的高度。
n_points_per_curve (每条曲线的点数)
sheen_factor (光泽因子)
stroke_color (描边颜色)
width (宽度)
mobject 的宽度。
- _original__init__(*arcs, **kwargs)¶
初始化自身。有关准确签名,请参阅 help(type(self))。
- 参数:
arcs (Arc | ArcBetweenPoints)
kwargs (任意)
- 返回类型:
无