2017-09-14 21 views
0

角度AまたはBが角度Cに近いかどうかを計算したいと思いますが、これは本当に簡単ですが、360度で角度が0に戻ったり、角度が0に戻ったりする方法は、私がそれらを比較する方法を混乱させる。角度AまたはBが角度Cに近いかどうかを確認するにはどうすればよいですか?

は、今のところ私はこのような何かをやっているが、これは間違っている:

similarity1 := degree - targetAngle1 
    if (similarity1 > 360){ 
     similarty1 := 360 - similarity1 
    } 
    similarity2 := degree - targetAngle2 
    if (similarity2 > 360){ 
     similarty2 := 360 - similarity2 
    } 
    if (similarity1 < similarity2){ 
     degree := similarity1 
    } else { 
     degree := similarity2 
    } 

答えは本当に簡単ではあるが、問題は私が混乱している何らかの理由でなければなりません。

+0

私は、これは、言語に依存しない問題であると認識が、私は好奇心が強い - どのような言語これは、中括弧と 'の両方を使用することです: = '? –

+0

@ MarkRansom Autohotkey。 –

答えて

0

-180〜180の範囲の数値で作業する場合は、絶対値を比較してどちらが小さいかを簡単に確認できます。

数字を-180〜180の範囲にするには、角度から360を加算または減算しても、数値がまったく変更されないことを認識する必要があります。

複数の条件なし
similarity1 := degree - targetAngle1 
if (similarity1 > 180){ 
    similarty1 := similarity1 - 360 
} 
else if (similarity1 < -180){ 
    similarity1 := similarity1 + 360 
} 
similarity2 := degree - targetAngle2 
if (similarity2 > 180){ 
    similarty2 := similarity2 - 360 
} 
else if (similarity2 < -180){ 
    similarity2 := similarity2 + 360 
} 
if (abs(similarity1) <= abs(similarity2)){ 
    degree := similarity1 
} else { 
    degree := similarity2 
} 
+0

私はここで間違いを犯していると仮定しようとしていますが、欠陥のある入力が問題ではないことを確認するために、他のコードやハードコードされた入力を使わずに答えをテストしました。その結果としての可能性のある角度の は、ここで私がテストしています正確なコードです: https://gist.github.com/anonymous/b239171b392917733ee4d8b01567cefc そして、あなたが自分で見るためにそれを実行したい場合は、[インストールすることができますAHK](HTTPS:/ /autohotkey.com/download/)、スクリプトファイルをダブルクリックして実行すると、スクリプトに示されているように、log.txtが結果とともにスクリプトディレクトリに表示されます。 –

+0

90(C)に関する潜在的な角度190(A)と10(B)を入力しようとしましたが、結果は-80でした。私が360度以内になるように正規化しても、それはまだ280になってしまいます。90度に近い方を基準に190度か10度のどちらかを選択するのが私の目標です。 おそらく私は間違いを犯しましたが、私はどこに見えません。 –

+0

@Viziionary私はあなたの問題をコンパスの3つのポジションとみなし、他の2つのうち最も近いものを選択しようとしているポジションの1つを指定します。私は正しいですか?あなたの例では、10は90から80度ですが190は90から100度なので、10が最も近いです。この問題は最終的な割り当てにあり、 'degree:= similarity1'の代わりに' degree:= targetAngle1'を使います。 –

0

アプローチが、三角関数の呼び出しで:

if Cos(C-A) > Cos(C-B) then 
    A closer to C 
関連する問題