2012-03-26 13 views
7

Wie man Koordinaten eines Punktes in einem Koordinatensystem erhält, wenn alles, was ich habe, die Koordinaten des Ursprungs (x, y) und des Winkels vom Ursprung zu ist der Punkt und die Entfernung vom Ursprung zum Punkt?Wie man Koordinaten eines Punktes in einem Koordinatensystem basierend auf Winkel und Entfernung erhält

+0

Klingt eher nach einer Mathematik (Algebra spezifisch) Frage, als eine Computer-Frage. Kennen Sie die Formeln, um den neuen Punkt zu berechnen? –

+4

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

+0

Hängt vom Typ des Koordinatensystems ab, aber die meiste Zeit verwendet die einfachen trigonometrischen Funktionen, die sin genannt werden(), cos(). – hovanessyan

Antwort

22

Sie verwenden Math.cos, Math.sin wie folgt aus:

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

Beachten Sie, dass Math.cos und Math.sin das Argument annimmt, in Radiant gegeben. Wenn Sie den Winkel in Grad haben, würden Sie zum Beispiel Math.cos(Math.toRadians(angle)) verwenden.

+2

+1: Da es tatsächlich Java-Funktionen verwendet, was meine Antwort nicht tat :) –

+0

+1 für eine vollständige Antwort ... Das ist, was Erfahrung ist !!! – aProgrammer

+0

Wie könnte dies für ein 3D-System geändert werden? – helion3

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

wo [px py] ist der Punkt, den Sie suchen, [x y] die „Herkunft“ ist, ist der Abstand r und phi ist der Winkel zum Ziel vom Ursprung.

EDIT: http://en.wikipedia.org/wiki/Polar_coordinate_system Dieser Link, der hilfreich von Bart Kiers geschrieben wurde, könnte einige Hintergrundinformationen liefern.

3

Wenn d der Abstand und A ist der Winkel als der coordnates des Punktes wird

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

+0

Dies ist falsch, da nicht berücksichtigt wird, dass der Punkt um einen anderen beliebigen Punkt (x, y) versetzt ist. –

+0

@ kigurai; Danke, dass du es gezeigt hast. Bearbeitete den Code. Es war in meiner Meinung beim Tippen Ich weiß nicht, wie ich es verpasst habe ... Jedenfalls noch einmal vielen Dank ... – aProgrammer

3

r Wenn der Abstand vom Ursprung ist und a ist der Winkel (im Bogenmaß) zwischen dem x-Achse und dem Punkt, kann man einfach die Koordinaten mit einer Umwandlung von Polarkoordinaten berechnen:

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

(dies setzt voraus, dieser Ursprung wird auf (0,0) gelegt, andernfalls sollten Sie die Verschiebung zum Endergebnis hinzufügen).

Das inverse Ergebnis wird durch Berechnen des Modulo des Vektors (da ein Abstand + Winkel einen Vektor bilden) und des Arkustangens, der unter Verwendung der Funktion atan2 berechnet werden kann, berechnet.

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