Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 两点之间的距离和角度_C# - Fatal编程技术网

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

错误的角度输出仅为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; //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);