当前位置:首页 > 后端开发 > 正文内容

manim边做边学--曲面

邻居的猫1个月前 (12-09)后端开发1095

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)

扫描二维码推送至手机访问。

版权声明:本文由51Blog发布,如需转载请注明出处。

本文链接:https://www.51blog.vip/?id=164

标签: databookmanim
分享给朋友:

“manim边做边学--曲面” 的相关文章

ASP.NET Core 标识(Identity)结构系列(三):在 ASP.NET Core Web API 项目中运用标识(Identity)结构进行身份验证

ASP.NET Core 标识(Identity)结构系列(三):在 ASP.NET Core Web API 项目中运用标识(Identity)结构进行身份验证

前语:JWT完结登录的流程 客户端向服务器端发送用户名、暗码等恳求登录。 服务器端校验用户名、暗码,假如校验成功,则从数据库中取出这个用户的ID、人物等用户相关信息。 服务器端选用只需服务器端才知道的密钥来对用户信息的 JSON 字符串进行签名,构成签名数据。 服务器端把用户信息的 JSON 字符...

链表c语言,二、链表的基本概念

链表c语言,二、链表的基本概念

链表(Linked List)是一种常见的数据结构,它由一系列节点组成,每个节点包含两部分:数据部分和指向下一个节点的指针。链表可以分为单链表、双链表和循环链表等。下面我将分别介绍这些链表类型,并提供相应的C语言实现。 1. 单链表单链表是最简单的链表类型,每个节点只包含一个指向下一个节点的指针。...

on-the-go,现代生活的节奏与便捷生活方式

“Onthego”是一个常用的英语短语,其含义和用法如下:1. 基本含义: 忙碌和活跃:用来描述一个人总是处于忙碌或活跃的状态,没有空闲时间。 中文翻译:忙个不停的、特别忙的、总是在生产中或处于生产过程中。2. 用法: 在日常交流中,onthego常用来形容那些总是忙碌、时间紧迫的...

php开源商城,助力电商企业快速搭建线上平台

1. 萤火商城V2.0 轻量级、高性能、前后端分离的电商系统。 支持微信小程序、H5、公众号、APP。 前后端源码完全开源,支持二次开发。 允许个人学习研究使用,支持二次开发,允许商业用途(仅限自运营)。 2. ShopXO 企业级免费开源商城系统,基于Think...

delphi7序列号,Delphi7序列号获取与使用指南

1. 序列号: 6AMDPKG68EDB8PP79SFE 3QH9QW2. 获取方法: 通过合法渠道购买:如果您已经购买了Delphi 7的正版授权,序列号通常会在购买时提供,或者在软件安装时输入序列号。如果您丢失了序列号,可以联系Delphi 7官方客服进行查询和恢复。 使用破解...

c语言编译器手机版,随时随地编写与调试C代码

c语言编译器手机版,随时随地编写与调试C代码

1. C语言编译器: 这是一款专为学习C语言的新手设计的手机端编程软件。软件界面简洁,功能丰富,支持离线使用,不需要连接网络即可进行编程。 你可以在多个平台下载这款软件,例如: 2. C4droid: C4droid 是一款功能强大的C/C 开发环境,支持代...