翼度科技»论坛 编程开发 python 查看内容

manim边学边做--圆弧形

6

主题

6

帖子

18

积分

新手上路

Rank: 1

积分
18
圆弧形可以算是一种特殊的圆形,它是圆形的一部分。
manim中,单独为圆弧形状封装了几个模块:

  • Arc:通用的圆弧,根据半径和角度来绘制圆弧
  • ArcBetweenPoints:根据两个点和角度来绘制圆弧
  • AnnularSector:环形圆弧,相当于是圆环的一部分
  • Sector:扇形,始终是1/4个圆环。
其中,ArcBetweenPoints和AnnularSector继承自Arc,Sector继承自AnnularSector。

圆弧系列的模块位于manim中的Mobject之下。
1. 主要参数

模块Arc的主要参数有:
参数名称类型说明radiusfloat圆弧的半径start_anglefloat圆弧开始的弧度anglefloat圆弧的弧度num_componentsint组成弧的片段,这个值越大,弧越圆滑arc_centerPoint3D圆弧对应的圆心位置圆弧的起点和终点是由start_angle和angle控制的,
start_angle参数控制圆弧的起点,默认值是0(圆心右边为0度);
angle参数是圆弧的弧度,start_angle + angle的值就是圆弧的终点,
angle是逆时针计算的。

模块ArcBetweenPoints的主要参数有:
参数名称类型说明startPoint3D圆弧的起点endPoint3D圆弧的终点anglefloat圆弧的弧度raduisfloat圆弧的半径这个模块是根据两个点(start和end)来绘制圆弧,
angle和raduis参数只能设置一个,用来控制圆弧的弧长。
start和end固定时,angle越大,弧长越长;raduis越大,弧长越短。
模块AnnularSector的主要参数有:
参数名称类型说明inner_radiusfloat环状弧形的内半径outer_radiusfloat环状弧形的外半径start_anglefloat环状弧形开始的弧度anglefloat环状弧形的弧度inner_radius和outer_radius的差形成了一个环形;
start_angle和angle的含义与模块Arc中的同名参数一样。
模块Sector的主要参数:
参数名称类型说明inner_radiusfloat环状弧形的内半径outer_radiusfloat环状弧形的外半径Sector模块只有inner_radius和outer_radius两个参数,因为它默认为1/4个圆环。
2. 主要方法

这几个模块的作用主要是展示图形,所以方法不多,常用的有两个:
名称说明get_arc_center获取弧形当前的圆心坐标move_arc_center_to设置弧形新的圆心坐标3. 使用示例

下面分别针对4种圆弧形的模块的参数,演示一些示例。
3.1. 通用圆弧

通用的的圆弧Arc是最常用的,start_angle和angle设置圆弧的起点和弧度,
arc_center设置圆弧的位置,radius控制圆弧的大小。
  1. Arc(
  2.     arc_center=LEFT * 2,
  3.     angle=PI,
  4. )
  5. Arc(
  6.     radius=1.5,
  7.     arc_center=RIGHT,
  8.     angle=PI,
  9. )
  10. Arc(
  11.     start_angle=PI / 2,
  12.     angle=PI / 2,
  13.     arc_center=LEFT * 2 + DOWN * 2,
  14. )
  15. Arc(
  16.     start_angle=PI,
  17.     angle=PI * 3 / 2,
  18.     arc_center=RIGHT + DOWN * 1.5,
  19. )
复制代码

3.2. 根据两点生成圆弧

从固定的两点生成圆弧ArcBetweenPoints也是在制作动画时常用的方式,
参数start和end设置圆弧的起点和终点;
angle和radius设置圆弧的弯曲程度,这两个参数只能使用一个,同时设置时只有radius生
  1. ArcBetweenPoints(
  2.     start.get_center(),
  3.     end.get_center(),
  4.     radius=0.8,
  5. )
  6. ArcBetweenPoints(
  7.     start.get_center(),
  8.     end.get_center(),
  9.     radius=1.6,
  10. )
  11. ArcBetweenPoints(
  12.     start.get_center(),
  13.     end.get_center(),
  14.     angle=PI / 2,
  15. )
  16. ArcBetweenPoints(
  17.     start.get_center(),
  18.     end.get_center(),
  19.     angle=PI,
  20. )
复制代码
前两个示例用radius控制圆弧的度数,后两个示例用angle控制圆弧的度数。

3.3. 环形的圆弧

环形的圆弧AnnularSector可以理解成增加了厚度的圆弧。
它可以使用Arc的参数,不同之处在于它的半径有两个,一个是inner_radius,一个是outer_radius。
这两个半径之差就是环形的厚度。
  1. AnnularSector(
  2.     inner_radius=0.5,
  3.     outer_radius=1.5,
  4.     angle=PI,
  5. )
  6. AnnularSector(
  7.     inner_radius=0.5,
  8.     outer_radius=0.8,
  9.     angle=PI,
  10. )
  11. AnnularSector(
  12.     start_angle=PI / 2,
  13.     angle=PI / 2,
  14.     inner_radius=0.5,
  15.     outer_radius=1.5,
  16. )
  17. AnnularSector(
  18.     start_angle=PI,
  19.     angle=PI * 3 / 2,
  20.     inner_radius=0.5,
  21.     outer_radius=0.8,
  22. )
复制代码

3.4. 扇形

扇形Sector是一种简化的AnnularSector,它固定为1/4个圆环。
  1. Sector(
  2.     inner_radius=0.5,
  3.     outer_radius=1.5,
  4. )
  5. Sector(
  6.     inner_radius=0.5,
  7.     outer_radius=0.8,
  8. )
  9. Sector(
  10.     inner_radius=1,
  11.     outer_radius=1.5,
  12. )
  13. Sector(
  14.     inner_radius=0.3,
  15.     outer_radius=1.8,
  16. )
复制代码

4. 附件

文中完整的代码放在网盘中了(arc.py),
下载地址: 完整代码 (访问密码: 6872)

来源:https://www.cnblogs.com/wang_yb/p/18368851
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具