提问人:ItsCrumbz 提问时间:9/14/2023 最后编辑:ItsCrumbz 更新时间:9/14/2023 访问量:61
为什么我在使用 Math.Atan2 时得到不正确的结果
Why am I Getting Incorrect Results When I use Math.Atan2
问:
该程序需要两个点来求两点之间的距离,并找到从点 1 到点 2 的角度。距离部分工作正常,但是当我使用 Math.Atan2 找到角度时,我得到了一个不恰当的答案。
//these are the variables the store the points
static float point1X = 2;
static float point1Y = 2;
static float point2X = 4;
static float point2Y = 4;
//This is the code I use to find the distance
float deltaX = point1X - point2X;
float deltaY = point1Y - point2Y;
float step1 = MathF.Pow(deltaX, 2f) + MathF.Pow(deltaY, 2f);
float distance = MathF.Sqrt(step1);
//this is the code used to find the angle
float radians = (float)Math.Atan2(deltaY, deltaX);
float angle = radians * (float)(180 / Math.PI);
Console.WriteLine(distance + " " + angle);
我尝试了 (2,2) 和 (4,4) 点。我得到的角度结果是-135。我还尝试了 (5,5) 和 (4,4) 点,它们得到了 45 分。
答:
1赞
MvG
9/14/2023
#1
当你写时,这个增量是从点 2 开始到点 1 结束的符号距离。你的直觉可能恰恰相反:从 1 开始,到 2 结束。所以你应该交换这种差异。y 也一样。deltaX = point1X - point2X
从 3 到 8 有多少个步骤?有 8 - 3 = 5 个步骤。看,结束减去开始也是你在日常情况下会用到的。
评论
0赞
ItsCrumbz
9/14/2023
哦,我明白你的意思了。我试过了,它有效,订单是问题所在!
评论