• 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)

  • 相关阅读:
    MyBatis 面试题(八)
    Android 系统一级休眠命令
    GPE(Grafana+Prometheus+Exporter)项目实战之Golang篇(上)
    利用 clip-path 绘制不规则的图形
    为什么亚马逊卖家一定要有独立站?新手低成本快速搭建跨境电商独立站完整图文教程
    编写Dockerfile
    年薪百万,一夜归零!程序员,过了 35 岁,你还能做什么?
    难怪大家丢掉了postman而选择 Apifox
    机器人过程自动化(RPA)入门 7. 处理用户事件和助手机器人
    杜教筛练习题
  • 原文地址:https://www.cnblogs.com/wang_yb/p/18521033