首页 > 其他分享 >manim边做边学--圆柱体

manim边做边学--圆柱体

时间:2024-11-27 21:48:20浏览次数:2  
标签:Cylinder 示例 -- 边学 底面 radius 圆柱体 height manim

CylinderManim中用于创建圆柱体对象的类。

Cylinder类在制作数学、物理或工程领域的动画时,可用于以下的场景中:

  1. 演示几何概念:使用Cylinder类创建圆柱体,并通过改变其参数和方法来演示圆柱体的各种几何性质,如体积、表面积等。
  2. 模拟物理现象:使用Cylinder类来模拟圆柱体的滚动、碰撞等物理现象。
  3. 展示工程设计:使用Cylinder类来创建圆柱体模型,并通过动画展示其设计过程或工作原理。

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

1. 主要参数

Cylinder的主要参数有:

参数名称 类型 说明
radius float 圆柱体的半径
height float 圆柱体的高度
direction np.ndarray 圆柱体主轴的方向
v_range [float] 圆柱体在垂直方向上的参数化范围
show_ends bool 是否显示圆柱体的两端
resolution [int] 圆柱体的精细程度

2. 主要方法

Cylinder类特有的方法主要有3个:

名称 说明
add_bases 动态个圆柱体添加底面
get_direction 用于获取圆锥体的方向向量。这个方向向量通常是一个三维向量,表示圆锥体在空间中的朝向。
set_direction 用于设置圆锥体的方向向量。通过传入一个新的三维向量,可以改变圆锥体在空间中的朝向。

3. 使用示例

下面通过几个示例演示圆柱体(Cylinder)的参数和方法的使用。

3.1. 基本圆柱体

这个示例展示如何使用Cylinder类的radiusheight参数来创建一个基本的圆柱体对象。

c = Cylinder(radius=1, height=2)

3.2. 设置圆柱体方向

此示例通过调用set_direction方法改变圆柱体的方向,使其不再沿默认方向放置。

c = Cylinder(
    radius=1,
    height=2,
    show_ends=False,
)
# 设置圆柱体的朝向
c.set_direction(UP / 2 + LEFT / 2)

3.3. 动态添加底面

此示例先创建一个不含底面的圆柱体,然后通过add_base方法,动态的向圆柱体添加底面。

添加前后通过旋转看清有无底面的区别。

c = Cylinder(
    radius=1,
    height=2,
    show_ends=False,
)

# 添加底面
c.add_bases()

3.4. 圆柱体动画

此示例展示了如何为圆柱体添加动画效果,先用淡入效果创建一个圆柱体,然后使其相对于X轴旋转90度

c = Cylinder(radius=1, height=2)
self.play(FadeIn(c))
self.play(Rotate(c, PI / 2, axis=RIGHT))

4. 附件

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

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

标签:Cylinder,示例,--,边学,底面,radius,圆柱体,height,manim
From: https://www.cnblogs.com/wang_yb/p/18573159

相关文章

  • 基于Java+SpringBoot+Mysql在线简单拍卖竞价拍卖竞拍系统功能设计与实现十一
    一、前言介绍:免费学习:猿来入此1.1项目摘要主要源于互联网技术的快速发展和电子商务的普及。随着网络技术的不断进步,人们越来越依赖于互联网进行购物、交易和沟通。电子商务的兴起为在线拍卖提供了广阔的市场和便利的条件。在线拍卖系统通过搭建一个虚拟的拍卖平台,将传统的拍卖......
  • NOIP2024
    DAY-3早上模拟赛人机不写。下午和晚上一直在复习yyc的组合问题。晚上vp了PublicNOIP#7,只会A,B。我的\(\rmLinux\)下环境配置:\(\rm.vimrc\):ignoremap[[]<LEFT>ignoremap(()<LEFT>ignoremap{{}<LEFT>ignoremap"""<LEFT>\(\rmg+\):......
  • NOIP2024 游记
    Porlosmomentosdifíciles,yaentiendoquelaflormásbellaserásiempreparamí.Lydia-F.I.R飞儿乐团Porlosmomentosdifícilesyaentiendoquelaflormásbellaserásiempreparamí.Lydia迷离的眼眶为何流浪心碎的海洋受了伤连微笑都彷......
  • 基于Java+SpringBoot+Mysql在线简单拍卖竞价拍卖竞拍系统功能设计与实现十二
    一、前言介绍:免费学习:猿来入此1.1项目摘要主要源于互联网技术的快速发展和电子商务的普及。随着网络技术的不断进步,人们越来越依赖于互联网进行购物、交易和沟通。电子商务的兴起为在线拍卖提供了广阔的市场和便利的条件。在线拍卖系统通过搭建一个虚拟的拍卖平台,将传统的拍卖......
  • ST算法
    ST算法:基于倍增原理的算法。  对数列的每一个元素,我们将它分成单独的区间,将其作为第一组,再对每两个元素分成单独的区间,作为第二组,再对四个元素分成单独区间,依次类推。我们可以看到,如果多个小区间完全覆盖一个大区间(可以重叠但不超过),则大区间的最值一定和这些小区间的最值相等。......
  • 2024年11月27日总结
    今天下载安装了两个绘制UML模型图的软件,以下为流程Astah的安装流程:由于安装中界面的改变过多,流程图片并未全部展出。详细流程见UML建模工具AstahPro8破解教程2022最新最详细版-净重21克-博客园(cnblogs.com)(我是跟着人家进行的下载安装)下载并解压安装包进行安装,注意......
  • 『模拟赛』NOIP2024加赛8
    Rank唐A.flandre签。比较显然,由于\(k\ge0\),所以最终的序列一定为不降序列。首先将原序列升序排序,当任取一个子序列时,容易发现最后一个数越大一定越优,那么最后一个数取到最大值时,倒数第二个数一定越大越优,以此类推,最终取出的序列一定是原序列的一个后缀。我们倒序枚举逐......
  • 二分
    前言答案属于一个区间,当这个区间很大时,暴力超时。但重要的是这个区间是对题目中的某个量有单调性的,此时,我们就会二分答案。每一次二分会做一次判断,看是否对应的那个量达到了需要的大小。模板模板1while(l<r){intmid=l+r>>1; //(l+r)/2if(check(mid))r......
  • 刷题总结
    同步于Luogubolg题单T1AT_arc174_aAMultiply题意简化有一个长度为\(n\)的序列\(a\),你可以选择一个区间,让区间离的数全部\(\timesc\),求\(a\)序列的最大值。$1\\le\N\\le\3\\times\10^5$$-10^6\\le\C\\le\10^6$$-10^6\\le\A_i\\le\10^6$分析......
  • NOIP 前复盘突击
    NOIP前复盘突击本文主要分几个部分:CSP-S2024前三道题的题解。CSP-S2024的经验复盘。28、29号的备战策略。考前注意。CSP-S2024前三题题解[CSP-S2024]决斗题目要求退出的怪兽尽量多,也就是有效攻击要尽量多。由于一只怪兽至多发起一次攻击,所以自然想到从小到大排序......