[解決済み] 2つの角度の差を求めるにはどうすればよいのでしょうか?
2022-04-23 09:51:38
質問
ある座標を中心に-PI -> PIの範囲にある2つの角度があるとき、その間にある2つの角度のうち最も小さいものの値は何か。
PIと-PIの差は2PIではなく、0であることを考慮する。
例
中心から2本の線が伸びている円を想像してみてください。 小さい方の角 そして、外側にある角、つまり大きい方の角です。この2つの角度を足すと、1つの円になります。それぞれの角度がある範囲に収まることを考えると ロールオーバーを考慮した、小さい方の角度の値は?
解決方法は?
これは、任意の角度に対して符号付きの角度を与えるものです。
a = targetA - sourceA
a = (a + 180) % 360 - 180
多くの言語では
modulo
演算は、配当と同じ符号の値を返します(C、C++、C#、JavaScriptなど。
全リストはこちら
). これには、カスタム
mod
というような関数があります。
mod = (a, n) -> a - floor(a/n) * n
とか、そういう。
mod = (a, n) -> (a % n + n) % n
角度が[-180, 180]の範囲内であれば、これも動作します。
a = targetA - sourceA
a += (a>180) ? -360 : (a<-180) ? 360 : 0
もっと冗長な言い方で。
a = targetA - sourceA
a -= 360 if a > 180
a += 360 if a < -180
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] グリーンフィールド・アプリケーションとブラウンフィールド・アプリケーションとは?
-
[解決済み] GUIDは100%一意ですか?
-
[解決済み] 式と文の比較
-
[解決済み] ランタイムとコンパイルタイム
-
[解決済み】ビットシフト(bit-shift)演算子とは、どのようなもので、どのように機能するのですか?
-
[解決済み】なぜソースファイルの最後に空行を入れることが推奨されるのですか?
-
[解決済み】直線と水平軸のなす角の計算方法とは?
-
[解決済み] お気に入りの(賢い)防御的プログラミングのベストプラクティス【非公開
-
[解決済み] 単項のブーリアン・トグル演算子を持つ言語はありますか?
-
[解決済み] 例外やエラーコードの規約 [終了しました]。