用Manim实现【多边形】类的实现——[下]

用Manim实现【多边形】类的实现——[下]        

        Polygram内容是关于不同几何图形的分类,特别是涉及多边形(Polygon)及其扩展形式,比如多图形(Polygram)。在manim中有10中特征,接下来介绍剩余的5种类及其特征的解释:

6.RegularPolygram

具有规则间距顶点的多图形。它的边均匀分布,形成对称的形状。它的构造函数如下:

RegularPolygram(num_vertices, *, density=2, radius=1, start_angle=None, **kwargs)

RegularPolygram 是一个用于创建正多边形图形的函数,通常在图形处理或计算几何相关的库中使用。以下是对该函数及其参数的详细解释:

函数:RegularPolygram(num_vertices, *, density=2, radius=1, start_angle=None, **kwargs)

参数说明:
  • num_vertices:

    • 类型: 整数
    • 描述: 指定多边形的顶点数量,即正多边形的边数。这个参数是必需的。
  • density:

    • 类型: 整数,默认值为 2
    • 描述: 指定绘制多边形的密度。通常用于绘制星形多边形(例如,五角星),表示每隔多少个顶点连接一个线段。density=2 表示连接每隔一个顶点,density=3 表示连接每隔两个顶点,依此类推。
  • radius:

    • 类型: 浮点数,默认值为 1
    • 描述: 多边形的半径,决定了多边形的大小。如果你想要更大的多边形,可以增加这个参数的值。
  • start_angle:

    • 类型: 浮点数或 None,默认值为 None
    • 描述: 多边形的起始角度。通常用于旋转多边形的起始位置。如果设置为 None,通常意味着默认从某个标准位置开始(如正右方)。
  • kwargs:

    • 描述: 其他关键字参数,可以用于传递额外的自定义选项,这些选项可能与图形的绘制样式、颜色、线条宽度等相关。

 示例1:

from manim import *  

class RegularPolygramExample01(Scene):
    def construct(self):
        pentagram = RegularPolygram(5,density=2, radius=2.8)
        pentagram.set_fill(RED,opacity=1)  # 填充颜色为黄色,透明度为0.5  
        pentagram2 = RegularPolygram(7, radius=1.8)
        pentagram2.set_fill(PINK,opacity=0.8)  # 填充颜色为黄色,透明度为0.5  
        pentagram3 = RegularPolygram(3, radius=1)
        pentagram3.set_fill(GOLD,opacity=1)  # 填充颜色为黄色,透明度为0.5  
        
        gv=VGroup(pentagram,pentagram2,pentagram3).arrange(buff=1)
        self.add(gv)

运行结果:

 7.RoundedRectangle

带有圆角的矩形。角部不是尖锐的,而是圆滑的。

RoundedRectangle 是一个用于创建带圆角的矩形的函数,通常用于图形处理、用户界面设计或绘图相关的库中。以下是对该函数及其参数的详细解释:

函数:RoundedRectangle(corner_radius=0.5, **kwargs)

参数说明:
  • corner_radius:
    • 类型: 浮点数,默认值为 0.5
    • 描述: 指定矩形角落的圆角半径。这个值决定了矩形的角落是多么圆润。如果设置为 0,则形成普通的矩形;设置为更大的值,落会变得更加圆滑。通常,圆角半径的值应小于或等于矩形的一半宽度和高度,以避免不形状- kwargs:
      描述: 其他关键参数,可以传递额外的自定义选项,这些项可能与形的绘制样式、颜色、框、填充相关。具体的可用参数取决于使用的图形库。

示例1. 

class RoundedRectangleExample(Scene):
    def construct(self):
        rect_0 = RoundedRectangle(corner_radius=0,color=GOLD_E).shift(2*UP,LEFT*2)
        rect_1 = RoundedRectangle(corner_radius=0.5,color=GOLD_B)
        
        rect_2 = RoundedRectangle(corner_radius=1.5, height=4.0, width=4.0,color=RED)
        rect_1.set_fill(GOLD,opacity=1)  # 填充颜色为黄色,透明度为0.5  

        rect_group = Group(rect_1, rect_2).arrange(buff=1).shift(DOWN)
        self.add(rect_group,rect_0)

