本篇介绍Manim中创建三维立体的两个常用对象:CubePrism

Cube在制作动画时,可以用于展示立体几何中的立方体概念,或者通过旋转、缩放等动画效果来帮助理解三维空间中的几何变换。

Prism是长方体,继承自Cube,与Cube相比,它可以更进一步设置不同的边长。

1. 主要参数

Cube的主要参数有:

参数名称 类型 说明
side_length float 立方体的边长
fill_opacity float 立方体的透明度
fill_color Color 立方体的颜色
stroke_width float 设置立方体边框的宽度

PrismCube的区别在于它没有side_length参数,取而代之是dimensions参数。

参数名称 类型 说明
dimensions tuple[float, float, float] 长方体的长,宽和高

Prismdimensions参数长宽高定义为同样的值时,就是Cube

2. 主要方法

CubePrism的没有特有的方法,对于通用的方法都支持,

比如shift(平移),rotate(旋转)和scale(缩放)等。

3. 使用示例

这个对象的使用比较简单,下面的示例演示其基本的使用和操作。

3.1. 默认显示

这个示例展示了如何在Manim中创建并显示一个立方体(Cube)和一个长方体(Prism)。

# 创建一个立方体
cube = Cube()
# 创建一个棱柱
prism = Prism()

3.2. 变换颜色

在这个示例中,首先创建了一个红色的立方体和一个蓝色的长方体。

接着,立方体逐渐变化为绿色,而长方体逐渐变化为黄色。

实际动画中,通过颜色的变换可以更好地演示形状属性的动态变化。

# 创建一个立方体
cube = Cube()
cube2 = Cube(fill_color=RED) # 创建一个棱柱
prism = Prism()
prism2 = Prism(fill_color=GREEN)

3.3. 移动和旋转

此示例首先展示了一个立方体和一个长方体。

接下来,让立方体向右移动,而长方体向左移动,然后立方体顺时针旋转45度,而长方体则逆时针旋转45度。

这种移动和旋转的效果可以生动地展示三维空间中的几何变换。

# 创建一个立方体
cube = Cube(fill_color=RED)
# 创建一个棱柱
prism = Prism(fill_color=GREEN) # 移动
self.play(
cube.animate.shift(RIGHT),
prism.animate.shift(LEFT),
)
# 旋转
self.play(
cube.animate.rotate(PI / 4),
prism.animate.rotate(-PI / 4),
)

3.4. 组合使用

在这个示例中,同样先创建一个立方体和一个长方体。

然后将这两个形状组合成一个整体,再整体向上移动,并旋转一个小角度。

这种组合使用的方式可以展示如何在Manim中处理和组织多个形状,以及如何对它们进行整体的动画效果。

# 创建一个立方体
cube = Cube(fill_color=RED)
# 创建一个棱柱
prism = Prism(fill_color=GREEN)
# 将立方体放在棱柱的右边
cube.next_to(prism, RIGHT) # 组合使用
vg = VGroup(cube, prism) # 整体移动组合
self.play(vg.animate.shift(UP))
# 整体旋转组合
self.play(vg.animate.rotate(PI / 2, axis=UP))

4. 附件

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

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

