manim边学边做--空心多边形
空心的多边形Cutout是一种比较特殊的多边形,主要用于解决与形状、大小、位置等相关的数学问题。
Cutout多边形可以定义物体表面的空洞或凹陷部分,从而更准确地模拟现实世界中的复杂形状。
比如,在PCB(印制电路板)设计中,通过放置Cutout空心的多边形,设计师可以精确地控制铜的覆盖区域,从而优化电路布局和信号完整性。
在机械加工时,Cutout多边形也可以用于指导切割工具的运动轨迹,以便于在材料上形成精确的空洞或凹槽。
其实,在我们上学期间学习几何时,也经常遇到Cutout多边形,只是它一般不以Cutout这个名称出现。
比如,计算复杂图形的面积时,经常将其分割成几个简单的多边形(如三角形、矩形等),然后分别计算;
在证明两个图形面积相等、两线段相等或两角相等时,有时需要构造辅助线或辅助图形,这实质上也是一种“cut out”操作。
manim中虽然也可以通过组合前面几篇文章中提及的几何图形对象来构造Cutout图形,
但是直接用其manim提供的Cutout对象则更简单方便。
1. 主要参数
Cutout对象的主要参数就两个。
| 参数名称 | 类型 | 说明 |
|---|---|---|
| main_shape | VMobject | 被切割的主体形状 |
| mobjects | *VMobject | 从main_shape中切割出的一个或多个小形状 |
2. 使用示例
Cutout使用起来比较简单,下面的通用示例中展示空心多边形的使用方式,
其余几个例子演示的是Cutout在一些常见几何题目中的应用。
2.1. 通用示例
通用示例中,演示Cutout的使用方式,在一个大的四边形中切出三角形,四边形,五边形和六边形。
main = Square()scale(2)
sub1 = Triangle().scale(0.5)
sub2 = Square().scale(0.5)
sub3 = RegularPolygon(5).scale(0.5)
sub4 = RegularPolygon(6).scale(0.5)
Cutout(
main,
sub1,
sub2,
sub3,
sub4,
fill_opacity=1,
color=BLUE,
stroke_color=YELLOW,
)

2.2. 矩形中的三角形
求解矩形中的一个三角形的面积是常见的题型,利用Cutout,可以构造矩形中“切割”一个三角形的效果。
points = [A, B, C, D]
sub_points = [D, F, E]
main = Polygon(*points)
sub = Polygon(*sub_points)
Cutout(
main,
sub,
fill_opacity=1,
color=BLUE,
stroke_color=GREEN,
)

2.3. 圆的切线
圆的切线相关问题也一样,可以沿着切线进行“切割”。
下面的示例中,沿着小圆的切线切割了一个三角形。
main = Polygon(A, P, B, O)
sub = Polygon(A, P, O)
Cutout(
main,
sub,
fill_opacity=1,
color=BLUE,
stroke_color=GREEN,
)

2.4. 梯形的中位线
梯形的中位线定理证明中,关键就是两个全等三角形的全等,
下面的示例将梯形的其他部分“切割”掉,只保留两个全等三角形。
main = Polygon(A, B, F, G, D)
sub = Polygon(A, F, C, D)
Cutout(
main,
sub,
fill_opacity=1,
color=BLUE,
stroke_color=GREEN,
)

