2017-01-18 19 views
0

私は角の2つの点を使って角度を計算しています。単純な角度を計算する

角度はうまくいきますが、-180度から180度の値がわかります。私のロボットの方向をコード化するのは難しいです。 私は、位置値だけで角度を求めていました。例:0 - 360;

var deltay = pontos_quadrado[0].Y - pontos_quadrado[1].Y; 
var deltax = pontos_quadrado[1].X - pontos_quadrado[0].X; 
angulo = Math.Atan2(deltay, deltax) * 180/Math.PI; 

angulo = Math.Round(angulo, 0); 
+2

'IF(アングロ<0)アングロ+ = 360をとることによって、360から0までの範囲に角度を強制することができ;' ?あなたはモジュロ360をしたいですか? –

+0

@Kroltan:あなたはちょうど180 - 0度を追加することはできませんが間違っている180度になります。 0から始まり-180度の-1度は0〜359度の359度に相当します - マキシミリアンの答えは正しい方法です。 – PaulF

+0

@MaximilianGerhardtは、絶対値をとることと同等に終わることはありませんか、それとも私はこれを誤読していますか? – EJoshuaS

答えて

4

あなたは360を加算し、残りのモジュロ360

var deltay = pontos_quadrado[0].Y - pontos_quadrado[1].Y; 
var deltax = pontos_quadrado[1].X - pontos_quadrado[0].X; 
angulo = Math.Atan2(deltay, deltax) * 180/Math.PI; 

angulo = (angulo + 360) % 360; // note this line 

angulo = Math.Round(angulo, 0); 
関連する問題