manim边做边学--曲面

news/2024/12/2 22:57:35/文章来源:https://www.cnblogs.com/wang_yb/p/18582943

Surface类是Manim中专为创建和操控复杂的三维表面而打造的。

在实际应用中,无论是创建数学教学中的几何模型,还是模拟物理现象中的曲面变化,甚至是构建复杂的动画场景中的三维元素,Surface类都能以其强大的功能和灵活性满足我们的需求。

通过Surface类的参数和方法,我们可以创造出既逼真又富有创意的三维动画效果。

1. 主要参数

Surface的主要参数有4个:

参数名称 类型 说明
func Callable[[float, float], np.ndarray] 一个接受两个参数(通常称为u和v)的函数,返回三维空间中的一个点(x, y, z)的z坐标
u_range [float] 参数u的取值范围,决定了表面在u方向上的延伸情况
v_range [float] 参数v的取值范围,决定了表面在v方向上的延伸情况
resolution [int] 在u和v方向上的分辨率,即表面在这两个方向上的细分程度

其中,参数func比较重要,它决定了曲面的形状。

通过这个函数来创建任何可以用参数方程表示的三维表面,例如,球面、椭球面、双曲面等。

2. 主要方法

Surface类有2个设置去曲面样式的方法。

名称 说明
set_fill_by_checkerboard 通过交替颜色填充曲面,适用于需要视觉区分曲面不同部分的情况
set_fill_by_value 根据曲面上的数值使用颜色渐变进行填充,适用于表示连续变量的变化

3. 使用示例

下面通过几个示例来用演示如何使用Surface类。

3.1. 基本曲面

这个示例展示了如何使用ManimSurface类创建一个基本的三维曲面。

曲面由func参数定义,该函数描述了曲面在三维空间中的形状。

# 创建一个基本的曲面
f = lambda u, v: (u, v, u**2 - v**2)
s = Surface(func=f,u_range=[-PI / 2, PI / 2],v_range=[0, PI / 2],
)

3.2. 棋盘填充曲面

此示例演示了如何将曲面填充为棋盘样式。

通过使用set_fill_by_checkerboard方法,曲面被分割成多个小方格,并且这些小方格以交替的颜色(如红色和蓝色)填充,有助于区分曲面的不同部分。

# 创建一个基本的曲面
f = lambda u, v: (u, v, u * v)
s = Surface(func=f,u_range=[-PI / 2, PI / 2],v_range=[0, PI / 2],
)
# 填充颜色
s.set_fill_by_checkerboard(RED, BLUE)

3.3. 值填充曲面

在这个示例中,曲面的填充颜色是根据曲面上的数值来确定的。

set_fill_by_value方法允许用户定义一个颜色渐变函数,该函数根据曲面上的每个点的值来返回对应的颜色。

# 创建一个基本的曲面
f = lambda u, v: axes.c2p(u,v,np.sin(u * PI) * np.cos(v * PI),
)
s = Surface(func=f,u_range=[-PI, PI],v_range=[0, PI],
)
# 使用值填充曲面,颜色根据曲面上的值变化
s.set_fill_by_value(axes=axes,colorscale=[(RED, -0.5),(YELLOW, 0),(GREEN, 0.5),],axis=2,
)

3.4. 自定义曲面样式

此示例展示了如何自定义曲面的颜色和线宽。

通过使用stroke_colorstroke_width方法,用户可以分别设置曲面分割线的颜色和线条的宽度。

下面的示例中,使用黄色,且宽度为2的线来作为曲面上的分割线。

# 创建一个基本的曲面
f = lambda u, v: (u, v, u**2 - v**2)
s = Surface(func=f,stroke_color=YELLOW,stroke_width=2,u_range=[-PI / 2, PI / 2],v_range=[0, PI / 3],
)

4. 附件

文中的代码只是关键部分的截取,完整的代码共享在网盘中(surface.py),

下载地址: 完整代码 (访问密码: 6872)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/845662.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mac通过网线连接主机(fnOS)

