用python创建极坐标平面

news2024/9/27 12:17:15

极坐标的介绍   

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) 

运行结果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1992601.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

汇昌联信数字做拼多多运营怎么做?

在当今电商竞争激烈的环境下,如何有效地在拼多多这样的平台上进行运营,是许多商家和品牌都在思考的问题。汇昌联信数字作为一家致力于提供数字化解决方案的公司,其在拼多多上的运营策略值得深入探讨。本文将详细分析汇昌联信数字在拼多多上的…

【HBZ分享】Spring启动时核心refresh方法流程

refresh核心代码所在位置 在AbstractApplicationContext类中的refresh方法中 refresh的业务流程编排 调用obtainFreshBeanFactory()去创建一个全新的BeanFactory工厂,类型为DefaultListableBeanFctory,其功能为【解析xml】将里面bean标签内容解析成【…

信息学奥林匹克竞赛详解-CSP、NOIP、NOI、IOI是什么

近年来,随着计算机在教育领域的影响力越来越大,信息学奥林匹克竞赛也越来越受关注。 山东省在2017年秋季正式出版了《小学信息技术》,大幅度引入了Scratch、Python等编程语言。 浙江省在2018年的高考选考科目中新增了信息技术,包…

【Qt】图形化和纯代码实现Hello world的比较

本篇文章使用俩种方式实现Qt上的Hello world: 通过图形化的方式,在界面上创建出一个控件,显式Hello world通过纯代码的方式,通过编写代码,在界面上创建控件,显示Hello world 图形化方式 双击Forms文件中的…

CTFHUB-web-RCE-读取源代码

开启题目 网页发现了源代码,还是和前几题一样是 php:// ,提示说 flag 在代码中,并且在 /flag 文件夹中,题目名字也叫读取源代码。 php://filter 是一种元封装器,专门用于数据流的过滤和筛选。与传统的文件操作函数相比…

selenium的UI自动化框架入门

环境准备 python、pycharme、chromedriver google下载的官网地址 https://google.cn/chrome/ chromedriver chromedriver的下载 https://chromedriver.storage.googleapis.com/index.html chromedriver配置环境变量 C:\Users\Administrator\.cache\selenium\chromedrive…

Python的安装环境以及应用

1.环境python2,Python 最新安装3.12可以使用源码安装 查看安装包 [rootpython001 ~]# yum list installed | grep epel 3[rootpython001 ~]# yum list installed | grep python [rootpython001 ~]# yum -y install python3 安装python3 查看版本 [root…

【LLM大模型】中国人工智能系列白皮书--大模型技术

近期,中国人工智能学会发布了 《2023 中国人工智能系列白皮书–大模型技术(2023版)》,涵盖了大模型发展历程、技术概述、风险与挑战以及未来发展展望等。 👉CSDN大礼包🎁:全网最全《LLM大模型入…

控制某些请求不记录日志

说明:由于统一拦截日志请求,导致所有匹配的请求都会打印日志,这里需要控制有些请求执行不打印日志,比如定时每隔几秒执行某些请求。 具体实现如下: 一、自定义注解,如下: /** * Description: …

代码随想录算法(哈希表一)

目录 242有效的字母异位词 349两个数组的交集​编辑 set解决 数组解决 1两数之和 242有效的字母异位词 如果使用暴力解法的话直接可以使用两层for循环 我们平时用到的哈希表的数据结构就是数组 set和map 用到哈希表的话 就可以想这三个数据结构 这个题的话只有小写的英文…

Advanced IP Scanner - 网络管理工具介绍

Advanced IP Scanner 是一款免费、快速且用户友好的网络扫描工具。它能够帮助用户扫描局域网(LAN)中的所有设备,提供详细的设备信息,包括IP地址、MAC地址、设备名称和厂商信息。该工具对IT管理员和普通用户都非常有用,…

Java0 Java基础知识

预备知识 我们各种各样的信息是怎么存储到计算中的? 二进制 二进制是什么 由德国的莱布尼茨于 1679 年发明。 二进制数据是用0 和 1 两个数码来表示的数。它的基数为 2 ,进位规则是"逢二进一" ,数字计算机只能识别和处理由0和1符…

联想电脑重装系统时无法发现硬盘

🏆本文收录于《CSDN问答解惑-专业版》专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收…

C语言—水手分椰子问题

自己敲得&#xff1a; #include<stdio.h> #include<math.h> int main() {int i, j;float n;for (i 0;; i){n 5 * i 1;for (j 0; j < 4; j)//要求这四次每次的n都是整数才行{n n * 5 / 4 1;if (fmod(n, 1) ! 0) break;//或者 if(n!(int)n) break;}if (j …

TypeScript位运算

参考文献&#xff1a; https://blog.csdn.net/xuaner8786/article/details/138858747 https://www.runoob.com/typescript/ts-operators.html 位运算符 TypeScript 中的位运算符用于在二进制位级别上操作数字。这些运算符在处理整数和底层系统编程时特别有用。以下是一些使用…

C:冒泡排序

1、冒泡排序介绍&#xff1a; 冒泡排序的核心思想就是&#xff1a;两两相邻的元素进行比较。 先用一个例子来帮助大家理解一下冒泡排序的算法是怎们进行的 有一排高矮不同的人站成一列&#xff0c;要按照从矮到高的顺序重新排队。 冒泡排序的方法就是&#xff0c;从第一个人…

【栈和队列】常见面试题

文章目录 1.[有效的括号](https://leetcode.cn/problems/valid-parentheses/description/)1.1 题目要求1.2 利用栈解决 2. [用队列实现栈](https://leetcode.cn/problems/implement-stack-using-queues/description/)2.1 题目要求2.2 用队列实现栈 3.[用栈实现队列](https://le…

cesium gltf模型

cesium 支持的三维模型格式包括GLTF和GLB&#xff08;二进制glTF文件&#xff09;。 本文通过使用Entity图元的modelGraphics对象来加载gltf模型&#xff0c;简单对gltf模型的加载进行了封装。通过设置模型的欧拉角&#xff0c;可以计算模型的朝向。 1 3D数学中模型旋转的方式…

数据定义和操作

一、数据定义语言和操作语言 1. 分析需求设计数据库表 根据“优乐网”系统需求&#xff1a; 此系统满足以下需求&#xff1a; 系统支持生成商品的入库和出库。入库之后的商品可以在平台显示 所有用户都可以浏览系统的商品信息&#xff0c;只有注册用户才能订购团购商品和服…

机械学习—零基础学习日志(python编程)

零基础为了学人工智能&#xff0c;正在艰苦的学习 昨天给高等数学的学习按下暂停键&#xff0c;现在开始学习python编程。 我学习的思路是直接去阿里云的AI学习课堂里面学习。 整体感觉&#xff0c;阿里云的AI课堂还是有一些乱&#xff0c;早期课程和新出内容没有更新和归档…