Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Jul 18, 2025 04:17

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Translation & Rotation
BeitragVerfasst: Do Mai 29, 2008 08:03 
Offline
DGL Member

Registriert: So Mär 02, 2008 18:47
Beiträge: 30
Hallo,

ich habe eine Animation, bei der ein Koffer zuerst um die die nrgative Z-Achse und dann um die X-Achse rotiert.
Im Anschluß wird der Koffer auf einem Schrank abgelegt.

Das mache ich dann in 2 Translationen :
1. Koffer vom Boden anheben auf Höhe des Schranks
2. Koffer auf den Schrank setzen.

Jetzt habe ich ein Panel mit dem ich die Position des Koffers im Raum anpassen kann.

Mein Problem ist nun, dass nach der Verschiebung des Koffers die Translation zum Schrank nicht mehr korrekt ist.


Meine Vorgehensweise:

rate --> ist die Translation pro Durchgang.
schrank --> Zielwert für den Schrank bleibt unverändert.
kofferpos --> Position des Koffers ( Variabel)
x, y, z --> Maße des Koffers....

Code:
  1.  
  2. //Delta Werte für die Translation
  3.  
  4. double dx = (schrankpos[0] - kofferpos[0] + y +0.5f) / rate ; //Höhe des Schranks
  5. double dz = (schrankpos[1] - kofferpos[1] - x) / rate ; // x - Achse -z entspricht x
  6. double dy = (schrankpos[2] - kofferpos[2] + z +1) / rate ; // -z Bewegung in den Raum hinein.
  7.  


Code:
  1.  
  2. private void setKofferPos(){
  3.  
  4. kofferpos[0] = an.getKofferposX();
  5. kofferpos[1] = an.getKofferposY();
  6. kofferpos[2] = an.getKofferposZ();
  7.  
  8. }
  9.  
  10.  


Zur Laufzeit wird mit der obigen Funktion die Position variiert.

Das Problem liegt eben daran, dass nach den Rotationen die Achsen verdreht sind:

y ist dann -x-Achse
-z ist dann -Y Achse
x ist dann -Z Achse

Wenn ich also vor der Animation eine Verschiebung auf der X-AChse vornehme , dann wirkt sich das nach der Rotation auf
die Höhe aus

:roll:

Wie kann ich das Problem lösen...
Ich weiss hier derzeit nicht weiter.

Viele Grüße
Jörn


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mai 29, 2008 08:41 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 16, 2008 20:26
Beiträge: 158
Wohnort: Berlin
Programmiersprache: c++,c#,java,ruby,php
Ich bin zwar auch noch recht neu in dem Feld, aber ich glaube das hängt ganz klar mit der Funktionsweise von Opengl zusammen.
Also du machst erst eine Translation dann Rotierst du und dann machst du wieder eine Translation und das ist dann nicht korrekt die Verschiebung? Ist das dein Problem? Wenn ja, dann solltest du dir vll. diese Seite mal angucken http://www.erinacom.de/ogl/themen/matrix01.html , ich finde dort wird das ganz gut erklärt.
Am besten du machst immer erst die Translation und dann die anderen Operationen, wie Rotate und Scale. Außer du willst einen der Effekte explizit erzeugen.
Ich hoffe das ich dein Problem verstanden hab, ansonsten tut es mir leid, dann wäre vll ein Bild noch Hilfreich.
mfg revolte

_________________
System: Phenom XII X4 955 3,21Ghz , GTX 560 TI, 4GB-Ram, Windows 7 64x


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mai 29, 2008 09:32 
Offline
DGL Member

Registriert: So Mär 02, 2008 18:47
Beiträge: 30
Ich glaube, dass Du mein Problem nicht erfasst hast.

Ich möchte einen Algorithmus programmieren, bei dem ein Koffer, der an einer beliebigen Position im Raum steht, immer
auf einem Schrank abgelegt wird, der eine fixe Position hat.

Dabei muss der Koffer erst die Position im Raum einnehmen, wird dann um die negative Z-Achse um 90 Grad rotiert,
dann um die X-Achse um 90 Grad.

Zum Schluß eine Translation auf die Höhe des Schranks und dann eine 2. Translation in die tiefe des Raumes auf den Schrank.


Dadurch, dass mein Delta X nach 2 Rotationen leider nicht mehr mein DeltaX ist, sondern zu meiner -Z-Achse wird,
stimmt die Translation am Ende nicht mehr.

:?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mai 29, 2008 09:57 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Jun 20, 2003 13:59
Beiträge: 134
Hallo,

ich hoffe ich hab dein problem jetzt richtig verstanden und glaube die folgenden tutorials könnten dir weiterhelfen:

Objekt gedreht und dennoch nach vorne bewegt
Objekt immer um eigene Achse drehen

_________________
ghost-site.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mai 29, 2008 11:50 
Offline
DGL Member

Registriert: So Mär 02, 2008 18:47
Beiträge: 30
Moin,

danke erst einmal für die Links .. Das ist wohl ganz anschaulich.

Eine Frage: TVector3f ist ja von GLScene

Das hab ich leider nicht...

Man könnte das doch auch mit einfachen Arrays machen ?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mai 29, 2008 12:26 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Jun 20, 2003 13:59
Beiträge: 134
Nein der TVector3f und alle anderen typen und Funktionen für Matrix- und Vektorberechnungen und den Tutorials stammen aus der geometry.pas und die liegt meines Wissens nach dem DGLSDK bei.

_________________
ghost-site.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mai 29, 2008 16:56 
Offline
DGL Member

Registriert: Mi Mär 31, 2004 15:24
Beiträge: 114
Gerade sehe ich, du schreibst gar kein Delphi :)

So könntest du z.B. den 3-Float-Vektor definieren:
Code:
  1. TVector3f = array[0..2] of GLFloat;


Musst du jetzt nur noch in deine Sprache übersetzen ;)

Viele Grüße


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Foren-Übersicht » Programmierung » Einsteiger-Fragen


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 8 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.008s | 14 Queries | GZIP : On ]