用于表示单位球体上的角度和位置的类。

angles的Python项目详细描述


angles模块定义了几个表示角度和位置的类 在球体上。它还具有执行常见操作的几个功能 在角度上,例如单位转换、规范化、创建字符串 陈述和其他。

Simbad报告的M100位置为“12 22 54.899+15 49 20.57”。我们可以 按如下方式轻松分析这些坐标:

>>>from__future__importprint_function>>>fromanglesimportAngularPosition>>>a=AngularPosition.from_hd("12 22 54.899 +15 49 20.57")>>>a.alpha3.24157813039>>>a.delta0.276152636198>>>print(a.alpha)+12HH22MM54.899SS>>>print(a.delta)+15DD49MM20.570SS>>>a.alpha.hms.hms(1,12,22,54.899)>>>a.delta.dms.dms(1,15,49,20.57)>>>a.alpha.dms.dms(1,185,43,43.485)>>>a.delta.hms.hms(1,1,3,17.371)>>>a.alpha.r,a.alpha.d,a.alpha.h,a.alpha.arcs(3.2415781303913653,185.72874583333328,12.381916388888886,668623.4849999998)>>>a.delta.r,a.delta.d,a.delta.h,a.delta.arcs(0.27615263619797403,15.822380555555556,1.0548253703703705,56960.57)

安装

使用pipeasy_install

$ pip install angles

或者,

$ easy_install angles

测试在文件test_angles.py中。

示例

下面给出一些例子。有关详细信息,请参见函数和 上课。

单位换算

在弧度、度数、小时和弧秒之间转换。

>>>importmath>>>fromanglesimportr2d,r2arcs,h2r,h2d,d2arcs>>>r2d(math.pi)180.0>>>r2arcs(math.pi)648000.0>>>h2r(12.0)3.141592653589793>>>h2d(12.0)180.0>>>d2arcs(1.0)3600.0

规格化角度

使用normalize规范化两个限制之间的值。

>>>fromanglesimportnormalize>>>normalize(-180,-180,180)-180.0>>>normalize(180,-180,180)-180.0>>>normalize(180,-180,180,b=True)180.0>>>normalize(181,-180,180)-179.0>>>normalize(181,-180,180,b=True)179.0>>>normalize(-180,0,360)180.0>>>normalize(36,0,24)12.0>>>normalize(368.5,-180,180)8.5>>>normalize(-100,-90,90)80.0>>>normalize(-100,-90,90,b=True)-80.0>>>normalize(100,-90,90,b=True)80.0>>>normalize(181,-90,90,b=True)-1.0>>>normalize(270,-90,90,b=True)-90.0>>>normalize(271,-90,90,b=True)-89.0

球体上的规格化角度

使用normalize_sphere将球面上的点简化为最简单的表示。

>>>fromanglesimportnormalize_sphere>>>normalize_sphere(180,91)(0.0,89.0000000000001)>>>normalize_sphere(180,-91)(0.0,-89.0000000000001)>>>normalize_sphere(0,91)(180.0,89.0000000000001)>>>normalize_sphere(0,-91)(180.0,-89.0000000000001)>>>normalize_sphere(120,280)(119.99999999999999,-80.00000000000003)>>>normalize_sphere(375,45)# 25 hours ,45 degrees(14.999999999999966,44.99999999999999)>>>normalize_sphere(-375,-45)(345.00000000000006,-44.99999999999999)

性别表征

将十进制值转换为十六进制表示。

>>>fromanglesimportdeci2sexa>>>deci2sexa(-11.2345678)(-1,11,14,4.444)>>>deci2sexa(-11.2345678,pre=5)(-1,11,14,4.44408)>>>deci2sexa(-11.2345678,pre=4)(-1,11,14,4.4441)>>>deci2sexa(-11.2345678,pre=4,trunc=True)(-1,11,14,4.444)>>>deci2sexa(-11.2345678,pre=1)(-1,11,14,4.4)>>>deci2sexa(-11.2345678,pre=0)(-1,11,14,4.0)>>>deci2sexa(-11.2345678,pre=-1)(-1,11,14,0.0)>>>x=23+59/60.0+59.99999/3600.0>>>deci2sexa(x,pre=3,lower=0,upper=24)(1,24,0,0.0)>>>deci2sexa(x,pre=3,lower=0,upper=24,upper_trim=True)(1,0,0,0.0)>>>deci2sexa(x,pre=5,lower=0,upper=24,upper_trim=True)(1,23,59,59.99999)

格式化角度

使用fmt_angle将角度格式化为各种字符串表示形式。

