Manim教程:第五章 动画对象 ——【下】

时间:2024-10-31 06:58:48

 5.9.带标签的向量

LabeledArrow 通常在绘图库中用来绘制带标签的箭头。接下来我们看看实用代码段:

LabeledArrow(*args, **kwargs)[source]
*args 和 **kwargs 通常用于表示可变数量的位置参数和关键字参数。下面是对它们的解释:
  1. label (str | Tex | MathTex | Text):

    • 这个参数指定要显示在箭头(或线条)上的标签内容。支持多种格式,如字符串 (str),LaTeX 公式 (Tex 或 MathTex),或普通文本 (Text)。
  2. label_position (float | optional):

    • 这是一个可选参数,用于指定标签相对于线条长度的位置。它的值范围在 0 到 1 之间,其中 0 表示线条的起点位置,1 表示线条的终点位置。默认值是 0.5,即标签会被放置在线条的中间位置。
  3. font_size (float | optional):

    • 这个参数控制标签的字体大小。只有当标签是字符串类型时,这个参数才会生效。
  4. label_color (ParsableManimColor | optional):

    • 该参数用于设置标签文本的颜色。只有当标签是字符串类型时,这个参数才会被考虑。
  5. label_frame (Bool | optional):

    • 布尔值,可选参数。如果设置为 True,将为标签添加一个矩形框(SurroundingRectangle),用于突出显示标签。
  6. frame_fill_color (ParsableManimColor | optional):

    • 该参数用于指定标签框的背景颜色。如果未提供值,则使用画布的背景颜色。
  7. frame_fill_opacity (float | optional):

    • 这个参数控制标签框的透明度。值范围在 0 到 1 之间,0 表示完全透明(不可见),1 表示完全不透明(完全可见)。

        这些参数允许用户灵活地定制箭头或线条的标签外观,以便更好地传达信息或符合特定的视觉风格。在图形和动画制作中,良好的标签设置能够显著提升可读性和信息传达效果。

子1:

from manim import *

class LabeledArrowExample(Scene):
    def construct(self):
        l_arrow = LabeledArrow("0.5", start=LEFT*3, end=RIGHT*3 + UP*2, label_position=0.5)
        #解释:始点为(-3,0),终点为(3,2),标签位置在中间

        self.add(l_arrow)

运行结果:

 例2:

from manim import *  

class LabeledArrowExample02(Scene):  
    def construct(self):  
        tax = MathTex(r"\overrightarrow{a}",color=RED_A) 
        #a=NumberPlane()
        l_arrow = LabeledArrow(  
            start=[0, 0, 0],  
            end=[3, 2, 0],  buff=0,
            label=tax,  # 这里是用 label 参数传入标签  
            label_position=0.7,  
            label_color=BLUE_A,  
            label_frame=True,  
            frame_fill_color=BLUE_B,  
            frame_fill_opacity=1  
        )  
        # 解释:始点为(0,0),终点为(3,2),标签位置在起点的15%处  

        self.add(NumberPlane(),l_arrow)

 运行结果:

         这些参数允许用户灵活地定制箭头或线条的标签外观,以便更好地传达信息或符合特定的视觉风格。在图形和动画制作中,良好的标签设置能够显著提升可读性和信息传达效果。

5.10.带标签的线条【LabeledLine】

使用代码段:

LabeledLine(label, label_position=0.5, font_size=48, label_color=ManimColor('#FFFFFF'), label_frame=True, frame_fill_color=None, frame_fill_opacity=1, *args, **kwargs)

 基础在线条的的基础下进行绘制。

参数解释:
  1. label (str | Tex | MathTex | Text):

    • 这个参数指定要显示在箭头(或线条)上的标签内容。支持多种格式,如字符串 (str),LaTeX 公式 (Tex 或 MathTex),或普通文本 (Text)。
  2. label_position (float | optional):

    • 这是一个可选参数,用于指定标签相对于线条长度的位置。它的值范围在 0 到 1 之间,其中 0 表示线条的起点位置,1 表示线条的终点位置。默认值是 0.5,即标签会被放置在线条的中间位置。
  3. font_size (float | optional):

    • 这个参数控制标签的字体大小。只有当标签是字符串类型时,这个参数才会生效。
  4. label_color (ParsableManimColor | optional):

    • 该参数用于设置标签文本的颜色。只有当标签是字符串类型时,这个参数才会被考虑。
  5. label_frame (Bool | optional):

    • 布尔值,可选参数。如果设置为 True,将为标签添加一个矩形框(SurroundingRectangle),用于突出显示标签。
  6. frame_fill_color (ParsableManimColor | optional):

    • 该参数用于指定标签框的背景颜色。如果未提供值,则使用画布的背景颜色。
  7. frame_fill_opacity (float | optional):

    • 这个参数控制标签框的透明度。值范围在 0 到 1 之间,0 表示完全透明(不可见),1 表示完全不透明(完全可见)。

例子1:

class LabeledLineExample(Scene):
    def construct(self):
        line = LabeledLine(
            label          = '0.5',
            label_position = 0.8,
            font_size      = 20,
            label_color    = WHITE,
            label_frame    = True,

            start=LEFT+DOWN,
            end=RIGHT+UP)

        line.set_length(line.get_length() * 2)
        self.add(line)

运行结果:

5.11.夹角【Angle】

        这个类表示两个线条之间的角度,可以是圆弧或肘型的形式,用于表示角的视觉化。

代码的用法:

Angle(line1, line2, radius=None, quadrant=(1, 1), other_angle=False,
 dot=False, dot_radius=None, dot_distance=0.55, 
dot_color=ManimColor('#FFFFFF'), elbow=False, **kwargs)[source]

参数:

  1. line1:构成角的一条线,通常是一个Line对象。

  2. line2:构成角的另一条线,也是一个Line对象。

  3. radius(可选):定义角的弧线半径。如果未指定,默认使用其他参数确定的值。

  4. quadrant(可选):一个元组,表示角度所在的象限。它的默认值是 (1, 1),可能用于确定角的绘制位置。

  5. other_angle(可选):布尔值。如果为True,将展示与默认角的相对角(例如,获得补角)。

  6. dot(可选):布尔值。如果为True,表示在角的顶点处绘制一个点。

  7. dot_radius(可选):指定点的半径,当dot参数为True时,将使用此值来定义点的大小。