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))。

参数:
返回类型: