从弧线生成多边形¶
限定名称: manim.mobject.geometry.arc.ArcPolygonFromArcs
- class ArcPolygonFromArcs(*arcs, **kwargs)[来源]¶
基础类:
VMobject一个允许点通过弧线连接的广义多边形。
此版本采用预定义的弧线来生成弧多边形,并引入了少量新语法。然而,与
Polygon不同,它不能直接用点创建。为了正确显示,传递的弧线应该无缝连接:
[a,b][b,c][c,a]如果弧线之间有任何间隙,这些间隙将用直线填充,可以故意用于任何直线部分。弧线也可以作为直线传递,例如用
angle=0初始化的弧线。- Parameters:
arcs (Arc | ArcBetweenPoints) – 这些是用于组装弧多边形的弧线。
kwargs – 传递给
VMobject构造函数的关键字参数。影响ArcPolygon本身的绘制方式,但不影响传递的弧线。
- 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条弧线连接这些点, 形成一个具有恒定宽度的形状。
传递的弧线作为子对象存储在arcpolygon中。 这意味着弧线会随着arcpolygon一起改变, 例如当它被移动时,并且这些弧线可以在arcpolygon初始化后被操作。
同样,包含在
ArcPolygonFromArcs中的弧线以及弧线多边形本身都会被绘制,这会影响例如在创建中的绘制时间。在大多数情况下,弧线本身不需要被绘制,在这种情况下,它们可以作为不可见传递。示例: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)arcpolygon 本身也可以被隐藏,这样只绘制包含的弧线。这可以用于轻松调试弧线或突出显示它们。
示例: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_overridescolordepthmobject的深度。
fill_color如果有多种颜色(用于渐变),则返回第一个颜色
heightmobject的高度。
n_points_per_curvesheen_factorstroke_colorwidthmobject的宽度。
- _original__init__(*arcs, **kwargs)¶
初始化自身。有关准确的签名,请参阅 help(type(self))。
- Parameters:
arcs (Arc | ArcBetweenPoints)
- Return type:
无