>>>fromanglesimportfmt_angle>>>fmt_angle(12.348978659,pre=4,trunc=True)'+12 20 56.3231'>>>fmt_angle(12.348978659,pre=5)'+12 20 56.32317'>>>fmt_angle(12.348978659,s1='HH ',s2='MM ',s3='SS',pre=5)'+12HH 20MM 56.32317SS'>>>x=23+59/60.0+59.99999/3600.0>>>fmt_angle(x)'+24 00 00.000'>>>fmt_angle(x,lower=0,upper=24,upper_trim=True)'+00 00 00.000'>>>fmt_angle(x,pre=5)'+23 59 59.99999'>>>fmt_angle(-x,lower=0,upper=24,upper_trim=True)'+00 00 00.000'>>>fmt_angle(-x)'-24 00 00.000'

分析sexagesimal字符串

使用phmsdms分析字符串中的sexagesimal数字。

>>>fromanglesimportphmsdms>>>phmsdms("12")=={...'parts':[12.0,None,None],...'sign':1,...'units':'degrees',...'vals':[12.0,0.0,0.0]...}True>>>phmsdms("12h")=={...'parts':[12.0,None,None],...'sign':1,...'units':'hours',...'vals':[12.0,0.0,0.0]...}True>>>phmsdms("12d13m14.56")=={...'parts':[12.0,13.0,14.56],...'sign':1,...'units':'degrees',...'vals':[12.0,13.0,14.56]...}True>>>phmsdms("12d14.56ss")=={...'parts':[12.0,None,14.56],...'sign':1,...'units':'degrees',...'vals':[12.0,0.0,14.56]...}True>>>phmsdms("14.56ss")=={...'parts':[None,None,14.56],...'sign':1,...'units':'degrees',...'vals':[0.0,0.0,14.56]...}True>>>phmsdms("12h13m12.4s")=={...'parts':[12.0,13.0,12.4],...'sign':1,...'units':'hours',...'vals':[12.0,13.0,12.4]...}True>>>phmsdms("12:13:12.4s")=={...'parts':[12.0,13.0,12.4],...'sign':1,...'units':'degrees',...'vals':[12.0,13.0,12.4]...}True

解析包含角度位置

的字符串

使用pposition解析球体上点的坐标。

>>>fromanglesimportpposition>>>ra,de=pposition("12 22 54.899 +15 49 20.57")>>>ra12.38191638888889>>>de15.822380555555556>>>pposition("12 22 54.899 +15 49 20.57",details=True)# doctest: +SKIP{'y':15.822380555555556,'x':12.38191638888889,'numvals':6,'raw_x':{'vals':[12.0,22.0,54.899],'units':'degrees','parts':[12.0,22.0,54.899],'sign':1},'raw_y':{'vals':[15.0,49.0,20.57],'units':'degrees','parts':[15.0,49.0,20.57],'sign':1}}

沿大圆的分离角

使用sep沿一个大圆查找角度间隔。这个函数 使用矢量来查找分离角。

>>>fromanglesimportr2d,d2r,sep>>>r2d(sep(0,0,0,d2r(90.0)))90.0>>>r2d(sep(0,d2r(45.0),0,d2r(90.0)))45.00000000000001>>>r2d(sep(0,d2r(-45.0),0,d2r(90.0)))135.0>>>r2d(sep(0,d2r(-90.0),0,d2r(90.0)))180.0>>>r2d(sep(d2r(45.0),d2r(-90.0),d2r(45.0),d2r(90.0)))180.0>>>r2d(sep(0,0,d2r(90.0),0))90.0>>>r2d(sep(0,d2r(45.0),d2r(90.0),d2r(45.0)))60.00000000000001>>>importmath>>>90.0*math.cos(d2r(45.0))# Distance along latitude circle.63.63961030678928

两点间的方位

使用bear查找一点相对于另一点的方向。就像sep 此函数使用向量。

>>>fromanglesimportbear,r2d,d2r>>>bear(0,0,0,-d2r(90.0))3.141592653589793>>>bear(0,-d2r(90.0),0,0)0.0>>>bear(0,-d2r(45.0),0,0)0.0>>>bear(0,-d2r(89.678),0,0)0.0>>>r2d(bear(d2r(45.0),d2r(45.0),d2r(46.0),d2r(45.0)))89.64644212193384>>>r2d(bear(d2r(45.0),d2r(45.0),d2r(44.0),d2r(45.0)))-89.64644212193421

角度等级

表示角度的类,在不同的 单位,生成字符串表示。

