首页 > 其他分享 >manim边做边学--圆环面

manim边做边学--圆环面

时间:2024-11-21 16:08:16浏览次数:1  
标签:-- Torus 环面 边学 range radius 圆环 resolution manim

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)

标签:--,Torus,环面,边学,range,radius,圆环,resolution,manim
From: https://www.cnblogs.com/wang_yb/p/18560991

相关文章

  • 最简单的纯CSS3滑动开关按钮特效
    在线预览  下载HTML结构该滑动按钮的基本HTML结构使用一个<label>元素来包裹一个<input>元素和2个<span>元素。span.text-switch是按钮上的文字和背景,span.toggle-btn是滑动的按钮。<labelclass="switch-btn">    <inputclass="checked-switch"type="check......
  • Cppcheck 检测器列表和检查规则大全一览
    1、使用Cppcheck进行静态代码分析:完整的shell脚本与CMake集成实例 使用Cppcheck进行静态代码分析:完整的shell脚本与CMake集成实例使用Cppcheck进行静态代码分析:完整的shell脚本与CMake集成实例本文介绍如何使用Cppcheck进行静态代码分析,涵盖了Cppcheck的......
  • 可视化CSS3渐变背景颜色代码生成插件
    在线预览 特效下载 这是一款可以在线生成CSS3渐变背景颜色代码的可视化插件。你可以通过调节界面上给出的颜色、色相、饱和度和亮度滑块,以及渐变方向滑块来生成各种线性渐变,屏幕上会给出相应的CSS3线性渐变代码。该渐变背景颜色插件可以设置的选项有:BaseColor:Hue:色相......
  • 体重电子秤解决方案SIC8833智能设计开发
    蓝牙体重电子秤与普通的电子秤主要功能是没有多大区别,他们的区别在于蓝牙体重电子秤是一个可以通过APP连接将数据传送到云端并保存的秤。主要效果是将个人身体数据记录并分析,帮助你在日常生活中随时可查看数据并根据数据合理调节自己的生活健康方式蓝牙体重电子秤方案还......
  • gitee初建项目提交、更新
    提交代码1、先去github创建一个仓库(Repositories),得到这个仓库地址,如:https://github.com/xxxx/htmlDemo.git2、在要上传的文件夹里面打开gitbash,按顺序执行     ①gitinit     ②gitremoteaddoriginhttps://github.com/xxxx/htmlDemo.git     ③git......
  • 全面认识视频分割:一篇文章就够了(上)
    视频分割是依据特定特征(如对象边缘、运动、色彩、纹理等视觉特征)将视频内容划分为多个区域的过程。其核心目标是识别视频中的不同对象,并将它们与背景及其他时间事件区分开来,进而提供更为详细、结构化的视觉内容。现阶段,这项技术在计算机视觉领域扮演着重要角色——它能够识别和......
  • CF889E Mod Mod Mod DP
    对于一个x我们发现最多只有\(\log\)次有效取模,但没啥用。我们发现\(dp\)数组(函数)是一个分段一次函数(等差数列),然后从第一个\(a_i\)开始考虑,发现每次只会多出一条线段(就是\(a_i-1\)这条)其他线段会翻折到下面,对于一条线段只会进行\(\loga\)次翻折,所以对线段的操作总次数......
  • RTSP播放器EasyPlayer.js播放器点击全屏按钮报:fullscreen request error TypeError Di
    流媒体技术分为顺序流式传输和实时流式传输两种。顺序流式传输允许用户在下载的同时观看,而实时流式传输则允许用户实时观看内容。流媒体播放器负责解码和呈现内容,常见的播放器包括VLC和HTML5播放器等。流媒体技术的应用场景广泛,包括娱乐、教育、视频监控、企业培训等。关于iframe......
  • 如何设置绘制一个对话框,对话框随内容自适应宽度
    <Canvas><TextBlockx:Name="stitchOverTopTextBlock"FontFamily="MicrosoftYaHei"Text="好好学习天天向上"SizeChanged="stitchOverTopTextBlock_SizeChanged"Panel.ZIndex="1"Foreground=&qu......
  • 显卡农场是指GPU渲染农场吗?
    显卡农场通常是指GPU渲染农场,这是一种专门用于图形渲染的高性能计算集群。它们由多个配备有高性能图形处理单元(GPU)的计算机组成,这些GPU专门用于加速图形和图像的渲染过程。以下是围绕这个主题的详细解释:1、GPU渲染农场的定义GPU渲染农场是一种利用多个GPU来并行处理渲染任务的......