1

傾きを計算するアルゴリズムを手伝ってください。デカルト座標系があります。XはYの一番上にあります。座標の中心を通る線があります。軸OXに対する角度を決定するために必要です。

これが私がしていることです

  1. 特定の機能が原点(一番上の行)と行末に転送されました
  2. dx、dyを決定する
  3. Hildrenはatan2で2つのパラメーターをリリースします(dy、dx)
  4. 結果をラジアンで返します。

だが!Iatan2は180度以内でのみ機能します。180が別の方向に進んだ後。

だから質問:角度を見つけるための正しいアルゴリズムは何ですか?dy、dx値を大きさで取得する必要がありますか?360以上すべてのアークタンジェントを計算するにはどうすればよいですか?特定のアルゴリズムやコードコメントを聞いていただければ幸いです。ありがとう!

static inline CGFloat angleBetweenLinesInRadians2 (CGPoint line1Start, CGPoint line1End)
{
CGFloat dx = 0, dy = 0;

dx = line1End.x - line1Start.x; / / whether to do fabs (line1End.x - line1Start.x);
dy = line1End.y - line1Start.y;

CGFloat rads = atan2 (dy, dx); / / whether to do fabs (rads)

return rads;
}
4

2 に答える 2

4

atan2() は、間隔 [-pi,pi] (つまり [-180, 180] ) の値を返すことになっており、x と y の符号を使用して象限を計算します。( C++ リファレンス)

つまり、技術的には 360 度です。

于 2010-11-03T09:53:24.377 に答える