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

Aktuelle Zeit: Mi Jul 09, 2025 07:25

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: GlRotate-Diagonale-Problem
BeitragVerfasst: Sa Jul 07, 2007 20:11 
Offline
DGL Member

Registriert: Sa Jul 07, 2007 18:19
Beiträge: 4
Hallo,

ich habe folgendes Problem:

Ich rufe diese Funktion auf:

1) glRotatef(12.0, 12.0, 12.0, 0.0);
// 12 Grad wird gedreht um die Diagonale der xy-Ebene.

-- Richtig ?

-- Warum wurde hier für x und y 12.0 angegeben? Es reicht
doch 1.0 oder ?

-- Wie sieht dieser obige Aufruf als Geradengleichung aus?
Also so z.B. :

M = ROTATEx(12) * ROTATEy(12) * Translate * P, wobei M die Modelview-Matrix ist und P der Punkt

Das habe ich probiert, ist aber falsch:

glRotatef(12.0, 0.0, 12.0, 0.0); // WRONG!
glRotatef(12.0, 12.0, 0.0, 0.0); // WRONG!

Helft mir doch bitte?

Gruss
SmartyShark


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Jul 07, 2007 20:25 
Offline
DGL Member

Registriert: Sa Okt 22, 2005 20:24
Beiträge: 291
Wohnort: Frauenfeld/CH
procedure glRotated(angle: TGLdouble; x: TGLdouble; y: TGLdouble; z: TGLdouble);

so ist die procedure angegeben. Das heisst, wenn du um x 90° drehen willst, gibst du z.B. glRotated(90, 1,0,0) ein.

Der erste Parameter ist immer der Winkel. Die anderen 3, um welche achse gedreht wird.

_________________
bester uo-shard: www.uosigena.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: ?
BeitragVerfasst: So Jul 08, 2007 13:23 
Offline
DGL Member

Registriert: Sa Jul 07, 2007 18:19
Beiträge: 4
Hallo,

Wie die Funktion mit einer Achse funktioniert
ist ja leicht.

Ich will aber wissen wie dieser Aufruf mit zwei Achsen aussieht ?

glRotatef(12.0, 1.0, 1.0, 0.0)

Man kann diesen Aufruf noch anders beschreiben z.B. erstmal
Translate und dann Rotate etc.

Wie geht das ?

kann mir keiner helfen ?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jul 08, 2007 14:26 
Offline
DGL Member

Registriert: Sa Okt 22, 2005 20:24
Beiträge: 291
Wohnort: Frauenfeld/CH
achso machs einfach so:

glRotatef(12.0, 1.0, 0, 0.0)
glRotatef(12.0, 0, 1.0, 0.0)

somit kannst du auch die Winkel unabhängig wählen. Mach ich eigentlich immer so.

_________________
bester uo-shard: www.uosigena.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: ?
BeitragVerfasst: So Jul 08, 2007 15:13 
Offline
DGL Member

Registriert: Do Mai 30, 2002 18:48
Beiträge: 1617
SmartyShark hat geschrieben:
Ich will aber wissen wie dieser Aufruf mit zwei Achsen aussieht ?

Das kommt natürlich darauf an, mit welchen Achsen Du es darstellen willst - da gibt es nämlich beliebig viele Möglichkeiten. Am besten rechnet sich sowas aber in Quaternionen - die bieten sich an, weil sie die Darstellung in Achsenform gleich mitführen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Hi
BeitragVerfasst: So Jul 08, 2007 15:49 
Offline
DGL Member

Registriert: Sa Jul 07, 2007 18:19
Beiträge: 4
Hi,

zur ersten Antwort :

Zitat:
glRotatef(12.0, 1.0, 0, 0.0)
glRotatef(12.0, 0, 1.0, 0.0)


Falsch, das ist nicht dasselbe und hat Nebeneffekte! Deswegen benutzt man sogennante
Quaternionen.

Trotzdem danke für die Antwort.

zur zweiten Antwort :

Zitat:
Das kommt natürlich darauf an, mit welchen Achsen Du es darstellen willst - da gibt es nämlich beliebig viele Möglichkeiten. Am besten rechnet sich sowas aber in Quaternionen - die bieten sich an, weil sie die Darstellung in Achsenform gleich mitführen.


Du hast vollkommen recht. Du bist hier einer der sich auskennt nicht einfach funktionen niederschreibt.
Das habe ich jetzt an deinem Posting gesehen. Also stimmt in der Grafischen Datenverarbeitung
gibt es Quaternionen.

Meine Frage im detail ist so. ich komme nicht auf die Lösung :

glRotatef(12.0, 12.0, 12.0, 0.0);
glBegin(GL_POINTS);
glVertex3f(1.0, 0.0, 2.0)
glEnd();

1) Geben Sie die Geradengleichung der Rotationsachse an, die beim glRotatef-Befehl verwendet wird.

??? Quaternionen ? Ich glaube nicht, eher eine andere Schreibweise oder liege falsch ?

2) Wie lautet die View-Koordinaten von Punkt A. Nur die Formel aufschreiben (Z.B. M = Rxy(12) * P)
Führen Sie die Rotation auf Ihnen bekannte Rotationen zurück!

??? Wie schreibe ich das als Formel, wenn ich zwei Achsen habe. Also

M = Rx(12) * Ry(12) * P, wäre falsch würde ich sagen. Man kann nähmlich das mit zwei Achsen
auch mit Hilfe einer Translation schreiben glaube ich zu meinen.


Kannst du mir helfen ??


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Einfacher
BeitragVerfasst: So Jul 08, 2007 16:04 
Offline
DGL Member

Registriert: Sa Jul 07, 2007 18:19
Beiträge: 4
Das ganze einfacher :

glRotatef(12.0, 1.0, 1.0, 0.0);

- Wie sieht die Matrix in homogenen 4x4 Koordinaten aus. Man kann diese als Multiplikation
von Matrizen aufstellen.

?


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 » OpenGL


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 9 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:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.007s | 16 Queries | GZIP : On ]