ThreeDAxesManim中用于创建三维坐标系的类。

在数学、物理和工程等领域,三维坐标系的绘制是非常重要的。

ThreeDAxes使得用户能够在动画中直观地展示三维空间中的对象和关系,从而提高演示文稿和教学的效果。

ThreeDAxes提供了多种参数,如坐标轴的范围、长度、颜色、粗细等,以及光源位置和光泽度等,这些参数使得用户能够根据需要自定义坐标系的外观和行为。

1. 主要参数

ThreeDAxes的主要参数有:

参数名称 类型 说明
x_range Sequence[float] X轴的范围,格式为(起始值,结束值,步长)
y_range Sequence[float] Y轴的范围,格式为(起始值,结束值,步长)
z_range Sequence[float] Z轴的范围,格式为(起始值,结束值,步长)
x_length float X轴的长度
y_length float Y轴的长度
z_length float Z轴的长度
z_axis_config dict 对Z轴的配置,如颜色、粗细等
z_normal Vector3D 定义Z轴的“正向”方向
num_axis_pieces int 轴的细分数量
light_source Sequence[float] 光源的位置,影响阴影和光照效果

ThreeDAxes也是继承自Axes的,所以也有x_axis_configy_axis_config参数,这里没有再列出来。

2. 主要方法

ThreeDAxes主要使用的是下面2个方法:

名称 说明
get_axis_labels 为每个轴添加标签
add_coordinates 在坐标系中添加网格线或刻度标记

3. 使用示例

下面通过几个示例展示ThreeDAxes的关键功能和应用场景,每个示例都聚焦于该类的一个或多个核心参数或方法。

3.1. 坐标轴范围和刻度

在这个示例中,我们使用ThreeDAxesx_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.5y轴刻度单位为1z轴刻度单位为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_configx轴设置红色,轴的粗细设为1

使用y_axis_configy轴设置绿色,轴的粗细设为3

使用z_axis_configz轴设置蓝色,轴的粗细设为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)

