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. [题解] [ABC221H] Count Multiset - DP

    [ABC221H] Count Multiset 题面翻译 输入两个正整数 \(N,M\),并存在一个集合,问你一个长度为 \(k\) 的合法集合存在多少个?你需要回答 \(k\) 的值为 \(1\) ...

  2. Xinference实战指南:全面解析LLM大模型部署流程,携手Dify打造高效AI应用实践案例,加速AI项目落地进程

    Xinference实战指南:全面解析LLM大模型部署流程,携手Dify打造高效AI应用实践案例,加速AI项目落地进程 Xorbits Inference (Xinference) 是一个开源平台,用 ...

  3. “vscode #include 错误”的问题解决办法

    确定gcc没问题的情况下 打开这个文件 把linux下的文件直接复制过来 然后加上路径就OK了

  4. Linux系统性能调优技巧

    Linux系统性能调优是一个复杂而细致的过程,它涉及到硬件.软件.配置.监控和调优策略等多个方面.以下将详细阐述Linux系统性能调优的技巧: 一.硬件优化 CPU优化 选择适合的CPU:根据应用需求 ...

  5. stm32学习之ADC入门

    ADC_SampleTime 用途:在ADC通道配置(ADC_RegularChannelConfig)需要传输的参数. 含义:指两个采样阶段之间的延迟周期数,该参数会影响ADC在采样过程中的性能和准 ...

  6. LaTeX 编译中文文档

    介绍 LaTeX 原生不支持中文.为了添加中文的功能,我们需要引入宏包.XeLaTeX 原生支持中文.不过由于默认使用的字体是英文字体,我们需要设置中文字体之后才能用.不过由于一些原因,在使用 LaT ...

  7. 基于surging的木舟IOT平台如何添加网络组件

    一 . 概述 为了弥补代码的遗失,木舟IOT平台正在加班加点进行研发,后面不只是针对于IOT设备接入上报,告警,视频管理,组态数据可视化大屏,后面还会有快速搭建微服务平台,利用surging.cli工 ...

  8. 记录荒废了三年的四年.net开发的第三次面试,苏州斯莱克

    现在就业的确崩了 这次面试的时间是8月28号.距离上一次面试已经过去了一个月了,距离开始找工作已经过去了2个月.没多少找工作经验的我也体会到了什么叫就业崩了. 看了一线码农的采访计划后,我也把苏州列为 ...

  9. 【Docker学习系列】Docker学习2-docker设置阿里云镜像加速器

    在上一篇中,我们学会了在centos中安装docer.我们知道,镜像都是外网的,镜像一般都是比较大的,因为种种原因,我们知道,从外网下载比较慢的.所以,本文,凯哥就介绍怎么将docker的镜像拉取设置 ...

  10. PHP转Go系列 | ThinkPHP与Gin框架之Redis延时消息队列技术实践

    大家好,我是码农先森. 我们在某宝或某多多上抢购商品时,如果只是下了订单但没有进行实际的支付,那在订单页面会有一个支付倒计时,要是过了这个时间点那么订单便会自动取消.在这样的业务场景中,一般情况下就会 ...