翼度科技»论坛 编程开发 python 查看内容

manim边做边学--圆锥

3

主题

3

帖子

9

积分

新手上路

Rank: 1

积分
9
Cone是Manim中专门用于创建和操控锥形几何对象的类。
Cone允许用户定义锥体的底面半径、高度、颜色、不透明度等属性,并提供了一系列方法来操控这个锥体,如移动、缩放、旋转等。
通过这些属性和方法,用户可以灵活地创建出符合自己需求的锥形对象,并将其融入到动画或演示中。
1. 主要参数

Cone的主要参数有:
参数名称类型说明base_radiusfloat圆锥底部的半径heightfloat圆锥的高度,也就是圆锥从底面中心到顶点的垂直距离directionnp.ndarray圆锥的朝向show_basebool是否显示圆锥的底面v_rangelist[float]圆锥纵向扫描的范围,用于控制圆锥侧面的纵向形状u_minfloat圆锥横向扫描的最小角度,影响圆锥侧面的横向分布checkerboard_colorsbool是否使用棋盘格颜色模式,有助于在视觉上区分圆锥的不同部分这些参数允许用户灵活地创建和自定义圆锥体对象。
例如,

  • 通过调整base_radius和height参数,可以改变圆锥的大小和形状;
  • 通过direction参数,可以控制圆锥的朝向;
  • 而show_base、v_range、u_min和checkerboard_colors参数则提供了对圆锥视觉表现的进一步定制。
2. 主要方法

Cone类有两个自己特有的改变方向的方法:
名称说明get_direction用于获取圆锥体的方向向量。这个方向向量通常是一个三维向量,表示圆锥体在空间中的朝向。set_direction用于设置圆锥体的方向向量。通过传入一个新的三维向量,可以改变圆锥体在空间中的朝向。3. 使用示例

下面的示例将展示如何创建圆锥体对象、设置其参数、以及调用其方法来改变圆锥体的属性或进行动画。
3.1. 基本的圆锥体

本示例展示了如何在Manim场景中创建一个基本的圆锥体。
圆锥体具有指定的底面半径和高度,并且默认方向朝上。
  1. # 创建一个底面半径为1,高度为2的圆锥体,
  2. # 方向朝上(默认方向)
  3. cone = Cone(base_radius=1, height=2)
复制代码

3.2. 自定义圆锥体

在此示例中,创建了一个圆锥体,并对其进行了自定义设置。
这包括设置圆锥体的填充颜色边框颜色边框宽度,以及将其移动到场景中的特定位置
这样,圆锥体不仅具有独特的外观,还位于用户指定的位置。
  1. # 创建一个底面半径为1.5,高度为3的圆锥体,
  2. # 设置填充颜色和边框颜色
  3. cone = Cone(
  4.     base_radius=1.5,
  5.     height=3,
  6.     fill_color=RED,
  7.     stroke_color=YELLOW,
  8.     stroke_width=2,
  9. )
  10. # 将圆锥体移动到场景中的特定位置
  11. cone.move_to(np.array([1, 1, 1]))
复制代码

3.3. 旋转和缩放

这个示例演示了如何为圆锥体添加动画效果。
首先,创建了一个圆锥体,并随后应用了两种动画:旋转和缩放。
圆锥体先绕y轴旋转了一定角度,然后按比例放大。
  1. # 创建一个底面半径为1,高度为2的圆锥体
  2. cone = Cone(
  3.     base_radius=1,
  4.     height=2,
  5.     fill_color=BLUE,
  6. )
  7. # 将圆锥体添加到场景中
  8. self.play(Create(cone))
  9. # 创建旋转动画,绕y轴旋转90度
  10. self.play(
  11.     Rotate(
  12.         cone,
  13.         axis=Y_AXIS,
  14.         angle=PI / 2,
  15.     ),
  16. )
  17. # 创建缩放动画,将圆锥体放大1.5倍
  18. self.play(cone.animate.scale(1.5))
复制代码

3.4. 复制和排列

此示例展示了如何复制圆锥体并将其排列成一行。
首先,创建了一个圆锥体作为模板,然后使用循环创建了多个该圆锥体的副本,并将它们稍微移动位置以排列成一行。
  1. # 创建一个底面半径为0.5,高度为1的圆锥体作为模板
  2. cone_tpl = Cone(
  3.     base_radius=0.5,
  4.     height=1,
  5.     fill_color=GREEN,
  6. )
  7. # 创建一个圆锥体数组,
  8. # 每个圆锥体都是模板的复制,并稍微移动位置
  9. cones = VGroup(
  10.     *[cone_tpl.copy().move_to([i, 0, 0]) for i in range(5)]
  11. )
  12. # 将圆锥体数组添加到场景中
  13. self.play(Create(cones))
  14. # 整个圆锥体数组一起移动
  15. self.play(cones.animate.shift(LEFT * 3))
复制代码

4. 附件

文中的代码只是关键部分的截取,完整的代码共享在网盘中(cone.py),
下载地址: 完整代码 (访问密码: 6872)

来源:https://www.cnblogs.com/wang_yb/p/18547304
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具