Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

27.07.2010, 15:27

Kugelkoordinaten <-> kartesische Koordinaten

Hallo,

wenn ich eine kartesische Rotation auf ein Objekt anwende (z.B. (30°, 40°, 50°)), wie kriege ich dann raus, wie diese Rotation im Kugelkoordinatensystem aussieht? Ich weiß zwar, wie man das für einen Punkt ausrechnet, nicht aber für die Rotation selber,

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

2

28.07.2010, 12:01

Das mutet mir ein wenig putzig an, weil in Kugelkoordinaten braucht du eigentlich nur die Winkel addieren oder substrahieren, wenn ich nicht gerade total auf den Schlauch stehe. Prinzipiell gibt es aber auch eine Transformationsmatrix. Wenn du also eine Rotationsmatrix in kartesischen Koordinaten hast, sollte eine Multiplikation die Rotationsmatrix in Kugelkoordinaten ergeben, wobei ich ehrlich gesagt schon länger nicht mehr damit gearbeitet habe und mein Gedächtnis nicht das beste ist.
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

3

30.07.2010, 11:17

Also wenn ich das richtig sehe, dann entspricht die kartesische y-Rotation einer Rotation um den Azimut-Winkel und eine kartesische x-Rotation der Rotation um den Polarwinkel. So gesehen kann man diese beiden also einfach addieren.
Die Frage ist jetzt, wie geht es mit der z-Rotation? Ist die überhaupt darstellbar, weil ich wüsste nicht wie?

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

4

30.07.2010, 11:32

Also wenn ich das richtig sehe, dann entspricht die kartesische y-Rotation einer Rotation um den Azimut-Winkel und eine kartesische x-Rotation der Rotation um den Polarwinkel. So gesehen kann man diese beiden also einfach addieren.
Die Frage ist jetzt, wie geht es mit der z-Rotation? Ist die überhaupt darstellbar, weil ich wüsste nicht wie?

Was genau meinst du eigentlich mit Rotation in Polarkoordinaten und was willst du damit bezwecken!? Ich denk mal du meinst mit kartesischen Koordinaten Eulerwinkel!? Was willst du da addieren? Wenn ich dich richtig verstehe dann wird das nur funktionieren wenn deine Eulersequenz yxz ist und z wird in der Tat interessant...

5

04.08.2010, 20:00

Ich habe das Problem jetzt erstmal dadurch zumindest temporär angewandt, dass ich doch eine kartesische Rotation benutze.

Ich hänge aber immernoch an folgendem Problem: Man stelle sich eine quadratische Textur vor, die in einem kartesischen Koordinatensystem bei (0, 0, 0) mit Normale entlang der y-Achse rumgammelt. Diese rotiere ich jetzt um 45° um die y-Achse, d.h. wenn ich von oben drauf gucke, ähnelt es mehr einer Raute.
Nun habe ich eine zweite Textur, die ich mit der gleichen Ausrichtung bei (0, 0, 0) erstelle und dann auf der y-Achse nach oben schiebe. Jetzt möchte ich von dieser Textur pixelweise Strahlen entland der y-Achse nach unten schießen und "übernehmen was ich sehe". D.h. am Ende werde ich in der Mitte der oberen Textur das rautenförmige Abbild der unteren Textur sehen, während die Bereiche in den Ecken schwarz sind.

Die Frage ist, wie mache ich das? Dazu müsste ich ja pixelweise irgendwie eine Transformation durchführen und auch pixelweise die Textur abfragen können (die räumliche Beziehung der beiden Texturen ist mir bekannt). Dann kann es dabei ja noch zu Rundungsfehlern kommen bzw. ich muss mir überlegen, ob ich nicht sogar eine Filterung anwende, wenn so ein Strahl nicht mehr genau das Zentrum eines Pixels trifft, etc. Ist das überhaupt realisierbar?

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

6

04.08.2010, 23:29

Realisierbar sicher, irgendeine Form von Resampling wirds brauchen. Die Frage die sich mir jetzt stellt ist aber: Wtf, was willst du damit bezwecken und wo genau kommen da Kugelkoordinaten ins Spiel?^^

7

08.08.2010, 11:17

Also wenn dich das wirklich brennend interessiert, kann ich dir die Aufgabenstellung meiner Bachelorarbeit schicken ;)

Ansonsten weiß ich jetzt theoretisch, wie es geht, mir fehlen aber noch ein paar mathematische Grundlagen:

Wir stellen uns wieder eine quadratische xz-Ebene im Ursprung, Ausrichtung entlang y-Achse vor. Darüber, auf y=1 liegt ebenfalls eine xz-Ebene mit der Ausrichtung nach unten, also -y. Die beiden Ebenen schauen sich also quasi an. Wenn ich die obere Ebene jetzt um x° um die y-Achse rotiere, dann erhalte ich ja dieselbe "Sicht" auf die untere Textur, wie wenn ich die untere um -x° rotiere und die obere festhalte. Das funktioniert mit jeder Art von Rotation.
Problematisch wird es, wenn ich mehrere Rotationen kombinieren will. Z.B. wenn ich die obere Ebene erst um x° um die x-Achse und y° um die y-Achse rotiere, dann erhalte ich nicht mehr die gleiche Ansicht, wie wenn ich die untere Ebene erst um -x um die x-Achse, dann -y um die y-Achse rotiere, sondern ich muss jetzt nach dem ersten Rotationsschritt um die y-Achse des Objektkoordinatensystems rotieren.

Ich hoffe es wird irgendwie klar, was ich meine. Ich bin jetzt auf der Suche nach einem Weg, wie ich nach dem ersten Rotationsschritt an die Basis des Objektkoordinatensystems kommt.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

8

08.08.2010, 11:28

Ok, den Zusammenhang mit Kugelkoordinaten seh ich aber immer noch nicht. Die Basis des Objektkoordinatensystems bekommst du ganz einfach indem du aus deiner Transformationsmatrix (die bekommst du z.B. indem du eben entsprechend Rotationsmatritzen multiplizierst) die Zeilen bzw. Spaltenvektoren nimmst (hängt von deiner Konvention ab welche die richtigen sind).

9

10.08.2010, 10:44

Ich habe die räumliche Beziehung zweier Lichtquellen durch Kugelkoordinaten beschrieben, da sie im zugrunde liegenden Simulator kugelförmig um die Szene angeordnet sind.

Nochmal was ganz anderes: Gibt es eigentlich ein möglichst kostenloses Programm, mit dem man solche 2D/3D Skizzen erstellen kann?

Werbeanzeige