Torus类在制作数学、物理或工程领域的动画时具有广泛的应用场景。

比如,通过动态演示环面的拓扑变换(如内外翻转、扭曲等),帮助我们直观地理解拓扑不变量和同胚等概念;

此外,也可以模拟磁场线在环面导体中的分布和运动,展示电磁感应现象等等。

本篇介绍Torus的主要参数和基本使用方法。

1. 主要参数

Torus的参数不多,主要有:

参数名称 类型 说明
major_radius float 圆环面的主要半径,从环面中心到其管道中心(或称为环面中心轴)的距离
minor_radius float 环面管道的半径
resolution [int, int] 环面表面的分辨率,用于控制渲染的精细程度
u_range [float] 定义了圆环面在u方向上的参数化范围
v_range [float] 定义了圆环面在v方向上的参数化范围

如果把Torus圆环面看成一个轮胎的话,

那么,major_radius参数表示轮胎的大小,minor_radius参数表示轮胎的厚度。

2. 使用示例

为了有效展示Torus(圆环面)各个参数的使用,下面构造四个示例,

每个示例将突出Torus类的一个或几个关键参数,并说明这些参数如何影响环面的外观和特性。

2.1. 标准圆环面

这是一个标准的环面,其中major_radius决定了环面的大小,minor_radius决定了环面管道的厚度,

resolution控制了环面表面的平滑度。

通过调整这些参数,可以获得不同大小和形状的环面。

torus = Torus(
major_radius=2.5,
minor_radius=0.5,
resolution=(30, 30),
)

2.2. 扁平圆环面

通过限制v_range的值,我们可以创建一个扁平的环面。

在这个示例中,v_range被设置为(0, PI/2),这意味着环面在v方向上的参数化范围被限制在一个更小的区间内,从而导致环面在视觉上变得更加扁平。

这种扁平环面可以用于模拟轮胎、甜甜圈等扁平形状的物体。

torus = Torus(
major_radius=2.5,
minor_radius=0.5,
resolution=(30, 30),
v_range=(0, PI / 2),
)

2.3. 高分辨率圆环面

增加resolution的值可以提高环面表面的平滑度和细节程度。

在这个示例中,resolution被设置为(100, 100),这意味着环面在u和v方向上都有更高的分辨率,从而呈现出更加细腻和逼真的曲面效果。

高分辨率环面在渲染复杂场景或制作高质量动画时非常有用。

torus = Torus(
major_radius=2.5,
minor_radius=0.5,
resolution=(100, 100),
)

2.4. 非标准圆环面

通过调整u_range的值,我们可以创建一个非标准的环面。

在这个示例中,u_range被设置为(0, 3*PI/2),这意味着环面在u方向上的参数化范围被扩展到一个更大的区间内,从而导致环面在视觉上出现一部分缺失。

这种非标准环面可以用于艺术创作、数学可视化或物理模拟等领域,以展示环面在不同参数设置下的多样性和灵活性。

torus = Torus(
major_radius=2.5,
minor_radius=0.5,
resolution=(30, 30),
u_range=(0, 3 * PI / 2),
)

3. 附件

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

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

