从弧线生成多边形

限定名称: 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)可以使用点进行实例化。

另请参阅

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_overrides

color

depth

mobject的深度。

fill_color

如果有多种颜色(用于渐变),则返回第一个颜色

height

mobject的高度。

n_points_per_curve

sheen_factor

stroke_color

width

mobject的宽度。

_original__init__(*arcs, **kwargs)

初始化自身。有关准确的签名,请参阅 help(type(self))。

Parameters:

arcs (Arc | ArcBetweenPoints)

Return type: