2012-03-26 14 views
7

Come ottenere le coordinate di un punto in un sistema di coordinate quando tutto ciò che ho sono le coordinate di origine (x, y) e l'angolo dall'origine a il punto e la distanza dall'origine al punto?Come ottenere le coordinate di un punto in un sistema di coordinate in base all'angolo e alla distanza

+0

Sembra più una domanda di matematica (algebra specifica) che una domanda informatica. Conosci le formule necessarie per calcolare il nuovo punto? –

+4

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

+0

Dipende dal tipo di sistema di coordinate, ma la maggior parte delle volte usa le semplici funzioni trigonometriche chiamate sin(), cos(). – hovanessyan

risposta

22

si utilizza Math.cos, Math.sin come questo:

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

noti che Math.cos e Math.sin assume l'argomento è dato in radianti . Ad esempio, se si dispone dell'angolo in gradi, si utilizzerà Math.cos(Math.toRadians(angle)).

+2

+1: Dal momento che utilizza effettivamente le funzioni Java, che la mia risposta non ha fatto :) –

+0

+1 per una risposta completa ... Questo è ciò che l'esperienza è !!! – aProgrammer

+0

Come potrebbe essere modificato per un sistema 3D? – helion3

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

dove [px py] è il punto che si sta cercando, [x y] è l ' "origine", r è la distanza e phi è l'angolo al bersaglio dall'origine.

MODIFICA: http://en.wikipedia.org/wiki/Polar_coordinate_system Questo collegamento che è stato utilmente pubblicato da Bart Kiers potrebbe fornire alcune informazioni di base.

3

Se d è la distanza e A è l'angolo, rispetto alle coordnates del punto saranno

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

+0

Questo è sbagliato poiché non tiene conto del fatto che il punto è sfalsato rispetto ad altri punti arbitrari (x, y). –

+0

@kigurai; Grazie per averlo indicato. Modificato il codice Era nella mia mente mentre scrivevo Non so come mi sono perso ... Comunque grazie ancora una volta ... – aProgrammer

3

Se r è la distanza dall'origine e a è l'angolo (in radianti) tra asse xe punto si può facilmente calcolare le coordinate con una conversione da coordinate polari:

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

(ciò presuppone quell'origine è posta a (0,0), altrimenti dovresti aggiungere lo spostamento al risultato finale).

Il risultato inverso viene calcolato calcolando il modulo del vettore (poiché una distanza + angolo fa un vettore) e l'arcotangente, che può essere calcolato utilizzando la funzione atan2.

r = sqrt(x*2+y*2) 
a = atan2(y,x) 
Problemi correlati