誰かが私が間違っているかもしれないことを指摘できますか?
「一貫性がない、または比較的大きな変位が伴う」結果や期待される結果の例を示していません。したがって、回答者は当て推量に頼らなければなりません。
入力(x、yなど)がどの単位で測定されているか、および計算でどのようにdist
使用されているかはわかりません。destination
私は (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