首页 > Python资料 博客日记
manim边学边做--三维的点和线
2024-11-06 10:00:03Python资料围观69次
Manim
提供了一系列专为三维空间设计的对象,让创建三维数学动画变得更加轻松。
本篇开始介绍其中最简单的点和线相关对象,也就是Dot3D
(三维的点),Line3D
(三维的线)和Arrow3D
(三维的箭头)。
Dot3D
用于表示三维空间中的点,是构建其他复杂三维图形的基础,它适用于标记关键点、位置、向量起点等。Line3D
用于在三维空间中绘制线段,可以表示向量、路径、轨迹等。它适用于展示物体的运动轨迹、力的方向等。Arrow3D
在Line3D
的基础上添加了箭头,用于明确表示方向性的线段。它适用于表示矢量、力的方向、速度等。
1. 主要参数
Dot3D
的主要参数:
参数名称 | 类型 | 说明 |
---|---|---|
point | np.ndarray | 点的位置,包含 x,y,z 3个值 |
radius | float | 点的半径 |
color | Color | 点的颜色 |
resolution | tuple[int, int] | 点的分辨率 |
Dot3D
本质上是个球形,所以有radius
参数,控制点的大小;
resolution
参数设置的是点这个球形的分辨率,值越大,点看上去越圆滑,一般不需要设置这个参数,默认值就可以了。
Line3D
的主要参数:
参数名称 | 类型 | 说明 |
---|---|---|
start | np.ndarray | 线段的起点坐标,包含 x,y,z 3个值 |
end | np.ndarray | 线段的终点坐标,包含 x,y,z 3个值 |
thickness | float | 线段的粗细 |
color | Color | 线段的颜色 |
Arrow3D
的主要参数:
参数名称 | 类型 | 说明 |
---|---|---|
start | np.ndarray | 箭头的起点坐标,包含 x,y,z 3个值 |
end | np.ndarray | 箭头的终点坐标,包含 x,y,z 3个值 |
thickness | float | 箭头主体的粗细 |
height | float | 箭头尖部的高度 |
base_radius | float | 箭头尖部的底部半径 |
color | Color | 箭头的颜色 |
2. 主要方法
Dot3D
和Arrow3D
没有什么特殊的方法,就是一些Manim对象常规的缩放,平移等方法。
但是,Line3D
有几个自己特有的方法。
名称 | 说明 |
---|---|
parallel_to | 创建一条与给定线段平行的线段 |
perpendicular_to | 创建一条与给定线段垂直的线段 |
pointify | 获取表示对象中心的点 |
3. 使用示例
最后,还是通过示例来演示上面几个对象的重要参数和方法。
3.1. Dot3D的位置和颜色
在这个示例中,我们将创建个Dot3D
对象。
第一个点具有默认的半径和颜色;而第二个点,我们将自定义其半径和颜色。
通过调整这些参数,我们可以清晰地看到两个点在三维空间中的位置和颜色差异。
# 使用默认参数
dot1 = Dot3D(point=axes.c2p(1, 2, 3))
# 自定义半径和颜色
dot2 = Dot3D(
point=axes.c2p(2, 3, -1),
radius=0.2,
color=RED,
)
3.2. Line3D的长度和方向
此示例将展示如何使用Line3D对象在三维空间中绘制一条线段。
首先根据起点和终点设置一个线段,同时,调整线段的粗细和颜色来使其更加醒目。
然后,通过函数parallel_to
和perpendicular_to
分别绘制此线段的平行线(黄色)和垂线(红色)。
# 指定起点和终点 以及线段粗细
line = Line3D(
start=LEFT + DOWN * 2 + IN,
end=RIGHT + UP * 2 + OUT * 2,
thickness=0.02,
color=BLUE,
)
# 绘制line的平行线
Line3D.parallel_to(line, color=YELLOW)
# 绘制line的垂线
Line3D.perpendicular_to(line, color=RED)
3.3. Arrow3D的方向和样式
在这个示例中,我们使用Arrow3D
对象来表示一个带箭头的线段,以强调方向性。
首先设置箭头的起点和终点,为了突出箭头,
再调整其粗细(thickness
参数)、箭头尖部的高度(height
参数)和底部半径(base_radius
参数)。
# 指定起点和终点 以及箭头样式参数
arrow = Arrow3D(
start=[-1, -1, -2],
end=[1, 2, 2],
thickness=0.05,
height=0.2,
base_radius=0.1,
color=GREEN,
)
3.4. 综合使用Dot3D, Line3D和Arrow3D
在这个综合示例中,我们结合使用Dot3D
、Line3D
和Arrow3D
来创建一个更复杂的三维场景。
首先,在场景中放置一个Dot3D
对象作为起点。
然后,我们将使用Line3D
对象从该点绘制一条线段到另一个位置,表示路径或轨迹。
最后,我们将在线段的终点处添加一个Arrow3D
对象。
通过调整这些对象的参数(如位置、颜色、粗细等),可以创建一个既清晰又富有表现力的三维图形,用于演示、教学或科学研究等多种目的。
# 创建Dot3D对象作为起点
dot = Dot3D(point=[-1, -1, -1], color=BLUE)
# 创建Line3D对象连接起点和另一个点
line = Line3D(
start=[-1, -1, -1],
end=[2, 2, 2],
thickness=0.05,
color=YELLOW,
)
# 创建Arrow3D对象在终点处指示方向
arrow = Arrow3D(
start=[2, 2, 2],
end=[1, 2, -1],
thickness=0.05,
height=0.2,
base_radius=0.1,
color=RED,
)
4. 附件
文中的代码只是关键部分的截取,完整的代码共享在网盘中(dot_line.py
),
下载地址: 完整代码 (访问密码: 6872)
标签:
相关文章
最新发布
- 【Python】selenium安装+Microsoft Edge驱动器下载配置流程
- Python 中自动打开网页并点击[自动化脚本],Selenium
- Anaconda基础使用
- 【Python】成功解决 TypeError: ‘<‘ not supported between instances of ‘str’ and ‘int’
- manim边学边做--三维的点和线
- CPython是最常用的Python解释器之一,也是Python官方实现。它是用C语言编写的,旨在提供一个高效且易于使用的Python解释器。
- Anaconda安装配置Jupyter(2024最新版)
- Python中读取Excel最快的几种方法!
- Python某城市美食商家爬虫数据可视化分析和推荐查询系统毕业设计论文开题报告
- 如何使用 Python 批量检测和转换 JSONL 文件编码为 UTF-8
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Python与PyTorch的版本对应
- Anaconda版本和Python版本对应关系(持续更新...)
- Python pyinstaller打包exe最完整教程
- Could not build wheels for llama-cpp-python, which is required to install pyproject.toml-based proj