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
risposta
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)
)
.
+1: Dal momento che utilizza effettivamente le funzioni Java, che la mia risposta non ha fatto :) –
+1 per una risposta completa ... Questo è ciò che l'esperienza è !!! – aProgrammer
Come potrebbe essere modificato per un sistema 3D? – helion3
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.
Se d è la distanza e A è l'angolo, rispetto alle coordnates del punto saranno
(x + d * Cos (A), y + d * sin (A))
Questo è sbagliato poiché non tiene conto del fatto che il punto è sfalsato rispetto ad altri punti arbitrari (x, y). –
@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
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)
Sembra più una domanda di matematica (algebra specifica) che una domanda informatica. Conosci le formule necessarie per calcolare il nuovo punto? –
http://mathworld.wolfram.com/PolarCoordinates.html o http://en.wikipedia.org/wiki/Polar_coordinate_system –
Dipende dal tipo di sistema di coordinate, ma la maggior parte delle volte usa le semplici funzioni trigonometriche chiamate sin(), cos(). – hovanessyan