二维点类表示笛卡尔坐标和极坐标。

point2d的Python项目详细描述


点2d

point2d模块只包含在类:Point2D上。

此类描述二维点的笛卡尔坐标和极坐标。它同时用笛卡尔坐标和极坐标表示二维空间中点(向量)的行为,以便这些点(向量)可以互换使用。更改一个坐标将更改另一个坐标的值,即更改笛卡尔坐标时,极坐标将重新计算,反之亦然。

不需要调用任何方法来重新计算任何坐标,这是自动完成的,例如,如果设置了新的xra将被更新。

安装

从这个文件夹运行python setup.py install

用法

您可以通过point2d.Point2Dfrom point2d import Point2D使用该类,并直接从代码中使用Point2D

属性

Point2D类具有由xy表示的笛卡尔坐标,以及由ra表示的极坐标(半径和角度)。如果更改xy的值,则ra将自动更新,反之亦然。

创建点2d

创建点2d有五种方法:

  1. 没有任何争论。这将初始化为点(0,0)。
>>>Point2D()Point2D(0.0,0.0)(0.0,0.0)
  1. xy作为单独的参数。
>>>Point2D(-1.0,0.0)Point2D(-1.0,0.0)(1.0,3.141592653589793)
  1. xy作为一个元组。
>>>Point2D((-1.0,0.0))Point2D(-1.0,0.0)(1.0,3.141592653589793)
  1. ra作为单独的参数。
>>>Point2D(r=1.0,a=math.pi)Point2D(-1.0,1.2246467991473532e-16)(1.0,3.141592653589793)
  1. 复制另一个点2d:
>>>Point2D(Point2D(-1.0,0.0))Point2D(-1.0,0.0)(1.0,3.141592653589793)

功能

如前所述,类自动跟踪笛卡尔坐标和极坐标。

>>>p=Point2D()>>>print(p)Point2D(0.0,0.0)(0.0,0.0)>>>p.x=-1.0>>>print(p)Point2D(-1.0,0.0)(1.0,3.141592653589793)>>>p.r=5.0>>>print(p)Point2D(-5.0,6.123233995736766e-16)(5.0,3.141592653589793)

类还实现了点之间的操作(它们返回一个新的点2d)。

>>>p1=Point2D(10.0,0.0)>>>p2=Point2D(0.0,10.0)>>>p1+p2Point2D(10.0,10.0)(14.142135623730951,0.7853981633974483)>>>p1-p2Point2D(10.0,-10.0)(14.142135623730951,-0.7853981633974483)

如果您这样做,可以通过点之间的和或减来更新点:

>>>p1+=p2>>>p1Point2D(10.0,10.0)(14.142135623730951,0.7853981633974483)>>>p1-=p2>>>p1Point2D(10.0,0.0)(10.0,0.0)

该类还实现了点和标量之间的操作。

>>>Point2D(1.0,0.0)*10Point2D(10.0,0.0)(10.0,0.0)

获取和设置

您可以直接通过坐标的名称(xyra)来获取和设置坐标值,但是有一些有用的方法可以帮助您实现。

笛卡尔坐标

cartesian()方法可以设置或返回笛卡尔坐标。可以使用xy作为单独的参数设置它们,使用包含xy的元组,或者使用此方法获取包含xy的元组。

>>>p=Point2D()>>>p.cartesian(1.0,0.0)>>>pPoint2D(0.0,0.0)(0.0,0.0)>>>p.cartesian((-1.0,0.0))>>>pPoint2D(-1.0,0.0)(1.0,3.141592653589793)>>>p.cartesian()(-1.0,0.0)

您还可以使用方法ints()来获得具有笛卡尔坐标的整数元组。如果您使用的是pygame,这一点尤其有用。

极坐标

polar()方法对极坐标做同样的事情。您可以使用ra作为单独的参数设置它们,使用包含ra的元组,或者使用此方法获取包含ra的元组。

>>>p=Point2D()>>>p.polar(1.0,0.0)>>>pPoint2D(1.0,0.0)(1.0,0.0)>>>p.polar((1.0,math.pi))>>>pPoint2D(-1.0,1.2246467991473532e-16)(1.0,3.141592653589793)>>>p.polar()(1.0,3.141592653589793)

有用的技巧

您可以在这个类中单独使用笛卡尔坐标,它仍然很有用。这里有一些不错的“把戏”。

向量的长度

记住,在极坐标系中,一个点的半径是它到原点的距离,这与位于原点的向量的长度相同。

mypoint.r来找出它的长度。

>>>p=Point2D(3,4)>>>p.r5.0

点之间的距离

减去两点会得到第三个点。第三个点的长度是第一个点之间的距离。使用它的半径来获取长度。

>>>p1=Point2D(10,0)>>>p2=Point2D(10,10)>>>(p2-p1).r10.0

矢量之间的角度

同样,减去两个向量将得到第三个向量。第三个向量的角度是两个第一个向量之间的角度。不过,要小心,p1 - p2p2 - p1不一样。尽管它们会产生附加角(它们的总和是180°)。

>>>p1=Point2D(10,0)>>>p2=Point2D(10,10)>>>math.degrees((p2-p1).a)90.0>>>math.degrees((p1-p2).a)-90.0

缩放向量

有两种方法是的。其中之一是将矢量乘以描述其比例因子的数字。另一种方法是用半径乘以数字。

>>>p=Point2D(1,0)>>>p*=3>>>pPoint2D(3.0,0.0)(3.0,0.0)>>>p=Point2D(1,0)>>>p.r*=3>>>pPoint2D(3.0,0.0)(3.0,0.0)

单位向量

单位向量是1级向量。要找到一个向量的单位向量,你需要乘以它的长度,这可能有点烦人。好吧,现在很容易。把它的半径设为1就可以了。不客气。

>>>p=Point2D(12.34,56.78)>>>p.r=1>>>pPoint2D(0.21237248410903914,0.9771887883072318)(1.0,1.3567941381565736)

链接

代码:https://github.com/SplinterDev/point2d/

许可证:GNU General Public License v3.0

创建人:Fabrício J.C. Montenegro(2018)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
在Grails中集成javaapplet   动态设置片段时发生java错误   JavaSpringVelocity模板电子邮件?   SpringHateOAS中java自定义json输出   java wait()和notify()相关问题   正则表达式中的单词边界是什么?   使用外部库将项目部署到glassfish后发生java NoClassDefFoundError   java为什么在这里初始化ListNode两次?   java libGDX移动三维模型   java使线程等待另一个线程的执行   正则表达式如何在java中使用正则表达式解析给定字符串   java SWT ScrolledComposite在32768像素后切断画布生成的图像