manim边做边学--直角平面

瑞星  金牌会员 | 2024-10-20 08:22:29 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 859|帖子 859|积分 2577

直角平面NumberPlane是Manim库中用于创建二维坐标平面的对象,它可以帮助用户在场景中可视化坐标轴以及网格线。
通过坐标轴、网格线以及刻度,它能够动态地展示函数曲线、几何图形以及它们的变更过程,使得复杂的数学概念变得直观易懂。
NumberPlane提供了x轴y轴,通常是中心对称的,
默认情况下,NumberPlane会显示背景网格,这对于展示数学函数、几何外形等非常有帮助。
我们可以定义坐标平面的范围,为坐标轴添加标签,并将其他外形、函数或动画放置在NumberPlane上,从而在动画中展示数学概念。
下面将介绍Manim中的NumberPlane对象以及一些常用的使用示例。
1. 重要参数

NumberPlane的重要参数有:
参数名称类型说明x_rangeSequence[float]直角平面的横坐标轴范围,间隔y_rangeSequence[float]直角平面的纵坐标轴范围,间隔x_lengthfloat直角平面宽度y_lengthfloat直角平面高度background_line_styledict直角平面背景网格线的样式faded_line_styledict淡化网格线的样式,用于辅助背景网格线faded_line_ratioint定义淡化网格线与背景网格线的比例make_smooth_after_applying_functionsbool应用函数后是否进行平滑处理直角平面中,常见的是坐标轴和背景网格线,其样式通过background_line_style参数来设置。
此外,NumberPlane中还有个faded_line_style参数,它用于定义淡化网格线的样式,
这些淡化网格线通常用于辅助背景网格线,以提供更过细的视觉效果或帮助区分不同的坐标区域。
一般情况下,不需要使用faded_line_style和faded_line_ratio。
2. 重要方法

Manim中的坐标体系CoordinateSystem类提供了许多方法,包罗:

  • 获取和设置坐标体系属性的方法
  • 坐标系中坐标和屏幕上坐标转换的方法
  • 坐标系中绘制图形(点,线,面等等)的方法
后续介绍各种坐标体系时会用在示例中用到此中的方法,这里不再一一介绍。
而NumberPlane继续自CoordinateSystem类,以是可以直接使用它的各种方法。
3. 使用示例

下面通过几个示例展示NumberPlane的功能。
3.1. 底子二维坐标平面

默认情况下,NumberPlane显示坐标轴和背景网格线,帮助用户清楚地看到坐标系的划分。
坐标轴默认是白色的,背景网格线默认是蓝色的。
下面的示例展示一个标准的二维坐标平面,包含x轴y轴
x轴y轴的范围分别设置为-7~7和-4~4,网格线间隔为1。
  1. plane = NumberPlane(
  2.     x_range=[-7, 7],
  3.     y_range=[-4, 4],
  4.     x_length=6,
  5.     y_length=4,
  6. )
复制代码

3.2. 自定义网格线样式

NumberPlane的背景网格线和淡化网格线的样式都可以自定义,
下面的示例对背景网格线淡化网格线的颜色、宽度和透明度进行了设置。
背景网格线是青色,淡化网格线是灰色。
  1. plane = NumberPlane(
  2.     x_range=[-7, 7],
  3.     y_range=[-4, 4],
  4.     x_length=6,
  5.     y_length=4,
  6.     background_line_style={
  7.         "stroke_color": TEAL,
  8.         "stroke_width": 4,
  9.         "stroke_opacity": 0.6,
  10.     },
  11.     faded_line_style={
  12.         "stroke_color": GREY,
  13.         "stroke_opacity": 0.3,
  14.     },
  15.     faded_line_ratio=2,
  16. )
复制代码
注意,这里还设置了faded_line_ratio=2,意思是每1格背景网格线相当于2格的淡化网格线

3.3. 不同比例的坐标轴

默认情况下,NumberPlane的X轴Y轴的间隔是相称的,
实际上,通过设置不同的坐标范围和显示范围,可以创建不同比例的坐标轴。
也就是Y轴的间隔可以大于X轴的间隔,也可以小于X轴的间隔。
  1. # Y轴的间隔大于X轴的间隔
  2. plane1 = NumberPlane(
  3.     x_range=[-7, 7],
  4.     y_range=[-3, 3],
  5.     x_length=3,
  6.     y_length=3,
  7. )
  8. # Y轴的间隔小于X轴的间隔
  9. plane2 = NumberPlane(
  10.     x_range=[-3, 3],
  11.     y_range=[-7, 7],
  12.     x_length=3,
  13.     y_length=3,
  14. )
复制代码

3.4. 绘制函数图像

使用NumberPlane最大的用途就在于可以在此中绘制函数图像,在坐标系中绘制图像或几何图形,
可以更方便的定位它们的位置,调解它们之间的变更关系。
下面的示例在坐标系中绘制了2个函数,使用了坐标系基类提供的画图方法:plot_parametric_curve。
  1. plane = NumberPlane(
  2.     x_range=[-4, 4],
  3.     y_range=[-16, 16],
  4.     x_length=6,
  5.     y_length=4,
  6. )
  7. g1 = plane.plot_parametric_curve(
  8.     lambda x: [x, x**2],
  9.     t_range=[-3.5, 3.5, 0.01],
  10. )
  11. g2 = plane.plot_parametric_curve(
  12.     lambda x: [x, x**3],
  13.     t_range=[-2.5, 2.5, 0.01],
  14. )
复制代码

4. 附件

文中的代码只是关键部分的截取,完整的代码共享在网盘中(number_plane.py),
下载地址: 完整代码 (访问密码: 6872)

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

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

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

瑞星

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表