>>>from__future__importprint_function>>>fromanglesimportAngle>>>a=Angle(sg="12h34m16.592849219")>>>a.r,a.d,a.h,a.arcs# doctest: +NORMALIZE_WHITESPACE(3.291152306055805,188.56913687174583,12.571275791449722,678848.892738285)>>>a.hms.sign,a.hms.hh,a.hms.mm,a.hms.ss(1,12,34,16.593)>>>a.hms.hms(1,12,34,16.593)>>>a.h12.571275791449722>>>a.dms.sign,a.dms.dd,a.dms.mm,a.dms.ss(1,188,34,8.893)>>>a.dms.dms(1,188,34,8.893)>>>a.d188.56913687174583>>>print(a.ounit)hours>>>print(a)+123416.593>>>a.pre,a.trunc(3,False)>>>a.pre=4>>>print(a)+123416.5928>>>a.pre=3>>>a.trunc=True>>>print(a)+123416.592>>>a.ounit="degrees">>>print(a)+1883408.892>>>a.ounit="radians">>>print(a)# doctest: +SKIP3.29115230606>>>a.ounit="degrees">>>a.s1="DD ">>>a.s2="MM ">>>a.s3="SS">>>print(a)+188DD34MM08.892SS>>>a=Angle(r=10)>>>a.d,a.h,a.r,a.arcs,a.ounit# doctest: +NORMALIZE_WHITESPACE(572.9577951308232,38.197186342054884,10,2062648.0624709637,'radians')>>>a.d=10>>>a.d,a.h,a.r,a.arcs,a.ounit# doctest: +NORMALIZE_WHITESPACE(10.0,0.6666666666666666,0.17453292519943295,36000.0,'radians')>>>a.dms.mm=60>>>a.d,a.h,a.r,a.arcs,a.ounit# doctest: +NORMALIZE_WHITESPACE(11.0,0.7333333333333333,0.19198621771937624,39600.0,'radians')>>>a.dms.dms=(1,12,10,5.234)>>>a.d,a.h,a.r,a.arcs,a.ounit# doctest: +NORMALIZE_WHITESPACE(12.168120555555557,0.8112080370370371,0.21237376747404604,43805.234000000004,'radians')>>>a.hms.hms=(1,1,1,1)>>>a.d,a.h,a.r,a.arcs,a.ounit# doctest: +NORMALIZE_WHITESPACE(15.254166666666668,1.0169444444444444,0.2662354329813017,54915.00000000001,'radians')>>>print(a)# doctest: +SKIP0.266235432981>>>a.ounit='hours'>>>print(a)+010101.000>>>a.ounit='degrees'>>>print(a)+151515.000

纵向角度等级

Angle的一个子类,规范化为范围[0, 24),即 像赤经一样的角度。ounit属性始终是“hours”。

>>>from__future__importprint_function>>>fromanglesimportAlphaAngle>>>a=AlphaAngle(d=180.5)>>>print(a)+12HH02MM00.000SS>>>a=AlphaAngle(h=12.0)>>>print(a)+12HH00MM00.000SS>>>a=AlphaAngle(h=-12.0)>>>a=AlphaAngle("12h14m23.4s")>>>print(a)+12HH14MM23.400SS>>>a.r,a.d,a.h,a.arcs(3.204380873430289,183.5975,12.239833333333333,660951.0)>>>a=AlphaAngle(h=12.54678345)>>>a.hms.hms(1,12,32,48.42)>>>a.hms.sign,a.hms.hh,a.hms.mm,a.hms.ss(1,12,32,48.42)>>>print(a)+12HH32MM48.420SS>>>a.pre=5>>>a.hms.hms(1,12,32,48.42042)>>>print(a)+12HH32MM48.42042SS>>>a.s1=" : ">>>a.s2=" : ">>>a.s3="">>>print(a)+12:32:48.42042>>>a.pre=3>>>a.dms.dms(1,188,12,6.306)>>>a=AlphaAngle(h=25.0)>>>print(a)+01HH00MM00.000SS>>>a=AlphaAngle(h=-1.0)>>>print(a)+23HH00MM00.000SS>>>a.hms.hh=23>>>a.hms.mm=59>>>a.hms.ss=59.99999>>>a.hms.hms(1,0,0,0.0)>>>print(a)+00HH00MM00.000SS>>>a.pre=5>>>a.hms.hms(1,23,59,59.99999)>>>print(a)+23HH59MM59.99999SS

纬度角等级

Angle的一个子类,规范化为范围[-90, 90],即 像倾斜一样的角度。ounit属性始终是“度”。