manim边学边做--立方体和棱柱体的更多相关文章

  1. 学EE做硬件找工作不如学CS做软件,为什么会这样?

    学EE做硬件找工作不如学CS做软件,为什么会这样? 电子工程(EE)就业最好的方向居然是转计算机,也许让有的人觉得很不公平,EE也是很重要的学科,我们学习也很努力,为什么就业会不如CS?也有的人好奇, ...

  2. 牛腩学Kotlin做Android应用

    牛腩学Kotlin做Android应用,蹭热度视频,边学边做, 01-kotlin插件安装及hello world 02-kotlin基础语法速览 哔哩哔哩观看地址:http://www.bilibi ...

  3. php实现记忆化递归--以斐波那契数列为例(还是以边学边做为主,注重练习)

    php实现记忆化递归--以斐波那契数列为例(还是以边学边做为主,注重练习) 一.总结 1.递归不优化的话,30层开外就有点吃力了 2.php因为定义变量的时候不用定义变量类型,所以数组里面的类型也是p ...

  4. html5-3 html5标签(热点地图如何实现)(边学边做)

    html5-3 html5标签(热点地图如何实现)(边学边做) 一.总结 一句话总结:热点地图用绝对定位实现. 1.自定义列表怎么弄? dl  自定义列表dt  自定义标题dd  自定义列表内容 2. ...

  5. 第一份开发工作,边学边做android

    我刚刚毕业,在培训学校学的Java web开发,虽然学的没有大学生那么丰富细致,没有他们理论基础扎实,但是这是我学习软件开发的唯一方式了. 从小学我学习就是倒数2.3等,所有人都认为我是个没法学习的孩 ...

  6. 边学边做,简单的 GraphQL 实例

    项目中有功能要调用 API,对方 API 用的是 GraphQL 实现,就简单学了下,感叹技术进步真快,Facebook 发明的这玩意儿咋这么牛逼,使前端开发人员变得主动起来,想要什么接口.返回什么结 ...

  7. LabVIEW Actor Framwork (2)________ 边学边做server&client

    回顾下初始需求: 现在要做一个类似聊天的demo,一个server端,若干个client端:首先是server启动,通过server可以打开若干个client端,然后每个client可以独立给serv ...

  8. 牛腩学ASP.NET CORE做博客(视频)

    牛腩学习ASP.NET CORE做的项目,边学边做. 目录: 01-dotnetcore网站部署到centos7系统上(时长 2:03:16) 02-前期准备及项目搭建 (时长:0:23:35) 03 ...

  9. 牛腩学用MUI做手机APP

    斗鱼直播间直播学习撸码,最终目标是用MUI做一个手机APP(暂定android平台,攒钱买IPHONE 7SE!!!),直播内容含整个软件APP的制作过程(含后台接口的制作,放到自己买的阿里云服务器, ...

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

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

随机推荐

  1. 卷积神经网络CNN实战:MINST手写数字识别——数据集下载与网络训练

    数据集下载 这一部分比较简单,就不过多赘述了,把代码粘贴到自己的项目文件里,运行一下就可以下载了. from torchvision import datasets, transforms # 定义数 ...

  2. 卡农 -- HNOI2011 -- DP&组合

    卡农 -- \(HNOI2011\) $$luogu$$ $$HZOI$$ 题意 给定一个 集合 $ A= { 1 \le x \le n | x } $ , 求出其 \(m\) 个不相同的且不为空集 ...

  3. LaTeX 三种短横线的区别

    在 LaTeX 中,有三种基本的短横线,它们各自的长度和用法都有所不同.这三种短横线分别是连字符.短划线(或数字短横)和长划线.下面是它们的具体描述和用法: 连字符 (Hyphen, '-') 用法: ...

  4. PHP转Go系列 | ThinkPHP与Gin框架之Redis延时消息队列技术实践

    大家好,我是码农先森. 我们在某宝或某多多上抢购商品时,如果只是下了订单但没有进行实际的支付,那在订单页面会有一个支付倒计时,要是过了这个时间点那么订单便会自动取消.在这样的业务场景中,一般情况下就会 ...

  5. (Ljava/lang/String;)Ljava/util/List;

    背景:原正常代码,更改类名后,重新运行 报错:(Ljava/lang/String;)Ljava/util/List; 解决:mvn clean 后 compile,再运行,正常

  6. sicp每日一题[1.44]

    Exercise 1.44 The idea of smoothing a function is an important concept in signal processing. If f is ...

  7. Vscode 远程切换Python虚拟环境

    在VSCode中远程切换Python虚拟环境是一个涉及多个步骤的过程,包括安装必要的扩展.连接到远程服务器.创建或激活虚拟环境,并在VSCode中选择相应的Python解释器.以下是一个详细的步骤指南 ...

  8. SuperMap iDesktopX创建HBase数据源并导入数据

    需提前部署HBase集群,HBase环境搭建请查看文章https://www.cnblogs.com/zhangyongli2011/p/12034628.html 本文基于10.1.1 win版本s ...

  9. Task 笔记

    1.计时器类Stopwatch Stopwatch stopwatch=new Stopwatch() stopwatch.Start();//开始计时 stopwatch.Stop();//停止计时 ...

  10. 前端 vue.config.js 处理跨域问题 proxy 代理

    问: 业务中的跨域问题是如何解决的? 这个的话我们公司⼤概分了俩种环境,⼀种是开发的时候,⼀种是上⽣产的时候,开发的时候因为要对 接的后端可能会⽐较多,他们配置不太⽅便,这个时候采取的是⽐较⽅便的前端 ...