2012-03-26 469 views
7

如何获取坐标系中某点的坐标时,我所拥有的是原点坐标(x,y)和从原点到点和从起点到点的距离?如何根据角度和距离获取坐标系中某点的坐标

+0

听起来更像一个数学(代数专门)问题,而不是一个计算问题。你知道计算新点的公式吗? – 2012-03-26 12:04:05

+4

http://mathworld.wolfram.com/PolarCoordinates.html或http://en.wikipedia.org/wiki/Polar_coordinate_system – 2012-03-26 12:04:47

+0

取决于坐标系的类型,但大多数时候使用简单的三角函数称为sin (),cos()。 – hovanessyan 2012-03-26 12:05:50

回答

22

您使用Math.cosMath.sin这样的:

pointX = x + distance * Math.cos(angle) 
pointY = y + distance * Math.sin(angle) 

注意Math.cosMath.sin假定在弧度给出说法。如果角度以度为单位,则例如使用Math.cos(Math.toRadians(angle))

+2

+1:因为它实际上使用Java函数,我的答案没有:) – 2012-03-26 12:21:40

+0

+1的完整答案......这就是体验! – aProgrammer 2012-03-26 12:42:37

+0

如何修改3D系统? – helion3 2013-11-27 22:09:53

2
px = x + r * cos(phi) 
py = y + r * sin(phi) 

其中[px py]是您正在搜索的点,[x y]是“出身”,r是距离和phi是角度,从原点目标。

编辑:http://en.wikipedia.org/wiki/Polar_coordinate_system这个由Bart Kiers发布的链接可以产生一些背景信息。

3

如果d是距离,A是角度,比点的coordnates将是

(X + d * cos(A),Y + d * SIN(A))

+0

这是错误的,因为它没有考虑到点偏移了其他任意点(x,y)。 – 2012-03-26 12:20:41

+0

@kigurai;感谢您指出它。编辑代码。在我脑海中打字时,我不知道我是如何错过它的......不管怎样,再次感谢...... – aProgrammer 2012-03-26 12:44:30

3

如果r距离原点的距离和a是角度(以弧度表示)x轴和点之间可以很容易地计算与从极坐标转换的坐标:

x = r*cos(a) 
y = r*sin(a) 

(假定该原点位于(0,0),否则应该将位移添加到最终结果中)。

通过计算向量的模(由于距离+角度构成向量)和反正切,可以通过使用函数来计算反向结果。

r = sqrt(x*2+y*2) 
a = atan2(y,x) 
相关问题