x、y座標の点のリストがあります。sqrt(pow($x2 - $x1, 2) + pow($y2 - $y1, 2))
でポイント間の距離を取得し、 でポイント間の角度 を取得する方法を知っていatan2(y1 - y2, x1 - x2)
ます。
ポイント間の相対角度 (左、右、直線) を計算するにはどうすればよいですか? つまり、ポイント 1 にいる場合、ポイント 2 への相対的な方向は? 2 から 3、3 から 4 など...
助けてくれてありがとう!
x、y座標の点のリストがあります。sqrt(pow($x2 - $x1, 2) + pow($y2 - $y1, 2))
でポイント間の距離を取得し、 でポイント間の角度 を取得する方法を知っていatan2(y1 - y2, x1 - x2)
ます。
ポイント間の相対角度 (左、右、直線) を計算するにはどうすればよいですか? つまり、ポイント 1 にいる場合、ポイント 2 への相対的な方向は? 2 から 3、3 から 4 など...
助けてくれてありがとう!
π/2と3π/2の間にある場合、それはまっすぐです。
3π/2より大きいか-3π/2より小さい場合は、左折です。
-π/2とπ/2の間にある場合は、右折です。
これが図です:
{3π/2}-------{π/2}-------{π/4} | + ----- [+ y] ----- + | | | | | | | | | {π}[-x][0,0] [+ x] {0} | | | | | | | | | + ----- [-y] ----- + | {-3π/2}-------{-π/2}------{-π/4}
ポイント 2 から 1 への角度、およびポイント 2 から 3 へのangle_to_3 - angle_to_1
角度がわかっている場合、atan2 で計算する方法を知っている , (または、次の角度から前の角度までの角度) だけの問題です。左/右/まっすぐは、結果を丸めているだけです。難しい方法でやりたい場合は、2 から 1 への角度が 0 になるようにポイントを回転させることができますが、それは不必要に複雑に思えます。
運転方向の例を考えると、左/右/直進の概念は、現在の進行方向に関連してのみ意味があります。これが、SatNav ユニットが最初のターンまたは「計画されたルートに進んでください」で開始する理由です。マップから外れると、すぐに左/右/その他に曲がるのではなく...
x1,y1 から x2,y2 への角度がわかっている場合は、x2,y2 から x3,y3 への角度を使用して、次の点の相対方向を示すことができます。次の角度がそれより大きい場合は、おそらく左折になり、それよりも小さい場合は右折になり、最初の角度の周りの一定のマージン内でまっすぐになります。