运行结果: 

 8.Square

 一种矩形,具有相等的边长。每个角都是90度,所有边都相等。

Square 是一个用于创建正方形的函数,通常在图形处理、用户界面设计或绘图库中使用。以下是对函数及其参数的详细解释:

函数:Square(side_length=2.0, **kwargs)

参数说明:
  • side_length:

    • 类型: 浮点数,默认值为 2.0
    • 描述: 指定正方形的边长。这个参数是必需的,决定了正方形的大小。如果设置为更大的值,正方形的尺寸会相应增大。
  • kwargs:

    • 描述: 其他关键字参数,用于传递额外的自定义选项。这些选项可能与正方形的绘制样式、颜色、边框、填充等属性相关。具体的可用参数取决于所使用的图形库或框架。

 示例1:

from manim import *

class SquareExample(Scene):
    def construct(self):
        square_1 = Square(side_length=2.0).shift(DOWN)
        square_2 = Square(side_length=1.0).next_to(square_1, direction=UP)
        square_3 = Square(side_length=0.5).next_to(square_2, direction=UP)
        self.add(square_1, square_2, square_3)

运行结果: 

 9.Star

一个规则的多图形,但没有相互交叉的线条。也就是说,星形的尖角和凹角均匀分布,但不会形成交错的线。

Star 是一个用于创建星形图形的函数,通常用于图形处理、计算几何或者绘制相关的库中。以下是对该函数及其参数的详细解释:

函数:Star(n=5, *, outer_radius=1, inner_radius=None, density=2, start_angle=1.5707963267948966, **kwargs)

参数说明:
  • n:

    • 类型: 整数,默认值为 5
    • 描述: 指定星形的顶点数量。这个参数决定了星的“点”的数量,通常是奇数(如 5、7、9 等)以形成对称的星形。
  • outer_radius:

    • 类型: 浮点数,默认值为 1
    • 描述: 星形的外半径,决定了星形每个尖角的距离中心的距离。这个值越大,星形越大。
  • inner_radius:

    • 类型: 浮点数或 None,默认值为 None
    • 描述: 星形的内半径,决定了星形的凹陷部分的深度。这是从星形中心到每个凹陷部分的距离。如果设置为 None,通常意味着使用一个默认值,通常是 outer_radius 的一部分(如 outer_radius / 2)。
  • density:

    • 类型: 整数,默认值为 2
    • 描述: 指定绘制星形的密度。在星形的顶点之间,有多少个点被连接。density=2 表示每隔一个顶点连接一个点,形成一个星形;density=3 表示每隔两个顶点连接一个点,形成更复杂的图案。
  • **start_angle:

    • 类型: 浮点数,默认值为 1.5707963267948966(约等于 π/2)
      -描述**: 星形的起始角度,通常以弧度表示。这个参数决定了星形的旋转位置。例如,start_angle=0 表示从右侧开始绘制,start_angle=π/2 表示从顶部开始绘制。
  • kwargs:

    • 描述: 其他关键字参数,可以用于传递额外的自定义选项,这些选项可能与星形的绘制样式、颜色、边框、填充等相关。具体的可用参数取决于所使用的图形库。

示例1:

from manim import *

class StarExample(Scene):
    def construct(self):
        pentagram = RegularPolygram(5, radius=2)
        star = Star(outer_radius=2, color=RED)

        self.add(pentagram)
        self.play(Create(star), run_time=3)
        self.play(FadeOut(star), run_time=2)

运行结果: 

示例2: 

from manim import *

class DifferentDensitiesExample(Scene):
    def construct(self):
        density_2 = Star(7, outer_radius=2, density=2, color=RED)
        density_3 = Star(7, outer_radius=2, density=3, color=PURPLE)

        self.add(VGroup(density_2, density_3).arrange(RIGHT))

 运行结果:

10. Triangle

