2016-04-01 26 views
-2

角度が45度しか出力されず、-135.000の出力が正しく出力されないのですか?2点間の距離と角度

距離を計算するために、次の入力1X = 2,1Y = 2,2X = 1,2Y = 1、 を使用するように指示されています。数字1.414を出力します(3 に)。さらに、私はまた、 Atan2を使って角度を計算し、ラジアンを度に変換するように指示されました。これは45を出力します。しかし...私は の出力が-135.000度になるはずですか?

どこかで何かが見つからないのは知っていますか?

すべてソートされました!本当に大きなお礼Oddlerに:)

//calculate delta x and delta y between the two points 
deltaX = Math.Pow((2X - 1X), 2); 
deltaY = Math.Pow((2Y - 1Y), 2); 

//pythagras theorem for distance 
distance = Math.Sqrt(deltaY + deltaX); 

//atan2 for angle 
radians = Math.Atan2(deltaY, deltaX); 

//radians into degrees 
angle = radians * (180/Math.PI); 

Output: distance = 1.414 
     angle = 45 
+2

あなたはdeltaxを2度宣言して以来、おそらくタイプミスをしていると思います。 –

+0

この変数はdelatYに言及しています。これは別のタイプミスです。これはおそらくコンパイルからこれを止めるでしょう。 – mcr

+0

typo(s)fixed .... – Green

答えて

2

C#の変数ではそう1Xが有効な変数名ではなく、数字で始めることはできません。それをX1に変更しても問題ありません。角度に対して二乗デルタを使用しないようにしてください。

float X1=2, Y1=2, X2=1, Y2=1; //Don't start variable names with number 

//calculate delta x and delta y between the two points 
var deltaX = Math.Pow((X2 - X1), 2); 
var deltaY = Math.Pow((Y2 - Y1), 2); 

//pythagras theorem for distance 
var distance = Math.Sqrt(deltaY + deltaX); 

//atan2 for angle 
var radians = Math.Atan2((Y2 - Y1), (X2 - X1)); // Don't use squared delta 

//radians into degrees 
var angle = radians * (180/Math.PI); 

Console.WriteLine("Dist = " + distance); 
Console.WriteLine("Angle = " + angle); 

そして、それは動作します表示する少しフィドル:https://dotnetfiddle.net/fzyVFW

+0

ありがとうございました...私はどこかを台無しにしていたことを知っていました:) – Green

+0

Np、喜んで助けました。この回答があなたの問題を解決した場合は、これを受け入れるべきです。あなたが助けてくれたことを知っているかもしれない他の人々;) –

1

問題がDELTAXとdeltaY移動があなたのコードに乗されていることです。したがって

radians = Math.Atan2(deltaY, deltaX); 

は、間違った番号を返します。

私はそれをテストしていませんが、

//calculate delta x and delta y between the two points 

deltaX = X2 - X1; 
deltaY = Y2 - Y1; 

//pythagoras theorem for distance 
distance = Math.Sqrt(deltaX*deltaX + deltaY*deltaY); 

//atan2 for angle 
radians = Math.Atan2(deltaY, deltaX); 

//radians into degrees 
angle = radians * (180/Math.PI); 

は動作するはずです。

+0

角度はまだ45を示していますか? – Green

関連する問題