【发布时间】:2013-09-25 05:08:11
【问题描述】:
假设我有 X = 0, Y = 0 的值,我想从一个向量和一个幅度计算一个新点 (X1, Y1)。假设向量是 90 度(不是弧度),幅度是 10,所以代码看起来像这样:
x1 = X + (10 * Math.Cos(90 * (Math.PI / 180.0)));
y1 = Y + (10 * Math.Sin(90 * (Math.PI / 180.0)));
然后我画一条线来确认结果
DrawLine(X,Y,x1,y1);
但是我的线偏离了 90 度太多了!如果我从传递给 Cos 和 Sin 的角度减去 90,一切正常。所以,我想,我可以忍受。
这是一个屏幕截图:
我正在通过它 90,我期待这条线向西 - 东行。我假设0度是正北。我知道我使用的坐标系是 X 是水平的,Y 是垂直的。
我只是好奇我错过了什么。
【问题讨论】:
-
您的代码对我来说看起来不错。您的矢量指向什么方向(使用北/南/东/西,所以我们也可以想象它)以及您希望它指向什么方向?
-
也许您可以显示它的外观和您期望它的外观的屏幕截图
-
你是如何测量角度的?三角函数期望 theta=0 对应于 +X 轴(东),theta 沿逆时针方向增加。对于罗盘方位,theta=0 对应于正北,顺时针方向增加。
-
我认为这条线从紫色的小线开始?那么这些结果是正确的。 0 度在 x 轴上。因为 90 度 => x=0,y=1。 0 度 = x=1, y=0
-
所以问题是它不是一条海峡:
标签: c# vector trigonometry