面向python的平面角度数学库。

anglr的Python项目详细描述


DownloadsLatest VersionDevelopment StatusSupported Python VersionsLicense

面向python的平面角度数学库。

这个库包含许多不同的功能,用于单位之间的转换、角度比较和角度运算。

链接:

快速启动:pip3 install anglr

基本原理

请考虑以下简单的角度比较代码:

importmathheading=get_compass_value()# angle in radians normalized to $[0, 2*pi)$iftarget-math.pi/4<=heading<=target+math.pi/4:print("Facing the target")else:print("Not facing the target")

角码无处不在。以上完全是错误的(考虑当target为0时会发生什么),但是在编写和代码评审期间,这很容易被忽略。

有了Angr,有一个更好的方法:

importmathfromanglrimportAngleheading=Angle(get_compass_value())ifheading.angle_between(target)<=math.pi/4:print("Facing the target")else:print("Not facing the target")

更好的是-这将正确地考虑模块化算法时,比较角度。

示例

角度创建:

frommathimportpifromanglrimportAngleprint(Angle())print(Angle(87*pi/2))print(Angle(pi/2,"radians"))print(Angle(Angle(pi/2,"radians")))# same as aboveprint(Angle(64.2,"degrees"))print(Angle(384.9,"gradians"))print(Angle(4.5,"hours"))print(Angle(203.8,"arcminutes"))print(Angle(42352.7,"arcseconds"))print(Angle((56,32),"vector"))# angle in standard position - counterclockwise from positive X-axis

角度转换:

fromanglrimportAnglex=Angle(58.3)print([x],str(x),x.radians,x.degrees,x.gradians,x.hours,x.arcminutes,x.arcseconds,x.vector,x.x,x.y)print(complex(x))print(float(x))print(int(x))x.radians=pi/2print(x.dump())x.degrees=64.2print(x.dump())x.gradians=384.9print(x.dump())x.hours=4.5print(x.dump())x.arcminutes=203.8print(x.dump())x.arcseconds=42352.7print(x.dump())x.vector=(56,32)print(x.dump())

角度运算:

frommathimportpifromanglrimportAngleprint(Angle(pi/6)+Angle(2*pi/3))print(x*2+Angle(3*pi/4)/4+5*Angle(pi/3))print(-abs(+Angle(pi)))print(round(Angle(-75.87)))print(Angle(-4.3)<=Angle(pi/4)>Angle(0.118)==Angle(0.118))print(Angle(-870.3,"gradians").normalized())print(Angle(-870.3,"gradians").normalized(0))# same as aboveprint(Angle(-870.3,"gradians").normalized(0,2*pi))# same as aboveprint(Angle(-870.3,"gradians").normalized(-pi,pi))print(Angle(-870.3,"gradians").normalized(-pi,0))print(Angle(1,"degrees").angle_between_clockwise(Angle(0,"degrees")))print(Angle(1,"degrees").angle_between(Angle(0,"degrees")))print(Angle(0,"degrees").angle_within(Angle(-45,"degrees"),Angle(45,"degrees")))print(Angle(-1,"degrees").angle_within(Angle(-1,"degrees"),Angle(1,"degrees"),strictly_within=True))print(Angle(-1,"degrees").angle_to(Angle(180,"degrees")))print(Angle(0,"degrees").angle_to(Angle(180,"degrees")))

要将以上所有内容作为测试运行,只需在项目目录中运行python3 tests.py

安装

最简单的安装方法是使用pip3 install anglr

否则,请从PyPI下载源发行版,并提取存档。

在文件夹中,运行python3 setup.py install

要求

此库需要运行Python3.2或更高版本。

作者

Uberi <azhang9@gmail.com> (Anthony Zhang)

请在issue tracker报告错误和建议!

许可证

版权所有2014-2015 Anthony Zhang (Uberi)

源代码可以在GitHub在线获得。

此程序是根据3条BSD许可证提供的。有关详细信息,请参见LICENSE.txt

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

推荐PyPI第三方库


热门话题
java如何使用URLhttp://localhost:8080/appcontext/METAINF/index.html?   Google应用程序引擎Java错误   java此GUI在设置BoxLayout后不显示任何内容   setParameter情况下的java临时类型(字符串名称、对象值)   Rijndael 256加密与Java&Bouncy Castle   java如何检查字符串是否为空?   java InvalidDataAccessResourceUsageException:无法提取结果集   AWTGLCanvas正在隐藏java JToggleButton工具提示   使用PDFBox的java格式数字   java Datainputstream和readUTF数据丢失   在java中使用axiomapi解码XJWT断言   为什么Java和PHP的相同代码不起作用?   JavaGoogleSigin错误,代码工作真实设备工作良好,但不工作模拟器获得错误ApiException 12500,谢谢,我也是新的   java通过使用JNA将void**参数作为char[]获取函数的结果   java如何使用泛型树集创建比较器?   未正确解析java简单文本文件   在java中将字符串转换为MyString对象类型   java Spring继承不起作用