manim边做边学--圆环面的更多相关文章

  1. 边做边学入门微信小程序之仿豆瓣评分

    微信小程序由于适用性强.逻辑简要.开发迅速的特性,叠加具有海量活跃用户的腾讯公司背景,逐渐成为了轻量级单一功能应用场景的较佳承载方式,诸如电影购票.外卖点餐.移动商城.生活服务等场景服务提供商迅速切入 ...

  2. Three.js基础探寻五——正二十面体、圆环面等

    除了立方体.平面.球体,Three.js还提供了很多其他几何形状. 1.圆形 CircleGeometry可以创建圆形或者扇形: THREE.CircleGeometry(radius, segmen ...

  3. Grails边做边学入门篇[1]--------大家一起来动手建立project和Domain

    近期工作比較忙,没空写博客了.我发现每周五的下午都是我最放松的时候,可能是迟延症的缘故吧...总是寄希望于周末,慢慢的.我的周末就被工作占领了. 希望大家不要有这种坏毛病.今日事,今日毕.当然我们程序 ...

  4. 《Three.js 入门指南》3.1.1 - 基本几何形状 -圆环面(TorusGeometry)

    3.1 基本几何形状 圆环面(TorusGeometry) 构造函数 THREE.TorusGeometry(radius, tube, radialSegments, tubularSegments ...

  5. 技术的止境(客户价值第一,快速实现第二,边做边学,迅速成为牛人。紧贴客户的需求去做技术,立于不败之地。追求的目标:把一项产品去做好,用产品去养活自己和家人)good

    作为一个依靠技术来谋生的程序员,我最近一直在思考一个问题,有限的生命里,面对无限的技术更新,我要研究到什么程度才能算是完成我的成为技术大牛的目标呢?换而言之,那就是技术的止境在哪儿呢?深入的思考下去, ...

  6. 【Leetcode 做题学算法周刊】第四期

    首发于微信公众号<前端成长记>,写于 2019.11.21 背景 本文记录刷题过程中的整个思考过程,以供参考.主要内容涵盖: 题目分析设想 编写代码验证 查阅他人解法 思考总结 目录 67 ...

  7. 做fzu oj 1045 做减法学到的sprintf()函数

    题目 做题一直输不出答案,于是就上网去百度了这题的解题,发现解答十分的简短,而且其中我看见了平时没见过的函数,sprintf(). 于是就百度sprintf()的使用. 如下: 函数功能:把格式化的数 ...

  8. 【Leetcode 做题学算法周刊】第一期

    首发于微信公众号<前端成长记>,写于 2019.10.28 背景 本文记录刷题过程中的整个思考过程,以供参考.主要内容涵盖: 题目分析设想 编写代码验证 查阅他人解法 思考总结 目录 1. ...

  9. 【Leetcode 做题学算法周刊】第二期

    首发于微信公众号<前端成长记>,写于 2019.11.05 背景 本文记录刷题过程中的整个思考过程,以供参考.主要内容涵盖: 题目分析设想 编写代码验证 查阅他人解法 思考总结 目录 20 ...

  10. 【Leetcode 做题学算法周刊】第三期

    首发于微信公众号<前端成长记>,写于 2019.11.13 背景 本文记录刷题过程中的整个思考过程,以供参考.主要内容涵盖: 题目分析设想 编写代码验证 查阅他人解法 思考总结 目录 35 ...

随机推荐

  1. 关于SQLServer数据库的READ_COMMITTED_SNAPSHOT隔离级别

    默认情况下,SQL Server的事务隔离级别是READ COMMITED.刚开始我理解这个模式就是读已经提交的,那也就是说并发一个事务去更新,一个事务查询同一条数据应该是像Mysql.Oracle不 ...

  2. 【图文教程】云服务器上,Linux安装VSFTPD组件及遇到的问题

    服务器做迁移,从AXX云迁移到Txx云上,迁移的话,需要把图片服务器也迁移过去.之前使用的是VSFTPD这次也还用这个吧.这里就记录下FTP服务器安装及遇到的问题. 1:安装VSFTP组件 使用yum ...

  3. Android Adapter中组件EditText文本变化监听 addTextChangedListener

    问题背景:使用适配器显示一个列表,列表中Item中有EditText,滚动时会有EditText组件内容消失 步骤: 1. 在Adapter中,添加interface public interface ...

  4. OpenAI注册-临时手机号/邮箱

    OpenAI 在注册ChatGPT时,发生了一个错误,使用邮箱进行注册后,在注册界面会提示"Not available OpenAI's services are not available ...

  5. C# .net 6 Log4net 安装、配置 以及相关问题处理

    安装log4net 首先下载相关Nuget包 安装的时候注意项目的.net版本,我这里使用的是.net 6 在根目录下面新建一个配置文件 log4net.config,并且添加下面相关配置项目 < ...

  6. 合合信息旗下启信宝与鹏城实验室达成数据托管合作,“AI靶场”让数据管理更精准

    合合信息旗下启信宝与鹏城实验室达成数据托管合作,"AI靶场"让数据管理更精准   数字经济时代,数据已成为新型生产要素.通过"数据托管"等形式对数据进行集中管理 ...

  7. Maven高级——分模块开发与设计

    分模块开发的意义 将原始模块按照功能拆分成若干个子模块,方便模块间的相互调用,接口共享 分模块开发 创建Maven工程 书写模块代码 注意:分模块开发需要先针对模块功能进行设计,再进行编码.不会先将工 ...

  8. 了解 Flutter 3.16 功能更新

    作者 / Kevin Chisholm 我们在季度 Flutter 稳定版发布会上带来了 Flutter 3.16,此版本包含诸多更新: Material 3 成为新的默认主题.为 Android 带 ...

  9. 数字产品护照 (DPP) 解决方案:利用 Blazor 和区块链实现产品全生命周期追踪

    数字产品护照 (DPP) 解决方案:利用 Blazor 和区块链实现产品全生命周期追踪 随着全球对可持续发展和产品透明度的关注日益增加,企业需要一种可靠的方法来跟踪和管理产品生命周期中的关键数据.我们 ...

  10. AD域下,普通用户环境下安装软件需要管理员权限的解决办法

    原理:将AD域普通用户添加到管理组中,使其拥有管理员权限 做法: 1.切换到AD域管理员账户: 2.计算机 -> 管理 -> 用户和组 -> 组 -> Administrato ...