当前位置: 首页 > news >正文

用python创建极坐标平面

极坐标的介绍   

http://t.csdnimg.cn/ucau3icon-default.png?t=N7T8http://t.csdnimg.cn/ucau3这个文章里可以知道极坐标的基本知识,接下来实现极坐标的绘制

PolarPlane 是 Manim(一个用于数学动画的Python库)中的一个类,用于创建极坐标平面。与笛卡尔坐标系不同,极坐标系是基于角度和半径来定位点的。具体来说,这里的每个点由一个角度和距离原点的距离表示。

PolarPlane 的主要特性:

  1. 极坐标系PolarPlane 用极径(r)和极角(θ)来展示坐标系,便于处理与角度和半径相关的数学概念。

  2. 网格和坐标:它通常会显示一个网格,以帮助观众理解不同的极径和角度。

  3. 灵活性:可以与其他 Manim 对象结合使用,可以在极坐标系中绘制图形或曲线。

使用场景:

  • 显示极坐标相关的数学概念,如极函数、幅角等。
  • 动画涉及到旋转或与角度相关的变化。
  • 解析极坐标方程图像。

 绘制极坐标的构造函数

构造函数:

PolarPlane(radius_max=4.0, size=None, radius_step=1, azimuth_step=None,azimuth_units='PI radians', azimuth_compact_fraction=True, azimuth_offset=0,azimuth_direction='CCW', azimuth_label_buff=0.1, azimuth_label_font_size=24,radius_config=None, background_line_style=None, faded_line_style=None, 
faded_line_ratio=1, make_smooth_after_applying_functions=True, **kwargs)

PolarPlane 类的构造函数接受多个参数,以便用户自定义极坐标平面的特性。下面是每个参数的解释:

参数解释

  1. radius_max: 极坐标平面上半径的最大值。默认为 4.0

  2. size: 极坐标平面的大小。如果未指定,通常会根据 radius_max 自动计算。

  3. radius_step: 半径标记之间的间隔。例如,如果设置为 1 ,则每个单位的半径都会有标记。

  4. azimuth_step: 指定 azimuth(方位角)标记之间的角度步长,例如 30 度 (PI/6)。

  5. azimuth_units: 指定方位角的单位,可以是 ‘degrees’ 或 ‘PI radians’。默认为 ‘PI radians’

  6. azimuth_compact_fraction: 是否以紧凑的分数形式显示方位角标签(例如,π/2 而不是 1.5708)。默认为 True

  7. azimuth_offset: 方位角的偏移量,以弧度为单位。默认值为 0

  8. azimuth_direction: 指定方位角的递增方向,可以是 'CW'(顺时针)或 'CCW'(逆时针)。默认为 'CCW'

  9. azimuth_label_buff: 方位角标签与极坐标图的距离,增加此数值可以使标签更远离原点。

  10. azimuth_label_font_size: 方位角标签的字体大小,默认为 24

  11. radius_config: 自定义半径标记样式,可以是颜色、线条样式等。

  12. background_line_style: 背景线的样式,通常用于极轨迹和背景网格的样式。

  13. faded_line_style: 淡化线条的样式,通常用于控制一些辅助线的风格。

  14. faded_line_ratio: 控制淡化线条的比例,默认值为 1

  15. make_smooth_after_applying_functions: 在应用函数后是否使线条平滑,默认为 True

  16. kwargs: 其他参数,传递给基类或其他组件。详细看该文章:http://t.csdnimg.cn/6PKEbicon-default.png?t=N7T8http://t.csdnimg.cn/6PKEb

 示例代码1:

