1

我正在Coursera 上上C# Unity 课程,第一个任务是全神贯注。是的,我是编程新手,所以请放慢我的脚步。

我正在尝试计算两个字符位置之间的斜边距离。

在此处输入图像描述

我被迫为了两个 Y 点使用 5 5 和两个 X 点使用 4 4。

首先,我通过从 point1Y 中减去 point2Y 来计算 deltaY,然后通过对 X 点执行相同的操作来计算 deltaX。

然后,我需要将距离保存为浮点数,因此使用强制转换,我布置了勾股定理公式来找到距离。

但是,我一直得到 5 5 4 4 的正确答案,但是当我需要为 Y 使用 2 2 和为 XI 使用 4 4 时,得到NaN

这是因为我得到了一个不应该出现的负数。任何帮助,将不胜感激!

我的代码如下

float point1X = 5;
float point1Y = 5;
float point2X = 4;
float point2Y = 4;
        
double deltaX = point2X - point1X;
double deltaY = point2Y - point1Y;

float distance = (float) (Math.Sqrt(Math.Sqrt(deltaX) + Math.Sqrt(deltaY)));
Console.WriteLine(distance);
4

1 回答 1

3

您需要更新两点之间距离的定义。现在是不正确的。它应该是 delta 的 2 次方(而不是平方根)。

float distance = (float) (Math.Sqrt(deltaX * deltaX + deltaY * deltaY));

或者

float distance = (float) (Math.Sqrt(Math.Pow(deltaX, 2.0) + Math.Pow(deltaY, 2.0)));

顺便说一句,正如评论中提到的,负值的平方根(可能是deltaXor deltaY)是你得到的错误的来源。

于 2021-04-26T03:37:23.503 回答