C# 两点之间的距离和角度
错误的角度输出仅为45,而不是所述的-135.000 我被告知使用以下输入1X=2,1Y=2,2X=1,2Y=1, 计算距离-输出数字1.414(到3 数字)。此外,我还被告知使用 Atan2并将弧度转换为度-输出45。但是我 被告知角度输出应为-135.000度 我知道我遗漏了什么 全部排序!对那个古怪的人说了一声非常感谢:) 在c#中,变量不能以数字开头,因此C# 两点之间的距离和角度,c#,C#,错误的角度输出仅为45,而不是所述的-135.000 我被告知使用以下输入1X=2,1Y=2,2X=1,2Y=1, 计算距离-输出数字1.414(到3 数字)。此外,我还被告知使用 Atan2并将弧度转换为度-输出45。但是我 被告知角度输出应为-135.000度 我知道我遗漏了什么 全部排序!对那个古怪的人说了一声非常感谢:) 在c#中,变量不能以数字开头,因此1X不是有效的变量名。将其更改为X1,应该可以。还要确保角度不使用平方三角形 float X1=2, Y1=2, X2=1, Y2=1
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);
还有一点小技巧来说明它的工作原理:问题是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);
应该有效。我认为您有一个输入错误(可能在这里),因为您声明了deltax Twice,您还提到了这个变量delatY,这是另一个输入错误,可能会阻止编译。角度仍然显示为45?谢谢。。。我知道我在什么地方搞砸了:)Np,很高兴这有帮助。如果这个答案解决了你的问题,你应该接受这个答案,这样其他可能找到答案的人就会知道是什么帮助了你;)
//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);