首页 > 其他分享 >manim边做边学--通用三维坐标系

manim边做边学--通用三维坐标系

时间:2024-11-01 18:30:44浏览次数:3  
标签:-- ThreeDAxes axes length 边学 range axis config manim

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)

标签:--,ThreeDAxes,axes,length,边学,range,axis,config,manim
From: https://www.cnblogs.com/wang_yb/p/18521033

相关文章

  • KubeSphere v4 应用商店配置指南
    在KubeSpherev4版本中,为保持平台的简洁性,系统默认移除了内置应用商店中的应用。用户可以按照下列步骤进行手动配置和添加。注意:应用商店和扩展市场有所不同,扩展市场的使用方法将在后续文档中详细介绍。HelmRepo源:安装过程中需要从源下载Chart包,确保源可用并同步最新的......
  • Go和Rust的高并发编程中,为什么要特别注意对齐
    Go和Rust的高并发编程中特别注意对齐的原因有:一、提高访问效率;二、避免数据竞争;三、优化内存使用;四、保证数据完整性;五、增强平台兼容性;六、确保原子操作的正确性;七、缓解伪共享问题。提高访问效率是指,对齐可以使结构体中的字段按照最自然的方式排列,避免了不必要的内存访问开销......
  • 重温c语言之,7天开整,就是随便的写写,第二天
    一:操作符除法:如果都是整数,除数,被除数都是整数,那么结果:就是整数的商(没有小数部分的),例如:7/2=3;如果除数或者被除数其中一个是浮点数,那么结果就是(条件是:能除尽的,并且小数在基础数据类型包含下的)完整的商(包含小数部分的):例如:7/2.0=3.500000;如果想要在pr......
  • 如何使用7种方法将PDF转换为图像
    PDF是共享文件的首选格式。但是,在某些情况下,您可能需要将PDF转换为图像。比如,当您计划发送的PDF文档太大而无法在线上传,或者您计划在将文档用于演示之前向其添加视觉元素时,这种情况就会出现。如果您是第一次计划将PDF转换为图像,您可能不知道最好使用哪些工具。因此,为了帮助您......
  • 前端工程化
    前端构建cjs:exports.sum=(x,y)=>x+y;const{sum}=require('./sum')esm:静态导入针对无用treeshakingexportconstsum=(x,y)=>x+y;import{sum}from'./sum'umd:universalmoduledefinition前端权限管理的模型ACL:基于用户的权限管理模型RBAC:基于角......
  • Chromium 中chrome.topSites扩展接口定义c++
    一、chrome.topSites使用 chrome.topSites API访问新标签页上显示的热门网站(即最常访问的网站)。不包括用户自定义的快捷方式。权限topSites您必须声明“topSites”扩展程序清单中授予使用此API的权限。{ "name":"Myextension", ... "permissions":[ ......
  • 如何在 iPhone 上关闭闹钟 [2023]
    ​关闭iPhone上的闹钟需要遵循以下步骤:1.打开“时钟”应用;2.选择“闹钟”选项;3.找到设置的闹钟并关闭;4.若需要,删除不再使用的闹钟;5.确保已设置的闹钟时间与实际需求相符。首先,我们需要确定要操作的闹钟。1.打开“时钟”应用从iPhone的主屏幕中找到并点击“时钟”图......
  • NewStar easygui re wp
    NewStareasyguirewp参考题解:NewStarCTFweek4-CSDN博客提示先去看消息机制:深入理解windows消息机制_⒉消息队列发送消息,消息的标识可以从键盘获取,-CSDN博客大概看下64位无壳shift+f12没找到关键字符串,看看函数有个winmain点进去,都是些系统函数发现sub_14000149......
  • UcOs-III 源码阅读: os_flag.c
    /***********************************************************************************************************uC/OS-III*TheReal-TimeKernel**Copy......