habe mich vor drei Tagen wieder dazu entschlossen Open GL lernen zu wollen. Ich habe mich hier schonmal vor ca. einem halben Jahr gemeldet, aber damals irgendwann aufgegeben.
Mein Ziel ist es ein kleines Programm zu schreiben, das ein Koordinatensystem zeichnen soll und Vektoraddition, -subtraktion, -division und -multiplikation veranschaulichen soll (die 3 Vektoren sollen eigentlich nur in das K-System gezeichnet) werden.
Um wieder in das Thema reinzukommen habe ich mir die ersten 3 und das Quickstart-Tutorial durchgelesen durchgelesen und war richtig glücklich, als ich dann ein Programm geschrieben habe, das mir die Worldmatrix veranschaulicht .
Also was ihr da an Tutorials aufbaut ist echt unglaublich und immer eine große Hilfe, da es speziell in diesem Thema sonst nicht soviel zu finden gibt.
Aber ich habe noch ein Problem und hoffe, dass ihr mir einen kleinen Denkanstoß gebt:
Ein normales kartesisches Korrdinatensystem sieht ja so aus:
und ich schaffe es einfach nicht, das richtig zu zeichnen.
Zuerst erstelle ich den DC bzw. RC und erstelle eine Projektionsmatrix mit
, wobei ich immernoch nicht genau herausgefunden habe, was das 60 heißen soll? Es stellt keine Gradzahl da, sondern irgendeinen den Abstand...
Naja, davon habe ich mich erstmal nicht beirren lassen und habe erstmal versucht die Achsen des Koordinatensystem zu zeichnen. Ein kurzer Schnipsel wie ich das mache:
Code:
glTranslatef(0,0,-10);
glrotatef(45,-1,10,0); //dreht die Worldmatrix um 45 um dien Vektor (-1,10,0)
glBegin(gl_Lines);
glcolor3f(255,0,0);
glVertex3f(-100,0,0);
glVertex3f(0100,0,0);
glcolor3f(0,0,255);
glVertex3f(0,-100, 0);
glVertex3f(0,0100, 0);
glcolor3f(0,255,0);
glVertex3f(0,0,-100);
glVertex3f(0,0,0100);
glend;
Allerdings sieht das erzeugte Bild nun so aus:
Frage:
Wenn mein Koordinatensystem (nur von der Perspektive) so aussehen soll wie auf dem obigen Bild, kann ich das nur mit der Prozedur glRotatef lösen oder muss ich die Achsen noch anders zeichnen?
Hoffe ihr versteht mein Problem, wenn nicht einfach nochmal fragen wo's happert,
Registriert: Sa Jan 01, 2005 17:11 Beiträge: 2068
Programmiersprache: C++
Willkommen zurück.
Die 60 sind eine Gradzahl, und zwar den Blickwinkel. Natürlich ist es zugleich auch der Abstand, da sich der Blickwinkel des Users mit dem Abstand zum Monitor verkleinert.
glrotatef(45,-1,10,0); dreht nicht den Vektor, sondern dreht um die Achse die durch den Vektor gegeben ist.
Um das obere Bild zu bekommen musst du einfach um einen anderen Vektor rotieren.
danke für die Antwort die Seite, auf der Frustrum erklärt ist, habe ich mir noch nicht durchgelesen, werde ich aber noch machen. Das Matrixtutorial habe ich mir schon oft durchgelesen und ist echt gut zum Verstehen geeignet. Sehe auch gerade, dass du es verfasst hast.
Mitglieder in diesem Forum: 0 Mitglieder und 5 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.