4

x、y座標の点のリストがあります。sqrt(pow($x2 - $x1, 2) + pow($y2 - $y1, 2))でポイント間の距離を取得し、 でポイント間の角度 を取得する方法を知っていatan2(y1 - y2, x1 - x2)ます。

ポイント間の相対角度 (左、右、直線) を計算するにはどうすればよいですか? つまり、ポイント 1 にいる場合、ポイント 2 への相対的な方向は? 2 から 3、3 から 4 など...

助けてくれてありがとう!

4

3 に答える 3

2

電話atan2($y1 - $y2, $x1 - $x2)

π/2と3π/2の間にある場合、それはまっすぐです。
3π/2より大きいか-3π/2より小さい場合は、左折です。
-π/2とπ/2の間にある場合は、右折です。

これが図です:

{3π/2}-------{π/2}-------{π/4}
      | + ----- [+ y] ----- + |
      | | | |
      | | | |
    {π}[-x][0,0] [+ x] {0}
      | | | |
      | | | |
      | + ----- [-y] ----- + |
{-3π/2}-------{-π/2}------{-π/4}
于 2010-06-16T15:06:46.270 に答える
0

ポイント 2 から 1 への角度、およびポイント 2 から 3 へのangle_to_3 - angle_to_1角度がわかっている場合、atan2 で計算する方法を知っている , (または、次の角度から前の角度までの角度) だけの問題です。左/右/まっすぐは、結果を丸めているだけです。難しい方法でやりたい場合は、2 から 1 への角度が 0 になるようにポイントを回転させることができますが、それは不必要に複雑に思えます。

于 2010-06-16T15:14:26.327 に答える
0

運転方向の例を考えると、左/右/直進の概念は、現在の進行方向に関連してのみ意味があります。これが、SatNav ユニットが最初のターンまたは「計画されたルートに進んでください」で開始する理由です。マップから外れると、すぐに左/右/その他に曲がるのではなく...

x1,y1 から x2,y2 への角度がわかっている場合は、x2,y2 から x3,y3 への角度を使用して、次の点の相対方向を示すことができます。次の角度がそれより大きい場合は、おそらく左折になり、それよりも小さい場合は右折になり、最初の角度の周りの一定のマージン内でまっすぐになります。

于 2010-06-16T15:22:38.193 に答える