3. 附件
文中完整的代码放在网盘中了(cutout.py),
下载地址: 完整代码 (访问密码: 6872)
manim边学边做--空心多边形的更多相关文章
- 学EE做硬件找工作不如学CS做软件,为什么会这样?
学EE做硬件找工作不如学CS做软件,为什么会这样? 电子工程(EE)就业最好的方向居然是转计算机,也许让有的人觉得很不公平,EE也是很重要的学科,我们学习也很努力,为什么就业会不如CS?也有的人好奇, ...
- 牛腩学Kotlin做Android应用
牛腩学Kotlin做Android应用,蹭热度视频,边学边做, 01-kotlin插件安装及hello world 02-kotlin基础语法速览 哔哩哔哩观看地址:http://www.bilibi ...
- php实现记忆化递归--以斐波那契数列为例(还是以边学边做为主,注重练习)
php实现记忆化递归--以斐波那契数列为例(还是以边学边做为主,注重练习) 一.总结 1.递归不优化的话,30层开外就有点吃力了 2.php因为定义变量的时候不用定义变量类型,所以数组里面的类型也是p ...
- html5-3 html5标签(热点地图如何实现)(边学边做)
html5-3 html5标签(热点地图如何实现)(边学边做) 一.总结 一句话总结:热点地图用绝对定位实现. 1.自定义列表怎么弄? dl 自定义列表dt 自定义标题dd 自定义列表内容 2. ...
- 第一份开发工作,边学边做android
我刚刚毕业,在培训学校学的Java web开发,虽然学的没有大学生那么丰富细致,没有他们理论基础扎实,但是这是我学习软件开发的唯一方式了. 从小学我学习就是倒数2.3等,所有人都认为我是个没法学习的孩 ...
- 边学边做,简单的 GraphQL 实例
项目中有功能要调用 API,对方 API 用的是 GraphQL 实现,就简单学了下,感叹技术进步真快,Facebook 发明的这玩意儿咋这么牛逼,使前端开发人员变得主动起来,想要什么接口.返回什么结 ...
- LabVIEW Actor Framwork (2)________ 边学边做server&client
回顾下初始需求: 现在要做一个类似聊天的demo,一个server端,若干个client端:首先是server启动,通过server可以打开若干个client端,然后每个client可以独立给serv ...
- 牛腩学ASP.NET CORE做博客(视频)
牛腩学习ASP.NET CORE做的项目,边学边做. 目录: 01-dotnetcore网站部署到centos7系统上(时长 2:03:16) 02-前期准备及项目搭建 (时长:0:23:35) 03 ...
- 牛腩学用MUI做手机APP
斗鱼直播间直播学习撸码,最终目标是用MUI做一个手机APP(暂定android平台,攒钱买IPHONE 7SE!!!),直播内容含整个软件APP的制作过程(含后台接口的制作,放到自己买的阿里云服务器, ...
- 技术的止境(客户价值第一,快速实现第二,边做边学,迅速成为牛人。紧贴客户的需求去做技术,立于不败之地。追求的目标:把一项产品去做好,用产品去养活自己和家人)good
作为一个依靠技术来谋生的程序员,我最近一直在思考一个问题,有限的生命里,面对无限的技术更新,我要研究到什么程度才能算是完成我的成为技术大牛的目标呢?换而言之,那就是技术的止境在哪儿呢?深入的思考下去, ...
随机推荐
- Figma 替代品 Excalidraw 安装和使用教程
如今远程办公盛行,一个好用的在线白板工具对于团队协作至关重要.然而,市面上的大多数白板应用要么功能单一,要么操作复杂,难以满足用户的多样化需求.尤其是在进行头脑风暴.流程设计或产品原型绘制时,我们常常 ...
- RS485总线防雷保护方案(转)
RS485作为最为最常用的电表通讯方式之一.日常生活中雷电和静电干扰已经成为485通信总线在实际工程经常遇到的问题.故如何对芯片以及总线进行有效的保护,是摆在每一个使用者面前的一个问题.在这里,我们主 ...
- 一张图看懂 SQL 的各种 JOIN 用法(含数据集和韦恩图)
- 《最新出炉》系列初窥篇-Python+Playwright自动化测试-59 - 判断元素是否显示 - 上篇
1.简介 有些页面元素的生命周期如同流星一闪,昙花一现.我们也不知道这个元素在没在页面中出现过,为了捕获这一美好瞬间,让其成为永恒.我们就来判断元素是否显示出现过. 在操作元素之前,可以先判断元素的状 ...
- 【MySQL】二级MySQL考试 救场帮助表
周六去考二级,应用第一题就是添加外键约束 草,写了半天老说语法不对,然后急中生智,觉得默认的库里应该有文档说明表 以下是SQL查询过程: -- 猜测是在mysql库里面 mysql> USE m ...
- 人形机器人sim2real —— 致使现实环境与仿真环境下的差距的因素 —— sim2real
下图引自:https://b2b.baidu.com/q/aland?q=7B7474317C2E72330F621B0F7D6F09247E747E610623742B&id=qid599a ...
- 数值优化算法-BFGS
参考: https://www.cnblogs.com/Leo_wl/p/3367323.html 牛顿法: 使用牛顿法优化函数 f(θ) 最小值时,每次计算获得新的\(θ\)值,即\(θ_{k+1} ...
- conda报错、anconda报错:requests.exceptions.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
anconda报错,报错信息: requests.exceptions.JSONDecodeError: Expecting value: line 1 column 1 (char 0) 不能使用c ...
- springboot实现事务管理
Springboot实现事务步骤1.在启动类加上@EnableTransactionManagement 2.在业务层方法上加 @Transactional(rollbackFor = Excepti ...
- Python网页应用开发神器fac 0.3.0全新版本发布
大家好我是费老师,在Python生态中,有很多以Python为主要开发语言,实现网页应用开发的框架,其中最为知名的有Dash.flet.streamlit.gradio.nicegui等. 如果综合考 ...