5.1 Arc
在Manim中,Arc(弧)是一种重要的Mobject,用于表示曲线形状,尤其是圆弧。Arc对象的主要功能是创建与数学和几何相关的视觉元素,使得动画中的概念更具表现力和直观性。
Arc通常由起始角度、终止角度和半径定义。这使得用户能够灵活地控制弧的形状和大小。例如,用户可以通过指定不同的角度范围来创建部分圆弧,或通过调整半径来改变弧的弯曲程度。这种灵活性使得Arc在表示各种数学概念时非常有用,比如在展示三角函数、圆的性质、以及与角度相关的几何题时。
from manim import *
class UsefulAnnotations(Scene):
def construct(self):
m0 = Dot()
m1 = AnnotationDot()
m2 = LabeledDot("ii")
m3 = LabeledDot(MathTex(r"\alpha").set_color(ORANGE))
m4 = CurvedArrow(2*LEFT, 2*RIGHT, radius= -5)
m5 = CurvedArrow(2*LEFT, 2*RIGHT, radius= 8)
m6 = CurvedDoubleArrow(ORIGIN, 2*RIGHT)
self.add(m0, m1, m2, m3, m4, m5, m6)
for i, mobj in enumerate(self.mobjects):
mobj.shift(DOWN * (i-3))
在动画中,Arc可以与其他Mobject结合使用,创造出丰富的视觉效果。例如,可以通过动画使得Arc逐渐展开,或是与其他图形(如直线、点)交互,帮助观众理解动态变化的过程。此外,Arc还可以用于构建更复杂的形状,如螺旋线或其他曲线图形,进一步增强了Manim在数学教育和演示方面的能力。
总之,Arc作为一种曲线Mobject,不仅在视觉上吸引观众,还在教育上帮助他们理解和掌握复杂的数学概念。通过简单的参数设置和动画效果,Arc能够有效地传达信息,是Manim中不可或缺的组成部分。
5.1.1.标注点(AnnotationDot)
具有较大半径和粗体笔触的点,用于注释场景。
class AnnotationDot(radius=0.10400000000000001, stroke_width=5,
stroke_color=ManimColor('#FFFFFF'),
fill_color=ManimColor('#58C4DD'), **kwargs)
实例代码:
from manim import *
class AnnotationDot2(Scene):
def construct(self):
self.camera.background_color =BLACK
#dot = AnnotationDot(radius=1, stroke_width=20, stroke_color=WHITE, fill_color=RED)
dot01 = AnnotationDot(radius=0.05, stroke_width=30, stroke_color=WHITE,fill_color=RED)
self.add(dot01)
#self.play(Create(dot))
self.wait(1)
运行结果:
参数:
-
半径(float):小点的半径,stroke_width (float):外圈的颜色
-
stroke_color("Manim的颜色"):外圈的颜色,fill_color ("Manim的颜色"):内圈的颜色
from manim import *
class AnnularSectorExample(Scene):
def construct(self):
self.camera.background_color = WHITE
axis.
s1 = AnnularSector(color=YELLOW).move_to(2 * UL)
s2 = AnnularSector(inner_radius=1.5, outer_radius=2, angle=45 * DEGREES, color=RED).move_to(2 * UR)
AnnularSector is transparent.
s3 = AnnularSector(inner_radius=1, outer_radius=1.5, angle=PI, fill_opacity=0.25, color=BLUE).move_to(2 * DL)
the start value.
s4 = AnnularSector(inner_radius=1, outer_radius=1.5, angle=-3 * PI / 2, color=GREEN).move_to(2 * DR)
se