2 つの線分 A と B の間の時計回りの角度を計算したいので、結果の角度は 0 から 360-1 度の間でなければなりません。SOで他のすべての回答を見てきましたが、それらは私に否定的な角度を与えました。ありがとう。
質問する
2783 次
3 に答える
2
私は試してみます:
if degrees is between [-360, 360]
degrees = (degrees + 360) % 360;
else degrees = (degrees % 360) + 360) % 360;
于 2011-03-31T10:00:55.260 に答える
2
C# で任意の角度を 0 ~ 359 の範囲に変換するには、次の「アルゴリズム」を使用できます。
public int Normalise (int degrees) {
int retval = degrees % 360;
if (retval < 0)
retval += 360;
return retval;
}
C# は C および C++ と同じ規則に従い、任意の整数に対してとi % 360
の間の値を提供します。2 行目は、0 から 359 までの範囲内にあることを確認することです。-359
359
1行の卑劣なバージョン:
degrees = ((degrees % 360) + 360) % 360;
これにより、すべての条件下で正規化されます。パフォーマンスが重要でない限り、インラインワンライナーの使用についてあまり心配するかどうかはわかりませんが、それについて説明します.
からとdegrees % 360
の間の数字が得られます。を追加すると、範囲が ~ の間に変更されます。その後、最終的に を介して範囲に戻します。-359
359
360
1
729
% 360
0
359
于 2010-07-05T02:02:38.993 に答える
1
確かに、次のように調整することで、負の角度を持つソリューションを常に 0 ~ 360 に適応させることができます。
float 正 = (角度 < 0) ? (360 + 角度) : 角度
于 2010-07-05T01:45:41.157 に答える