manim边做边学--通用三维坐标系的更多相关文章

  1. matlab中的三维坐标系与旋转

    1. matlab中的三维坐标系 matlab中的三维坐标系是使用的右手坐标系: 输入以下代码: >> plot3(0,0,0) >> xlabel('axis X') > ...

  2. 边做边学入门微信小程序之仿豆瓣评分

    微信小程序由于适用性强.逻辑简要.开发迅速的特性,叠加具有海量活跃用户的腾讯公司背景,逐渐成为了轻量级单一功能应用场景的较佳承载方式,诸如电影购票.外卖点餐.移动商城.生活服务等场景服务提供商迅速切入 ...

  3. 不到50行代码实现一个能对请求并发数做限制的通用RequestDecorator

    使用场景 在开发中,我们可能会遇到一些对异步请求数做并发量限制的场景,比如说微信小程序的request并发最多为5个,又或者我们需要做一些批量处理的工作,可是我们又不想同时对服务器发出太多请求(可能会 ...

  4. 对请求并发数做限制的通用RequestDecorator

    使用场景 在开发中,我们可能会遇到一些对异步请求数做并发量限制的场景,比如说微信小程序的request并发最多为5个,又或者我们需要做一些批量处理的工作,可是我们又不想同时对服务器发出太多请求(可能会 ...

  5. Grails边做边学入门篇[1]--------大家一起来动手建立project和Domain

    近期工作比較忙,没空写博客了.我发现每周五的下午都是我最放松的时候,可能是迟延症的缘故吧...总是寄希望于周末,慢慢的.我的周末就被工作占领了. 希望大家不要有这种坏毛病.今日事,今日毕.当然我们程序 ...

  6. three.js 添加三维坐标系

    //显示三维坐标系 ); scene.add(axis);

  7. 计算机图形学学习方法和相关书籍,做游戏,GIS,虚拟现实,三维引擎的都能够看看.

    本书參照<<图形学扫盲>> 整理的,原文内容引子: http://www.cppblog.com/lai3d/archive/2008/12/30/70796.html 前言: ...

  8. Android OpenGL ES(十二):三维坐标系及坐标变换初步 .

    OpenGL ES图形库最终的结果是在二维平面上显示3D物体(常称作模型Model)这是因为目前的打部分显示器还只能显示二维图形.但我们在构造3D模型时必须要有空间现象能力,所有对模型的描述还是使用三 ...

  9. 【opencv】 solvepnp 和 solvepnpRansac 求解 【空间三维坐标系 到 图像二维坐标系】的 三维旋转R 和 三维平移 T 【opencv2使用solvepnp求解rt不准的问题】

    参考: pnp问题 与 solvepnp函数:https://www.jianshu.com/p/b97406d8833c 对图片进行二维仿射变换cv2.warpAffine() or 对图片进行二维 ...

  10. 技术的止境(客户价值第一,快速实现第二,边做边学,迅速成为牛人。紧贴客户的需求去做技术,立于不败之地。追求的目标:把一项产品去做好,用产品去养活自己和家人)good

    作为一个依靠技术来谋生的程序员,我最近一直在思考一个问题,有限的生命里,面对无限的技术更新,我要研究到什么程度才能算是完成我的成为技术大牛的目标呢?换而言之,那就是技术的止境在哪儿呢?深入的思考下去, ...

随机推荐

  1. LVGL line组件

    目录 一.Line(线条)的概念 二.线条组件的使用 1.创建线条对象 2.设置点数组 3.确定y轴的方向(可选) 4.设置线条风格(可选) 4.1创建风格 4.2设置风格 5.将创建好的线段组件添加 ...

  2. CUDA常见编译器配置问题一览

    CUDA常见编译器配置问题一览 关注TechLead,复旦博士,分享云服务领域全维度开发技术.拥有10+年互联网服务架构.AI产品研发经验.团队管理经验,复旦机器人智能实验室成员,国家级大学生赛事评审 ...

  3. 使用 navigateTo 实现灵活的路由导航

    title: 使用 navigateTo 实现灵活的路由导航 date: 2024/8/13 updated: 2024/8/13 author: cmdragon excerpt: 摘要:本文详细介 ...

  4. [粉丝问答16]应届生被放鸽子,怒怼HR!找工作和找对象哪个更残酷?

    很多应届生在求职过程中遇到过被放鸽子的情况,但是由于段位不高,资源不够,社会阅历尚浅,很多人都是忍气吐声,但是也不乏有些学生性格刚硬,怒怼的. 比如下面这位学生,竟然直接怼了HR. 0.应届硕士小伙怒 ...

  5. .net相关知识点总结

    基础知识 [1]静态构造函数(执行一次,调用静态成员或实例化时执行一次) [2]抽象类和接口的区别 1:抽象类有字段,构造函数,非抽象方法(C#新版本接口可以定义方法体),接口没有 2:抽象类不可多继 ...

  6. ES7.5.2索引生命周期管理(附操作示例)

    一.前言 es可以用来存储日志,一般日志存储只是短期保存,超过一定时间日志要是能自动删除最好,这样保证索引文档不会过多,查询时效性也能得到保证.本文参考的官网地址是:https://www.elast ...

  7. API 接口是什么?怎么对接 API?

    API接口是预先定义的函数,允许应用间共享数据和功能.对接API涉及获取接口文档,通过POST请求调用如http://域名地址/queryLoginWx的URL,使用特定Headers.成功返回会包含 ...

  8. iptables 工作过程整理

    转载注明出处: 1.概念和工作原理 iptables是Linux系统中用来配置防火墙的命令.iptables是工作在TCP/IP的二.三.四层,当主机收到一个数据包后,数据包先在内核空间处理,若发现目 ...

  9. C语言中的数据类型及其转换

    目录 计算机中的数据类型 整型数据之间的转换 相同字长之间的转换 小字长转大字长 大字长转小字长 int.float.double之间的转换 float->double double->f ...

  10. Coursera, Big Data 5, Graph Analytics for Big Data, Week 5

    Computing Platforms for Graph Analytics programming models for Graphs Giraph and GraphX 其中讲 GraphX 的 ...