一、mac端 mac是typec的,用了个转接头+网线直连主机,初始化的时候跟下面一致,默认都是自动的点击详细信息,配置IPv4选择使用DHCP二、主机端 主机端是最麻烦的,刚开始的时候怎么也找不到网卡,ifconfg敲了很多遍,最后发现是fnOS没有装驱动。。。 root@server:~# sudo lshw…

05_VIM编辑器

VIM编辑器 一、VIM编辑器的工作模式命令行模式 用户刚刚启动 vi/vim,便进入了命令模式。控制屏幕光标的移动,字符、字或行的删除,移动、复制某区域及进入插入模式,或者到末行模式插入模式 只有在插入模式下才可以做文本输入,按“ESC”键可回到命令行模式末行模式 在命令模…

HTTP协议基础

总结了HTTP协议的一些基础知识。HTTP协议基础 一.定义 HTTP协议(HyperText Transfer Protocol),超文本传输协议,它是一种客户端(如网页浏览器)和服务器端(如网站服务器)之间进行通信、请求与响应数据的规则集合。通过 HTTP 协议,客户端可以向服务器发起获取网页、图片…

Power Automate 获取通讯组的成员

前言最近,想要看看某个Group里都有哪些人正文在Power Automate里可以用Office 365 Groups这个连接器里的操作,先根据邮件地址获取到Group,然后用Group Id获取Group即可获取到Group members的截图获取结果的JSON[{"@odata.type": "#microsoft.graph.user"…

实验5.继承和多态

1.实验任务1: publisher.hpp:#pragma once#include <iostream> #include <string>using std::cout; using std::endl; using std::string;// 发行/出版物类:Publisher (抽象类) class Publisher { public:Publisher(const string &s = ""); …

PTQ 精度 Debug 工具

01 前言 使用 PTQ 后量化的模型量化方案,可以帮助用户非常简单便捷地完成从浮点模型到地平线混合异构模型的转换,模型转换工具会基于用户提供的校准样本对模型进行校准量化并保障模型高效地部署在地平线计算平台上。 但是在模型转换的过程中,不可避免地会因为浮点高精度到定…

字符串的遍历、统计字符案例

1.两种字符串遍历方法1.toCharArray 将字符串转换成一个新的字符类型的数组 调用方式:对象.如图,其实就相当于把字符串全部拆开,变成一个个的字符,再由字符数组来接收2.charAt 根据输入的索引,从字符串里找出对应的字符 调用方法:对象. 如图如果我们要遍历字符串,那不就…

synchronized同步锁机制

目录synchronized 的使用Java的对象头和 Monitor对象头实例数据对齐填充synchronized 原理synchronized修饰代码块示例对象锁的四种状态无锁偏向锁轻量级锁重量级锁synchronized 的使用如果修饰的是具体对象:锁的是对象 如果修饰的是成员方法:那锁的就是 this 如果修饰的是静…

员工出入更衣室穿戴规范识别检测系统

员工出入更衣室穿戴规范识别检测系统能够通过安装在更衣室入口的摄像机,员工出入更衣室穿戴规范识别检测系统实时检测员工的穿戴情况。系统的工作流程如下:当员工进入更衣室时,摄像机捕捉到图像,算法迅速识别图像中的人员,并检测他们是否穿戴了规定的防护服、护目镜、口罩…

Lock接口

目录Lock接口Lock接口概述API方法锁获取与中断Synchronized和Lock的区别 Lock接口大佬地址: AQS(AbstractQueuedSynchronizer)源码深度解析(2)—Lock接口以及自定义锁的实现Lock接口概述 Lock接口同样自于JDK1.5,它被描述成JUC中的锁的超级接口,所有的JUC中的锁都会实现Lock…

作文的深度解析

目录题目一:There is a growing awareness of the importance of digital literacy and skills in todays world题目二:Nowadays more and more college students have come to realize social practice and academic learning are equally important. 题目一:There is a gr…