3D-Koordinaten in 2D-Koordinaten umrechnen
Verfasst: 26.06.2007 22:19
Tagchen mal wieder!
Da ich momentan einen Ferienjob bei der Bosch hier um die Ecke mache
und zwischen dem Abarbeiten der Teile auf dem Fließband immer wieder
jede Menge Zeit bleibt, die ich zum Ideen sammeln, grübeln und rechnen
verwende, fällt ab und zu mal ein brauchbarer Code an.
Einen davon stelle ich hier mal vor.
Mit folgender Include kann man eine oder mehrere virtuelle Kameras im
3D-Raum mit Drehung um alle drei Achsen erstellen und sogar den
Öffnungswinkel einstellen. Dazu gibt es eine Procedure, die
3D-Koordinaten in die 2D-Koordinaten aus Sicht der Kamera umrechnet.
Außerdem kann man die relativen Koordinaten zur Kamera zurückgeben
lassen.
Convert3Dto2D.pbi
Und jetzt ein kleiner Beispielcode mit einem farbigen Würfel und einer Pixel-Kugel drumherum.
Example.pb (Link tot)
Die Steuerung:
Maus:
- links/rechts: Drehung um Y-Achse
- hoch/runter: Drehung um X-Achse
Tastatur:
- links/rechts: Bewegung nach links oder rechts
- hoch/runter: Bewegung nach vorne oder hinten
- links/rechts + STRG: Bewegung nach oben oder unten
- hoch/runter + STRG: Drehung um X-Achse
- A/Y: Drehung um X-Achse
- S/X: Drehung um Z-Achse
- D/C: Ranzoomen oder Rauszoomen
- ESC: Beenden
Bemerkung:
Das langsamste an der Include ist die Berechnung der Kamera-Achsen,
wenn ein oder mehrere Winkel geändert wurden. Die Umrechnungs-
Procedure selbst kommt ohne Winkelfunktionen aus und ist
daher auch recht schnell. Ruckelfreies Berechnen von über 200.000
Koordinaten ist problemlos möglich! Auf schnelleren Rechnern als meinem
geht es sicherlich noch höher.
Viel Spaß damit!
Auch wenn der Code in diesem Forum steht, freue ich mich über
Feedback, Verbesserungsvorschläge, Kritik, usw.
///Edit1:
Codes durch Links ersetzt.
Da ich momentan einen Ferienjob bei der Bosch hier um die Ecke mache
und zwischen dem Abarbeiten der Teile auf dem Fließband immer wieder
jede Menge Zeit bleibt, die ich zum Ideen sammeln, grübeln und rechnen
verwende, fällt ab und zu mal ein brauchbarer Code an.
Einen davon stelle ich hier mal vor.
Mit folgender Include kann man eine oder mehrere virtuelle Kameras im
3D-Raum mit Drehung um alle drei Achsen erstellen und sogar den
Öffnungswinkel einstellen. Dazu gibt es eine Procedure, die
3D-Koordinaten in die 2D-Koordinaten aus Sicht der Kamera umrechnet.
Außerdem kann man die relativen Koordinaten zur Kamera zurückgeben
lassen.
Convert3Dto2D.pbi
Und jetzt ein kleiner Beispielcode mit einem farbigen Würfel und einer Pixel-Kugel drumherum.
Example.pb (Link tot)
Die Steuerung:
Maus:
- links/rechts: Drehung um Y-Achse
- hoch/runter: Drehung um X-Achse
Tastatur:
- links/rechts: Bewegung nach links oder rechts
- hoch/runter: Bewegung nach vorne oder hinten
- links/rechts + STRG: Bewegung nach oben oder unten
- hoch/runter + STRG: Drehung um X-Achse
- A/Y: Drehung um X-Achse
- S/X: Drehung um Z-Achse
- D/C: Ranzoomen oder Rauszoomen
- ESC: Beenden
Bemerkung:
Das langsamste an der Include ist die Berechnung der Kamera-Achsen,
wenn ein oder mehrere Winkel geändert wurden. Die Umrechnungs-
Procedure selbst kommt ohne Winkelfunktionen aus und ist
daher auch recht schnell. Ruckelfreies Berechnen von über 200.000
Koordinaten ist problemlos möglich! Auf schnelleren Rechnern als meinem
geht es sicherlich noch höher.
Viel Spaß damit!
Auch wenn der Code in diesem Forum steht, freue ich mich über
Feedback, Verbesserungsvorschläge, Kritik, usw.
///Edit1:
Codes durch Links ersetzt.