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)

manim边做边学--圆柱体的更多相关文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

随机推荐

  1. TS中的声明文件

    TS中的声明文件 .d.ts 的作用是为了在TS中使用js文件,但是js文件没有类型,ts又是一个类型严格的语言.所以为了在ts中使用js第三方包,或者自定义Js模块.便由此引出了.d.ts文件. 需 ...

  2. Qml 实现瀑布流布局

    [写在前面] 最近在刷掘金的时候看到一篇关于瀑布流布局的文章,然鹅他们的实现都是前端的那套,就想着 Qml 有没有类似实现. 结果百度了一圈也没有( T_T Qml 凉了凉了 ),于是,我按照自己理解 ...

  3. docker 参数'--privileged' 的作用

    在Docker中,--privileged 参数给予容器内的进程几乎相同的权限,就像它们在宿主机上一样.这意味着容器可以访问宿主机的所有设备,并且可以执行一些通常需要高级权限的操作,例如加载内核模块. ...

  4. Identity – 冷知识

    RoleManager, RoleStore, EF Core 关系 RoleManager 可以理解为一个上层 service, 是让我们操作 Role 的. 比如 create, update, ...

  5. k8s 操作命令(合集List)

    k8s 操作命令 合集List 一.K8S最常用命令如下: 1.获取pod信息:kubectl get pod 2.查看指定pod的日志信息:kubectl logs -f --tail(最后多少行) ...

  6. MyBatis——解决SQL映射文件的警告提示

    解决SQL映射文件的警告提示 产生原因:idea 和数据库没有建立连接,不识别表信息 解决方式:在idea 中配置MySQL数据库连接   配置MySQL数据库连接:                  ...

  7. Session——基本使用

    Session    Session 原理 Session 使用细节      

  8. HeaderFile (1.2-1.6) 中 hct.h 使用教程

    下载 HeaderFile 1.2 HCT 是干什么的 辅助数据生成 主干框架 你需要包含必须的头文件 hct.h 此外,你需要实现如下函数: void create() 数据生成函数 void so ...

  9. Web前端技术丛书代码下载

    我是清华社编辑,这些下载资源供读者个人学习使用,禁止商用. IE/Chrome下载,或者微信扫描二维码,按提示发邮箱下载. 二维码用微信扫码,可填写邮箱,把链接转发邮箱下载. <微信小程序开发从 ...

  10. USB总线-Linux内核USB3.0设备控制器中断处理程序分析(九)

    1.概述 USB设备枚举.请求处理.数据交互都涉及USB设备控制器中断.当有事件发生时,USB设备控制器首先将事件信息通过DMA写入到事件缓冲区中,然后向CPU发出中断,随后CPU调用中断处理函数开始 ...