有人能指出我哪里做错了吗?
没有展示“不一致或存在相对较大位移”的实际结果或你的预期结果,因此回答者必须依靠猜测。
没有说明输入(x、y等)的单位以及如何获得用于“destination”计算中的“dist”。在计算下面的“bearing2”时,我假设正向x是以英里为单位的东部,在英里中正向y是北部。如果您编辑问题以修复(1)和(2),将会有很大帮助。
编码风格不太有利于让人们阅读...请查看这个。
在学校的三角学中,角度是逆时针从X轴(东)开始度量的。在导航中,方位角是从Y轴(北)开始顺时针测量的。请参见下面的代码。关于航向的例子,请点击此链接,滚动到“从起始点给定距离和方位角的目标点”部分,注意该示例讨论的方位角大约为96或97度,然后单击“查看地图”,您会注意到航向稍微偏向东南(东为90度)。
代码:
from math import degrees, atan2
def gb(x, y, center_x, center_y):
angle = degrees(atan2(y - center_y, x - center_x))
bearing1 = (angle + 360) % 360
bearing2 = (90 - angle) % 360
print "gb: x=%2d y=%2d angle=%6.1f bearing1=%5.1f bearing2=%5.1f" % (x, y, angle, bearing1, bearing2)
for pt in ((0, 1),(1,1),(1,0),(1,-1),(0,-1),(-1,-1),(-1, 0),(-1,1)):
gb(pt[0], pt[1], 0, 0)
输出:
gb: x= 0 y= 1 angle= 90.0 bearing1= 90.0 bearing2= 0.0
gb: x= 1 y= 1 angle= 45.0 bearing1= 45.0 bearing2= 45.0
gb: x= 1 y= 0 angle= 0.0 bearing1= 0.0 bearing2= 90.0
gb: x= 1 y=-1 angle= -45.0 bearing1=315.0 bearing2=135.0
gb: x= 0 y=-1 angle= -90.0 bearing1=270.0 bearing2=180.0
gb: x=-1 y=-1 angle=-135.0 bearing1=225.0 bearing2=225.0
gb: x=-1 y= 0 angle= 180.0 bearing1=180.0 bearing2=270.0
gb: x=-1 y= 1 angle= 135.0 bearing1=135.0 bearing2=315.0