>>>from__future__importprint_function>>>fromanglesimportDeltaAngle>>>a=DeltaAngle(d=-45.0)>>>print(a)-45DD00MM00.000SS>>>a=DeltaAngle(d=180.0)>>>print(a)+00DD00MM00.000SS>>>a=DeltaAngle(h=12.0)>>>print(a)+00DD00MM00.000SS>>>a=DeltaAngle(sg="91d")>>>print(a)+89DD00MM00.000SS>>>a=DeltaAngle("12d23m14.2s")>>>print(a)+12DD23MM14.200SS>>>a.r,a.d,a.h,a.arcs(0.2161987825813487,12.387277777777777,0.8258185185185185,44594.2)>>>a=DeltaAngle(d=12.1987546)>>>a.dms.dms(1,12,11,55.517)>>>a.pre=5>>>a.dms.dms(1,12,11,55.51656)>>>a.dms.dd,a.dms.mm,a.dms.ss(12,11,55.51656)>>>a.pre=0>>>a.dms.dms(1,12,11,56.0)>>>a=DeltaAngle(d=12.3459876)>>>a.s1=" : ">>>a.s2=" : ">>>a.s3="">>>print(a)+12:20:45.555>>>a=DeltaAngle(d=-91.0)>>>print(a)-89DD00MM00.000SS>>>a=DeltaAngle(d=91.0)>>>print(a)+89DD00MM00.000SS>>>a.dms.sign=1>>>a.dms.dd=89>>>a.dms.mm=59>>>a.dms.ss=59.9999>>>a.pre=3>>>print(a)+90DD00MM00.000SS>>>a.pre=5>>>print(a)+89DD59MM59.99990SS>>>a.dms.dms=(1,0,0,0.0)>>>a.dms.dd=89>>>a.dms.mm=60>>>a.dms.ss=60>>>a.pre=3>>>print(a)+89DD59MM00.000SS

单位球面上的点的类

用于表示球体上的点的类。输入角度值为 标准化以获得点坐标的最简单表示。

>>>from__future__importprint_function>>>fromanglesimportAngularPosition,r2d>>>a=AngularPosition.from_hd("12 22 54.899 +15 49 20.57")>>>print(a)+12HH22MM54.899SS+15DD49MM20.570SS>>>a=AngularPosition.from_hd("12dd 22 54.899 +15 49 20.57")>>>print(a)+00HH49MM31.660SS+15DD49MM20.570SS>>>a=AngularPosition.from_hd("12d 22 54.899 +15 49 20.57")>>>print(a)+00HH49MM31.660SS+15DD49MM20.570SS>>>a=AngularPosition(alpha=165,delta=-91)# alpha should flip by 180 degrees>>>round(a.alpha.d,12),round(a.delta.d,12)(345.0,-89.0)>>>a.delta.d=-91# alpha should now do another 180 flip and come back to 165>>>round(a.alpha.d,12),round(a.delta.d,12)(165.0,-89.0)>>>a.delta.d=89# there should be no change in normalized angles>>>round(a.alpha.d,12),round(a.delta.d,12)(165.0,89.0)>>>a.alpha.d=-180# alpha should normalize to 180 delta shouldn't change>>>round(a.alpha.d,12),round(a.delta.d,12)(180.0,89.0)>>>pos1=AngularPosition(alpha=12.0,delta=90.0)>>>pos2=AngularPosition(alpha=12.0,delta=0.0)>>>r2d(pos2.bear(pos1))0.0>>>r2d(pos1.bear(pos2))0.0>>>r2d(pos1.sep(pos2))90.0>>>pos1.alpha.h=0.0>>>pos2.alpha.h=0.0>>>r2d(pos1.sep(pos2))90.0>>>r2d(pos2.bear(pos1))0.0>>>r2d(pos1.bear(pos2))0.0

学分

有些函数是由Jeffrey W. PercivalTPMc库改编的。

许可证

根据BSD发布;请参阅license.txt。

有关评论和建议,请发送电子邮件至gmail.com中的用户prasanthhn 领域。

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

推荐PyPI第三方库


热门话题
java对ServiceListener和ServiceTracker调用提供了哪些排序保证?   java找不到方法格式的符号(DateTimeFormatter)?   mysql有没有一种方法可以将TCPDump输出到一个文件中,并用Java对其进行过滤,每5秒钟用新数据覆盖一次该文件?   java如何最好地配置用户上传支持文件的上传位置   java我在Android上使用OData4j,我无法获取实体   JPA实体关系简单示例中的java获取错误   JAVANoClassDefFoundError:安卓。应用程序。用法安卓中的UsageStatsManager   Eclipse中javaoo代码分析   java MethodVisitor抛出类格式错误   java为什么在从ViewModel调用时,改型排队不起作用?   调试小程序Java控制台:删除跟踪消息大小限制   java复杂安卓活动动画   java如何在使用JDOM2解析XML时忽略注释内容   java通过循环创建文本字段   即使在bufferedwriter关闭后也未发现java文件异常   单链表恢复中的java错误