myGully.com

myGully.com (https://mygully.com/index.php)
-   Programmierung (https://mygully.com/forumdisplay.php?f=67)
-   -   [JAVA] atan2 Polarform?? (https://mygully.com/showthread.php?t=2150441)

wa53kefa 28.10.10 21:14

[JAVA] atan2 Polarform??
 
Hallo Leute,

ich habe mal wieder ein kleines Problem,

und zwar möchte ich ein Unterprogramm schreiben, dass eine komplexe Zahl in Polarform darstellt. Meine erste Idee war (komplexe Zahl als Feld mit 2 Einträgen), Polarinformationen in ein neues Feld einzuspeichern.

sowas wie:
Code:

//unterprogramm zur polarformdarstellung
//feld[] hat imma nur 2 Einträge da komplexe Zahl
//rückgabewert double[] Feld mit 2 Einträgen: Betrag und Phase

public static double[] polarisiere (feld[]){           
    double[] polar = new double[2];
    polar[0]= Math.sqrt( feld[0]*feld[0]+feld[1]*feld[1]);
    polar[1]= Math.atan((double)feld[1]/feld[0]);
    return polar;
}
"main"{
    int[] komplex= new int [2];
    komplex = {1 , 5};  //wobei 1 Real- und 5 Imaginärteil repräsentieren soll
    double[] polar = new double[2];
    polar = polarisiere (komplex);
    System.out.print("Betrag: "+polar[0]+" Phase: "+polar[1]+"\n");
}

gibt er mir ja das richtige aus.

jetzt habe ich aber die Funtion Math.atan2(y,x) entdeckt und weiß aber nicht genau was es macht bzw was es zurückgibt. ein blick im Internet verrät dass der Rückgabewert (r,phi) ist (also betrag und winkel). wie kann ich denn jetzt atan2 in meinem bsp. richtig verwenden?

Wenn ich schreibe
Code:

public static double[] polarisiere (feld[]){
    return (Math.atan2(feld[1], feld[0]));
}

gibt java mir eine Speicheradresse oder sowas aus.

PornoPenner 28.10.10 21:32

Die Oracle-Packages sind alle dokumentiert (siehe Oracle-Website):

Returns:
the theta component of the point (r, theta) in polar coordinates that corresponds to the point (x, y) in Cartesian coordinates.

wa53kefa 29.10.10 20:12

bitte schließen,

da hier eh nicht weitergeholfen wurde....

germgerm 29.10.10 23:23

Du hast den Winkel zuerst mit

Code:

        double dWinkel = Math.atan(feld[1]/feld[0]);
berechnet.

Mit deiner zweiten Math-Funktion erhältst du ebenfalls den Winkel, aber ohne Länge, die musst du weiterhin selbst berechnen. Das Dividieren kannst du dir dadurch sparen, die Division durch Null musst du weiterhin überprüfen:

Code:

        double dWinkel = Math.atan2(feld[1], feld[0]);
Wobei ich das feld-Array auf jeden Fall gleich als double und nicht als int definieren würde. Bzw kein array sondern gleich eine Klasse... egal.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:27 Uhr.

Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.