一种等边三角形,所有的边长和角度都是相等的。

Triangle 是一个用于创建三角形的函数,通常用于图形处理、计算几何或绘图库中。以下是对该函数及其参数的详细解释:

函数:Triangle(**kwargs)

参数说明:

Triangle 函数通常会采用关键字参数(**kwargs),这意味着可以传递多个自定义选项来定义三角形的属性。具体的可用参数可能因所使用的图形库而异,但常见的参数包括:

  1. vertices:

    • 类型: 列表或元组
    • 描述: 定义三角形的三个顶点。通常以 (x1, y1), (x2, y2), (x3, y3) 的形式传递,表示三角形的三个角的坐标。
  2. fill_color:

    • 类型: 字符串(颜色名称或十六进制颜色代码)
    • 描述: 指定三角形的填充颜色。例如,可以使用 'red''blue' 或 '#FF5733' 等。
  3. border_color:

    • 类型: 字符串(颜色名称或十六进制颜色代码)
    • 描述: 指定三角形边框的颜色。
  4. border_width:

    • 类型: 浮点数或整数
    • 描述: 设置三角形边框的宽度,以像素为单位。
  5. opacity:

    • 类型: 浮点数,通常在 0 到 1 之间
    • 描述: 设置三角形的透明度,0 表示完全透明,1 表示完全不透明。
  6. position:

    • 类型: 列表或元组
    • 描述: 指定三角形的绘制位置,可能以 (x, y) 的形式传递,表示三角形的起始点。
  7. rotation:

    • 类型: 浮点数
    • 描述: 指定三角形的旋转角度,以弧度或度为单位。

使用示例:

下面是一个创建三角形的示例,结合了多种 kwargs 的用法:

from manim import *

class TriangleExample(Scene):
    def construct(self):
        triangle_1 = Triangle()
        triangle_2 = Triangle().scale(2).rotate(60*DEGREES)
        tri_group = Group(triangle_1, triangle_2).arrange(buff=1)
        self.add(tri_group)

 解释代码:

1. 导入 Manim
from manim import *

      
  • 这一行导入了 Manim 库的所有功能,使你可以使用 Manim 中的各种类和函数。
2. 定义场景
class TriangleExample(Scene):

      
  • TriangleExample 是一个继承自 Scene 的类,表示一个新的动画场景。Manim 中的每个动画场景都应该在一个类中定义,并且必须继承自 Scene
3. 构建方法
def construct(self):

      
  • construct 是 Manim 中的一个特殊方法,当场景被渲染时会自动调用。在这个方法中,你可以定义要在场景中绘制的对象。
4. 创建三角形
triangle_1 = Triangle()

      
  • 这一行创建了第一个三角形 triangle_1。在 Manim 中,Triangle 函数默认创建一个边长为 1 的三角形。
triangle_2 = Triangle().scale(2).rotate(60 * DEGREES)

      
  • 这一行创建了第二个三角 triangle_2。它首先创建一个默认的三角形,然后通过 scale2 方法其大小放大到原来的两倍,再通过 rotate(60 * DEGREES) 方法将其旋转 60 度。注意,DEGREES` 是 Manim 提供的常量,用于将角度转换为弧度。
5. 组合三角形
tri_group = Group(triangle_1, triangle_2).arrange(buff=1)

      
  • 这一行创建了一个包含 triangle_1 和 triangle_2 的组合对象 tri_group``Group 是 Manim用于将多个组合在一起的类。arrange(buff1) 方法会将组合中的对象排列在一起,buff=1 指了对象之间的间隔为 个单位。
6. 添加到场景
self.add(tr_group)

      
  • 这一行将组合三角形 tri_group 添加到当前场景中,以便在渲染显示出来。

运行结果:

总结

这个代码片段的目的是在 Manim 中一个包含两个三角形的场景。第一个三角形是默认大小,第二个三角形是放大后的版本,并旋转了 60 度。两个三角形被组合在一起并在一起展示。

运行结果: 

  • 21
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yasen.M

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值