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

manim边学边做--三维的点和线

4

主题

4

帖子

12

积分

新手上路

Rank: 1

积分
12
Manim 提供了一系列专为三维空间设计的对象,让创建三维数学动画变得更加轻松。
本篇开始介绍其中最简单的点和线相关对象,也就是Dot3D(三维的点),Line3D(三维的线)和Arrow3D(三维的箭头)。

  • Dot3D用于表示三维空间中的点,是构建其他复杂三维图形的基础,它适用于标记关键点、位置、向量起点等。
  • Line3D用于在三维空间中绘制线段,可以表示向量、路径、轨迹等。它适用于展示物体的运动轨迹、力的方向等。
  • Arrow3D在Line3D的基础上添加了箭头,用于明确表示方向性的线段。它适用于表示矢量、力的方向、速度等。
1. 主要参数

Dot3D的主要参数:
参数名称类型说明pointnp.ndarray点的位置,包含 x,y,z 3个值radiusfloat点的半径colorColor点的颜色resolutiontuple[int, int]点的分辨率Dot3D本质上是个球形,所以有radius参数,控制点的大小;
resolution参数设置的是点这个球形的分辨率,值越大,点看上去越圆滑,一般不需要设置这个参数,默认值就可以了。
Line3D的主要参数:
参数名称类型说明startnp.ndarray线段的起点坐标,包含 x,y,z 3个值endnp.ndarray线段的终点坐标,包含 x,y,z 3个值thicknessfloat线段的粗细colorColor线段的颜色Arrow3D的主要参数:
参数名称类型说明startnp.ndarray箭头的起点坐标,包含 x,y,z 3个值endnp.ndarray箭头的终点坐标,包含 x,y,z 3个值thicknessfloat箭头主体的粗细heightfloat箭头尖部的高度base_radiusfloat箭头尖部的底部半径colorColor箭头的颜色2. 主要方法

Dot3D和Arrow3D没有什么特殊的方法,就是一些Manim对象常规的缩放,平移等方法。
但是,Line3D有几个自己特有的方法。
名称说明parallel_to创建一条与给定线段平行的线段perpendicular_to创建一条与给定线段垂直的线段pointify获取表示对象中心的点3. 使用示例

最后,还是通过示例来演示上面几个对象的重要参数和方法。
3.1. Dot3D的位置和颜色

在这个示例中,我们将创建个Dot3D对象。
第一个点具有默认的半径和颜色;而第二个点,我们将自定义其半径和颜色。
通过调整这些参数,我们可以清晰地看到两个点在三维空间中的位置和颜色差异。
  1. # 使用默认参数
  2. dot1 = Dot3D(point=axes.c2p(1, 2, 3))
  3. # 自定义半径和颜色
  4. dot2 = Dot3D(
  5.     point=axes.c2p(2, 3, -1),
  6.     radius=0.2,
  7.     color=RED,
  8. )
复制代码

3.2. Line3D的长度和方向

此示例将展示如何使用Line3D对象在三维空间中绘制一条线段。
首先根据起点和终点设置一个线段,同时,调整线段的粗细和颜色来使其更加醒目。
然后,通过函数parallel_to和perpendicular_to分别绘制此线段的平行线(黄色)和垂线(红色)。
  1. # 指定起点和终点 以及线段粗细
  2. line = Line3D(
  3.     start=LEFT + DOWN * 2 + IN,
  4.     end=RIGHT + UP * 2 + OUT * 2,
  5.     thickness=0.02,
  6.     color=BLUE,
  7. )
  8. # 绘制line的平行线
  9. Line3D.parallel_to(line, color=YELLOW)
  10. # 绘制line的垂线
  11. Line3D.perpendicular_to(line, color=RED)
复制代码

3.3. Arrow3D的方向和样式

在这个示例中,我们使用Arrow3D对象来表示一个带箭头的线段,以强调方向性。
首先设置箭头的起点和终点,为了突出箭头,
再调整其粗细(thickness参数)、箭头尖部的高度(height参数)和底部半径(base_radius参数)。
  1. # 指定起点和终点 以及箭头样式参数
  2. arrow = Arrow3D(
  3.     start=[-1, -1, -2],
  4.     end=[1, 2, 2],
  5.     thickness=0.05,
  6.     height=0.2,
  7.     base_radius=0.1,
  8.     color=GREEN,
  9. )
复制代码

3.4. 综合使用Dot3D, Line3D和Arrow3D

在这个综合示例中,我们结合使用Dot3D、Line3D和Arrow3D来创建一个更复杂的三维场景。
首先,在场景中放置一个Dot3D对象作为起点。
然后,我们将使用Line3D对象从该点绘制一条线段到另一个位置,表示路径或轨迹。
最后,我们将在线段的终点处添加一个Arrow3D对象。
通过调整这些对象的参数(如位置、颜色、粗细等),可以创建一个既清晰又富有表现力的三维图形,用于演示、教学或科学研究等多种目的。
  1. # 创建Dot3D对象作为起点
  2. dot = Dot3D(point=[-1, -1, -1], color=BLUE)
  3. # 创建Line3D对象连接起点和另一个点
  4. line = Line3D(
  5.     start=[-1, -1, -1],
  6.     end=[2, 2, 2],
  7.     thickness=0.05,
  8.     color=YELLOW,
  9. )
  10. # 创建Arrow3D对象在终点处指示方向
  11. arrow = Arrow3D(
  12.     start=[2, 2, 2],
  13.     end=[1, 2, -1],
  14.     thickness=0.05,
  15.     height=0.2,
  16.     base_radius=0.1,
  17.     color=RED,
  18. )
复制代码

4. 附件

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

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

本帖子中包含更多资源

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

x

举报 回复 使用道具