根据角度和距离在空间中找到2D点

时间:2014-11-27 21:39:50

标签: c++ math geometry

好的....所以我做了一个快速的图表来解释我希望完成的事情。可悲的是数学不是我的强项,我希望你们中的一个巫师可以给我正确的公式:)这是一个c ++程序,但我真的在寻找公式而不是c ++代码。

Diagram

好的,现在基本上,红圈是我们的0点,我站在那里。我们上面的蓝色圆圈是300个单位,我认为它是0度的角度。我想知道,如何使用我选择的角度以及我选择的某个距离找到在此图表中找到x,y的点。

我想知道如何找到绿色圆圈的x,y,即225度和500个单位。

所以我假设我必须想办法在所有点上移动距离0,000个单位的圆,而不是根据我想要的角度在该圆上选取一个位置?但是不知道从哪里去。

2 个答案:

答案 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

相关问题