Kugel-, Zylinder-, Kartesisches Koordinatensystem Objekte umrechnen.

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Kugel-, Zylinder-, Kartesisches Koordinatensystem Objekte umrechnen.
Hallo zusammen,

ich bin ein GDV-Anfänger und ich habe Schwierigkeiten Schritt für Schritt Objekte aus oben genannten Koordinatensystemen hin und her umzuzeichnen.
Vor allem von Kugelkoordinaten in das kartesische Koordinatensystem und umgekehrt.
Hat jemand eine Art “Schritt-für-Schritt-Anleitung” wie man die Höhe, Tiefe, Breite, Koordinaten nacheinander in das jeweilige Koordinatensystem umzeichnen kann?
Ich mache das bisher etwas sporadisch ohne einer richtigen Vorgehensweise und mache deswegen Fehler.
Zumbeispiel bei dieser Aufgabe:

Danke für jeden Tipp.

1 „Gefällt mir“

Liegt bei dir das Problem beim Umrechnen oder ausschließlich beim Zeichnen?


Beim Zeichnen, also ich weiss nicht, wie ich strukturiert vorgehen kann um von jeweiligen Koordinaten hin und her zeichnene zu können.


Dann versuche ich mich mal an den ersten Schritt der Anleitung: Seien zunächst x, y, z in (-infty, infty); r in [0, infty); phi in [0, 2*pi) und theta in [0, pi). (Bei den Winkeln ist extrem wichtig, dass man da schaut, ob die Intervalle offen sein sollen oder nicht - teste also bitte immer, ob da auch das herauskommt, was man braucht.) Dann lassen sich die Zylinderkoordinaten folgendermaßen definieren:

x = r * cos(phi)
y = r * sin(phi)
z_kartesisch = z_Zylinder

und für die Kugelkoordinaten gilt analog:

x = r * sin(theta) * cos(phi)
y = r * sin(theta) * sin(phi)
z = r * cos(theta)

Dementsprechend gilt dann für die Rücktransformation von den kartesischen Koordinaten in Zylinderkoordinaten:

r = sqrt(x^2 + y^2)
phi = arctan(y / x)
z_Zylinder = z_kartesisch

und für die Kugelkoordinaten:

r = sqrt(x^2 + y^2 + z^2)
phi = arctan(y / x)
theta = arctan(sqrt((x^2 + y^2) / z))

Wenn man jetzt die Körper genau ansieht, erkennt man, dass im oberen Körper der Radius zwischen zwei verschiedenen Radien variiert und der Abstand zwischen den Winkeln gerade 2 * pi ist. Somit ist der Körper ein Hohlzylinder. Beim unteren Körper ist die Differenz zwischen den Azimutalwinkeln (= phi) durch 2 * pi und bei theta ist die Differenz gerade pi / 2, somit haben wir, da auch der Radius variiert, eine Halbhohlkugel.

Da man hier mit Zylindern und Kugeln arbeiten muss, würde ich rationale Bezierflächen verwenden, approximativ kann man das aber vermutlich schneller lösen. Wie man das in OpenGL implementiert, kann man sicherlich im einen oder anderen Tutorial in Google finden. Danach muss man sich noch Gedanken über Blickwinkel und Shader machen, vermutlich wird aber Phong-Shading ausreichen.


Vielen Dank für die ausführliche Erkärung.

Ich hätte noch eine Frage zu dem Kugelkoordinatensystem.
Ich stelle mir die Erdkugel in dem Kugelkoordinatensystem so vor:

Wenn ich nun den Ausschnitt von dem Würfel habe, wie in der Teilaufgabe 2a zu sehen ist.
Wie würde das im Kartesischen Koordinatensystem aussehen?


Deine Skizze erklärt das doch ganz gut. Du bekommst einen Kugelkeil.