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

Aktuelle Zeit: Sa Jul 05, 2025 14:52

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



Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Feedback mit Fragen
BeitragVerfasst: Mo Okt 13, 2008 13:43 
Offline
DGL Member

Registriert: Do Dez 06, 2007 20:12
Beiträge: 5
Hallo,

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 :mrgreen:.
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:
Bild
und ich schaffe es einfach nicht, das richtig zu zeichnen.

Zuerst erstelle ich den DC bzw. RC und erstelle eine Projektionsmatrix mit
Code:
  1. gluPerspective(60,Panel1.Width/Panel1.Height,1,1000);
, 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:
  1.  
  2.   glTranslatef(0,0,-10);
  3.  
  4.   glrotatef(45,-1,10,0); //dreht die Worldmatrix um 45 um dien Vektor (-1,10,0)
  5.  
  6.   glBegin(gl_Lines);
  7.     glcolor3f(255,0,0);
  8.     glVertex3f(-100,0,0);
  9.     glVertex3f(0100,0,0);
  10.     glcolor3f(0,0,255);
  11.     glVertex3f(0,-100, 0);
  12.     glVertex3f(0,0100, 0);
  13.     glcolor3f(0,255,0);
  14.     glVertex3f(0,0,-100);
  15.     glVertex3f(0,0,0100);
  16.   glend;
  17.  

Allerdings sieht das erzeugte Bild nun so aus:
Bild

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,

Gruß Looper


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Okt 13, 2008 14:09 
Offline
Ernährungsberater
Benutzeravatar

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.

Edit: Nach Einsteiger-Fragen verschoben.

_________________
Steppity,steppity,step,step,step! :twisted:
❆ ❄ ❄ ❄ ❅ ❄ ❆ ❄ ❅ ❄ ❅ ❄ ❅ ❄ ❄
❄ ❄ ❄ ❅ ❄ ❄ ❄ ❅ ❄ ❄ ❆ ❄ ❄


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Okt 13, 2008 14:32 
Offline
DGL Member

Registriert: Do Dez 06, 2007 20:12
Beiträge: 5
achso.

Mit Betrachtunsgfeld ist der Blickwinkel gemeint.
Um nochmal auf den Vektor zurückzukommen, (-10,2.0) ist der richtige, und zwar um -10° gedreht.

Vielen Dank für die schnelle Antwort.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Okt 13, 2008 17:56 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Guck mal hier: Frustum
Daher kommt die 60. ;)

Und glRotate(30,10,2,0) ist ungleich
glRotate(30,10,0,0) + glRotate(30,0,2,0);

Du solltest dir auch noch das Tutorial_Matrix2 anschauen. Das hilft bestimmt auch.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Okt 16, 2008 11:33 
Offline
DGL Member

Registriert: Do Dez 06, 2007 20:12
Beiträge: 5
Hey

danke für die Antwort :wink:
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.


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


Wer ist online?

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.

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