好的....所以我做了一个快速的图表来解释我希望完成的事情。可悲的是数学不是我的强项,我希望你们中的一个巫师可以给我正确的公式:)这是一个c ++程序,但我真的在寻找公式而不是c ++代码。
好的,现在基本上,红圈是我们的0点,我站在那里。我们上面的蓝色圆圈是300个单位,我认为它是0度的角度。我想知道,如何使用我选择的角度以及我选择的某个距离找到在此图表中找到x,y的点。
我想知道如何找到绿色圆圈的x,y,即225度和500个单位。
所以我假设我必须想办法在所有点上移动距离0,000个单位的圆,而不是根据我想要的角度在该圆上选取一个位置?但是不知道从哪里去。
答案 0 :(得分:2)
看来,给定极坐标,您希望从中获得笛卡尔坐标。这是一些简单的数学,应该很容易做到。
将极坐标(r,O)坐标转换为笛卡尔坐标(x,y)坐标
x = r * cos(O)
y = r * sin(O)
O
theta ,而不是零
参考:http://www.mathsisfun.com/polar-cartesian-coordinates.html
答案 1 :(得分:2)
平面上的点可以用两个主要的数学表示来表示,笛卡尔坐标(因此x,y
)和极坐标:使用距离中心的距离和角度。通常是r
和希腊字母,但让我们使用w
。
根据常规约定,r是从中心(0,0)到您的点的距离,和 逆时针测量角度(正值,顺时针测量为负),0表示右侧水平。
注意极坐标表示中的角度:
角度也可以用弧度表示,π与180°的角度相同,因此π/ 2 90°等等。 π= 3.14(近似值)由2π=半径为1的圆的周长定义。
角度可以用整圆表示。整圆为2π或360°,因此+ 90°与-270°相同,+ 180°和-180°相同,以及3π/ 4和-5π/4,2π和0, 360°和0°等。您可以考虑[-π,π](即[-180,180])或[0,2π](即[0,360])之间的角度,或者根本不限制它们,它不会无所谓。
当你的点在中心(r = 0)时,角度w没有真正定义。
r始终为正数。如果r为负数,则可以更改其符号并添加半圈(π或180°)以获得相同点的坐标。
红色:x = 0,y = 0或r = 0 w =任意值
蓝色:x = 0,y = 300或r = 300且w = 90°
绿色:x = -400,y = -400或r = -565且w = 225°(近似值,我没有做实际测量)
请注意,对于蓝点,您可以使用w = -270°,对于绿色w = -135°等,
最后,您需要在表示之间来回切换三角公式。更容易的转变是从极地到笛卡儿:
x=r*cos(w)
y=r*sin(w)
由于cos²+sin²= 1,毕达哥拉斯等,你可以看到x² + y² = r²cos²(w) + r²sin²(w) = r²
,因此得到r,使用:
r=sqrt(x²+y²)
最后得到角度,我们使用cos/sin = tan
,其中tan是另一个三角函数。从y/x = r sin(w) / (r cos(w)) = tan(w)
开始,您将获得:
w = arctan(y/x) [mod π]
tan是一个函数模数π,而不是2π。 arctan只是表示函数tan的反函数,有时写成tan ^ -1或atan。
通过反转切线,得到-π/ 2和π/ 2(或-90°和90°)之间的结果:您需要最终将π添加到结果中。这是针对[π/ 2,π]和[-π,π/ 2]([90,180]和[-180,-90])之间的角度进行的。这些值由cos的符号表征:从x = r cos(w)
开始,你知道x在所有这些角度都是负的。尝试查看这些角度在图表上的位置,这非常简单。因此:
w = arctan(y/x) + (π if x < 0)
最后,如果是0,则不能除以x。在那个角落的情况下,你有
如果y&gt; 0,w = π/2
如果y&lt; 0,w = -π/2