2012-03-26 16 views
7

Cómo obtener coordenadas de un punto en un sistema de coordenadas cuando todo lo que tengo son las coordenadas de origen (x, y) y el ángulo desde el origen hasta el punto y la distancia desde el origen hasta el punto?Cómo obtener las coordenadas de un punto en un sistema de coordenadas según el ángulo y la distancia

+0

Suena como una pregunta matemática (algebra específicamente) más que una pregunta de cálculo. ¿Conoces las fórmulas necesarias para calcular el nuevo punto? –

+4

http://mathworld.wolfram.com/PolarCoordinates.html o http://en.wikipedia.org/wiki/Polar_coordinate_system –

+0

Depende del tipo de sistema de coordenadas, pero la mayor parte del tiempo usa las funciones trigonométricas simples llamadas pecado(), cos(). – hovanessyan

Respuesta

22

Se utilizan Math.cos, Math.sin así:

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

Tenga en cuenta que Math.cos y Math.sin asume el argumento se da en radianes . Si tiene el ángulo en grados, usaría Math.cos(Math.toRadians(angle)) por ejemplo.

+2

+1: Dado que en realidad usa funciones de Java, que mi respuesta no :) –

+0

+1 para una respuesta completa ... ¡¡¡Eso es lo que es la experiencia !!! – aProgrammer

+0

¿Cómo podría modificarse esto para un sistema 3D? – helion3

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

donde [px py] es el punto que está buscando, [x y] es el "origen", r es la distancia y phi es el ángulo al objetivo desde el origen.

EDITAR: http://en.wikipedia.org/wiki/Polar_coordinate_system Este enlace, que fue útilmente publicado por Bart Kiers, podría arrojar algunos antecedentes.

3

Si d es la distancia y A es el ángulo, que los coordnates del punto serán

(x + d * Cos (A), y + d * sin (A))

+0

Esto es incorrecto ya que no tiene en cuenta que el punto se compensa con algún otro punto arbitrario (x, y). –

+0

@kigurai; Gracias por señalarlo. Editado el código. Estaba en mi mente mientras escribía. No sé cómo me lo perdí ... De todos modos, gracias una vez más ... – aProgrammer

3
Si

r es la distancia desde el origen y a es el ángulo (en radianes) entre el eje X y el punto se puede calcular fácilmente las coordenadas con una conversión de coordenadas polares:

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

(esto supone ese origen se coloca en (0,0); de lo contrario, debe agregar el desplazamiento al resultado final).

El resultado inverso se realiza calculando el módulo del vector (ya que una distancia + ángulo forma un vector) y el arcotangente, que se puede calcular utilizando la función atan2.

r = sqrt(x*2+y*2) 
a = atan2(y,x) 
Cuestiones relacionadas