ToB企服应用市场:ToB评测及商务社交产业平台
标题:
manim边做边学--通用三维坐标系
[打印本页]
作者:
圆咕噜咕噜
时间:
2024-11-1 17:57
标题:
manim边做边学--通用三维坐标系
ThreeDAxes是Manim中用于创建三维坐标系的类。
在数学、物理和工程等领域,三维坐标系的绘制是非常重要的。
ThreeDAxes使得用户能够在动画中直观地展示三维空间中的对象和关系,从而提高演示文稿和讲授的效果。
ThreeDAxes提供了多种参数,如坐标轴的范围、长度、颜色、粗细等,以及光源位置和光泽度等,这些参数使得用户能够根据需要自定义坐标系的外观和行为。
1. 主要参数
ThreeDAxes的主要参数有:
参数名称
类型
说明
x_rangeSequence[float]X轴的范围,格式为(起始值,结束值,步长)y_rangeSequence[float]Y轴的范围,格式为(起始值,结束值,步长)z_rangeSequence[float]Z轴的范围,格式为(起始值,结束值,步长)x_lengthfloatX轴的长度y_lengthfloatY轴的长度z_lengthfloatZ轴的长度z_axis_configdict对Z轴的配置,如颜色、粗细等z_normalVector3D定义Z轴的“正向”方向num_axis_piecesint轴的细分数量light_sourceSequence[float]光源的位置,影响阴影和光照效果ThreeDAxes也是继承自Axes的,所以也有x_axis_config和y_axis_config参数,这里没有再列出来。
2. 主要方法
ThreeDAxes主要使用的是下面2个方法:
名称
说明
get_axis_labels为每个轴添加标签add_coordinates在坐标系中添加网格线或刻度标记
3. 使用示例
下面通过几个示例展示ThreeDAxes的关键功能和应用场景,每个示例都聚焦于该类的一个或多个核心参数或方法。
3.1. 坐标轴范围和刻度
在这个示例中,我们使用ThreeDAxes的x_range, y_range, 和z_range参数来设置坐标轴的范围,
并通过x_length, y_length, z_length来调整坐标轴的长度。
示例中:
设置
x轴
范围为(-5, 5),
y轴
范围为(-3, 3),
z轴
范围为(-2, 2)
调整
x轴
长度为10个单位,
y轴
长度为6个单位,
z轴
长度为4个单位
设置
x轴
刻度单位为1.5,
y轴
刻度单位为1,
z轴
刻度单位为0.5
axes = ThreeDAxes(
x_range=(-5, 5, 1.5),
y_range=(-3, 3, 1),
z_range=(-2, 2, 0.5),
x_length=10,
y_length=6,
z_length=4,
)
axes.add_coordinates()
复制代码
3.2. 自定义坐标轴颜色和标签
本示例将展示怎样使用*_axis_config参数来自定义坐标轴的
颜色
、
粗细
以及
标签
。
使用x_axis_config将
x轴
设置红色,轴的粗细设为1,
使用y_axis_config将
y轴
设置绿色,轴的粗细设为3,
使用z_axis_config将
z轴
设置蓝色,轴的粗细设为5。
然后,再为每个轴添加自定义标签,如
x轴
标签为
"人口"
,
y轴
标签为
"年龄"
,
z轴
标签为
"收入"
。
axes = ThreeDAxes(
x_axis_config={
"color": RED,
"stroke_width": 1,
},
y_axis_config={
"color": GREEN,
"stroke_width": 3,
},
z_axis_config={
"color": BLUE,
"stroke_width": 5,
},
).scale(0.6)
labels = axes.get_axis_labels(
Text("人口", font_size=20, color=RED),
Text("年龄", font_size=20, color=GREEN),
Text("收入", font_size=20, color=BLUE),
)
axes.add_coordinates()
复制代码
3.3. 绘制三维函数
二维坐标系Axes中绘制的是曲线函数,在三维坐标系ThreeDAxes中,可以使用plot_surface函数来绘制曲面函数。
本示例绘制一个 $ z = x2+y2 $的曲面。
axes = ThreeDAxes(
x_range=[-3, 3],
y_range=[-3, 3],
z_range=[-1, 3],
x_length=6,
y_length=6,
z_length=4,
)
graph = axes.plot_surface(
lambda u, v: u**2 + v**2,
u_range=[-1, 1],
v_range=[-1, 1],
)
复制代码
4. 附件
文中的代码只是关键部分的截取,完整的代码共享在网盘中(threed_axes.py),
下载地址:
完整代码
(访问密码: 6872)
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4