from manim import *  class PolarPlaneExample1122(Scene):  def construct(self):  polarplane_pi01 = PolarPlane(azimuth_units="PI radians",size=5,azimuth_label_font_size=33.6,radius_config={"font_size": 33.6},).add_coordinates()self.add(polarplane_pi01)polar_plane = PolarPlane(  #radius_max=7.5,  size=5,  radius_step=1,  # 修改为1,显示更细的半径刻度  #azimuth_step=PI/5,  # 修改为PI/4,显示更多的角度刻度  azimuth_units='PI radians',  #azimuth_compact_fraction=True,  #azimuth_offset=PI/4,  #azimuth_direction='CCW',  #azimuth_label_buff=0.9,  azimuth_label_font_size=33.6,radius_config={"font_size": 33.6},#radius_config={"color": BLUE},  #background_line_style={"stroke_color": GREY_A, "stroke_width":10},  #faded_line_style={"stroke_color": GREY_B, "stroke_width": 0.5},  #faded_line_ratio=0.5,  #make_smooth_after_applying_functions=True  ).add_coordinates()  self.add(polar_plane)  r = 1  theta = PI / 5  x = r * np.cos(theta)  y = r * np.sin(theta)  point = np.array([x, y, 0])  dot = Dot(point, color=YELLOW)  self.add(dot)  angle_label = MathTex(r"\theta = \frac{\pi}{5}").next_to(dot, UP)  self.add(angle_label)  %manim -qm -v WARNING PolarPlaneExample1122

运行结果:

 示例2:

from manim import *  class PolarPlaneExample2222(Scene):  def construct(self):  # 创建极坐标平面  polar_plane = PolarPlane(azimuth_units="PI radians",size=6,azimuth_label_font_size=33.6,radius_config={"font_size": 33.6}).add_coordinates()  # 添加背景线条  self._init_background_lines(polar_plane)  # 获取轴并添加  axes = polar_plane.get_axes()  self.add(axes)  # 获取坐标标签并添加  coordinate_labels = polar_plane.get_coordinate_labels()  #self.add(coordinate_labels)  # 进行一些动画  self.play(Create(polar_plane))  self.wait(2)  def _init_background_lines(self, polar_plane):  # 使用 _get_lines() 生成背景线条  non_faded_lines, faded_lines = polar_plane._get_lines()  # 添加非淡化线条  self.add(non_faded_lines)  # 添加淡化线条  self.add(faded_lines) 

运行结果:

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 住宅代理和数据中心代理:指纹浏览器用哪个更安全?
  • 使用 LinkedList 实现一个高效的缓存系统
  • easyexcel使用教程--导入导出简单案例
  • 第十二章:设置pod和容器权限-保障集群内节点和⽹络安全
  • “微软蓝屏”事件敲响网络安全的警钟
  • C++(2)(数据的共享与保护)
  • Go语言入门
  • Linux安全与高级应用(四)深入探索MySQL数据库:安装、管理与安全实践
  • Journyx项目管理软件 soap_cgi.pyc XXE漏洞复现
  • 【限流与Sentinel超详细分析】
  • 4.8.双向循环神经网络
  • 【C++综合项目】——基于Boost库的搜索引擎(手把手讲解,小白一看就会!!)
  • 前端web开发HTML+CSS3+移动web(0基础,超详细)——第4天
  • priority_queue模拟实现【C++】
  • FFmpeg源码:av_realloc、av_reallocp、size_mult、av_realloc_f函数分析
  • -------------------- 第二讲-------- 第一节------在此给出链表的基本操作
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • Apache Pulsar 2.1 重磅发布
  • Debian下无root权限使用Python访问Oracle
  • java第三方包学习之lombok
  • js作用域和this的理解
  • mysql外键的使用
  • Redis中的lru算法实现
  • 持续集成与持续部署宝典Part 2:创建持续集成流水线
  • 初识 webpack
  • 动手做个聊天室,前端工程师百无聊赖的人生
  • 基于阿里云移动推送的移动应用推送模式最佳实践
  • 聊聊spring cloud的LoadBalancerAutoConfiguration
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 使用 @font-face
  • 使用common-codec进行md5加密
  • 使用阿里云发布分布式网站,开发时候应该注意什么?
  • 突破自己的技术思维
  • 优化 Vue 项目编译文件大小
  • 在electron中实现跨域请求,无需更改服务器端设置
  • AI算硅基生命吗,为什么?
  • ionic入门之数据绑定显示-1
  • 好程序员大数据教程Hadoop全分布安装(非HA)
  • #如何使用 Qt 5.6 在 Android 上启用 NFC
  • #我与Java虚拟机的故事#连载14:挑战高薪面试必看
  • $(this) 和 this 关键字在 jQuery 中有何不同?
  • $.extend({},旧的,新的);合并对象,后面的覆盖前面的
  • $nextTick的使用场景介绍
  • (07)Hive——窗口函数详解
  • (2024.6.23)最新版MAVEN的安装和配置教程(超详细)
  • (3)选择元素——(17)练习(Exercises)
  • (4) PIVOT 和 UPIVOT 的使用
  • (LeetCode 49)Anagrams
  • (附源码)springboot金融新闻信息服务系统 毕业设计651450
  • (力扣题库)跳跃游戏II(c++)
  • (四)opengl函数加载和错误处理
  • (五)大数据实战——使用模板虚拟机实现hadoop集群虚拟机克隆及网络相关配置
  • (一)utf8mb4_general_ci 和 utf8mb4_unicode_ci 适用排序和比较规则场景
  • (一)VirtualBox安装增强功能
  • (译)计算距离、方位和更多经纬度之间的点