【发布时间】:2015-03-25 16:45:44
【问题描述】:
数学不是我的强项,我想我在这里有一些混淆,但我不知道是什么。
我只是想在给定大量变量和常量的情况下填充 2 个新坐标。
如果我将 Origin 坐标设为 5,5,Destination 坐标设为 10,5,我可以使用这两个函数计算出距离 = 5,并且从 Origin 到 Destination 的方位角为 90:
private static double GetDistance(PointF point1, PointF point2)
{
double a = (double)(point2.X - point1.X);
double b = (double)(point2.Y - point1.Y);
return Math.Sqrt(a * a + b * b);
}
public static double GetBearing(PointF coord1, PointF coord2)
{
double result = 0.0;
result = Math.Atan2(coord2.X - coord1.X, coord2.Y - coord1.Y) * (180 / Math.PI); //- Math.Atan2(coord4.y - coord3.y, coord4.x - coord3.x))
if (result < 0)
{
result = result + 360;
}
return result;
}
在给定偏移距离 xd=1 和偏移方位角 180(即与目的地直接相反的方向)的情况下,我希望能够绘制位置 4,5。我还希望能够输入不同的偏置轴承,比如 90 和绘图 5,6。
这是我尝试过的,但我得到的值完全是荒谬的。
public static PointF CalculateCoordinate(double Angle, double Distance)
{
PointF coord = new PointF(Convert.ToSingle(Distance * Math.Cos(Angle)), Convert.ToSingle(Distance * Math.Sin(Angle)));
return coord;
}
和CalculateCoordinate(GetBearing(Destination, Origin),1) 直接将轴承反转 180。我试过这个CalculateCoordinate(90,1) 来计算侧面的偏移量,但这也不起作用。
我哪里出错了,我敢肯定这是非常愚蠢和简单的事情。
【问题讨论】:
标签: c# math coordinate