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

Aktuelle Zeit: Fr Jul 18, 2025 00:57

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: Mond dreht sich nicht um die Erde!
BeitragVerfasst: So Mär 12, 2006 21:07 
Offline
DGL Member

Registriert: Di Feb 07, 2006 20:22
Beiträge: 27
Hi all,

es geht mal wieder um das schöne Sonnensystem was in Tutorial 3 erstellt wird. Ich wollte das Programm mal nachbauen, allerdings habe ich das Problem, dass sich der Mond um den Startpunkt der Ebene dreht, nicht jedoch um sie, da sie ja sleber um die Sonne rotiert.

Was mache ich falsch?

Code:
  1.  
  2. procedure TForm1.Render;
  3. begin
  4.   glMatrixMode(GL_Modelview);
  5.   glLoadIdentity;
  6.   glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
  7.   glTranslatef(0, 0,-5);
  8.   //Okay starten wir mit der Sonne...
  9.   glpushMatrix;
  10.         Rot1:= Rot1 +(Zeitfaktor/1)*20;
  11.         glrotatef(Rot1,0,1,0);
  12.         //Zeichnen
  13.         glBegin(GL_TRIANGLES);
  14.         glColor3f(1, 1, 0); glVertex3f(-1,-1, 0);
  15.         glColor3f(1, 1, 0); glVertex3f( 1,-1, 0);
  16.         glColor3f(1, 1, 0); glVertex3f( 0, 1, 0);
  17.         glEnd;
  18.   glPoPMatrix;
  19.   //Jetzt kommt die Erde
  20.   glPushMatrix;
  21.         Rot2:= Rot2 +(Zeitfaktor/1)*30;
  22.         glrotatef(Rot2,0,1,0);
  23.         glTranslateF(2,0,0);
  24.         Rot3:=Rot3 + (Zeitfaktor/1)*25;
  25.         glRotateF(Rot3,0,1,0);
  26.         glScaleF(0.25,0.25,0.25);
  27.          glBegin(GL_TRIANGLES);
  28.          glColor3f(0, 0, 1); glVertex3f(-1,-1, 0);
  29.          glColor3f(0, 0, 1); glVertex3f( 1,-1, 0);
  30.          glColor3f(0, 0, 1); glVertex3f( 0, 1, 0);
  31.          glEnd;
  32.   glPopMatrix;
  33.   //Jetzt noch der Mond
  34.   glPushMatrix;
  35.         glTranslateF(2,0,0);
  36.         Rot4:=Rot4 + (Zeitfaktor/1)*20;
  37.         glRotateF(Rot4,0,1,0);
  38.         Rot5:=Rot5 + (Zeitfaktor/1)*35;
  39.         glRotateF(Rot4,0,1,0);
  40.         glTranslateF(1,0,0);
  41.         glScaleF(0.125,0.125,0.125);
  42.          glBegin(GL_TRIANGLES);
  43.          glColor3f(1, 1, 1); glVertex3f(-1,-1, 0);
  44.          glColor3f(1, 1, 1); glVertex3f( 1,-1, 0);
  45.          glColor3f(1, 1, 1); glVertex3f( 0, 1, 0);
  46.          glEnd;
  47.   glPopmatrix;
  48. //Buffer swappen:
  49. SwapBuffers(DC);
  50.  


Danke!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Mär 12, 2006 21:30 
Offline
Ernährungsberater
Benutzeravatar

Registriert: Sa Jan 01, 2005 17:11
Beiträge: 2068
Programmiersprache: C++
Geh dochmal deinen Code genau durch.
Dann solltest du den Fehler sehen.

Zumindest ist es die Absicht des Tutorials.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Mär 12, 2006 21:37 
Offline
DGL Member
Benutzeravatar

Registriert: Di Nov 26, 2002 22:12
Beiträge: 259
Wohnort: Dresden
Du verschiebst erst, rotierst aber danach. Du willst abe rgenau das Gegenteil erreichen:

Code:
  1. //Verschiebung Sonne
  2.             glTranslatef(0, 0, -15);
  3.            
  4.             DrawSun();
  5.             glRotatef(EarthRot, 0, 1, 0);
  6.             //Verschiebung Erde - Relativ zur Sonne
  7.             glTranslatef(EarthTrans, 0, 0);
  8.             DrawEarth();
  9.                        
  10.             glRotatef(MoonRot, 0, 1, 0);
  11.             //Verschiebung Mond - Relativ zur Erde
  12.             glTranslatef(MoonTrans, 0, 0);
  13.             DrawMoon();


Sonne verschieben -> Sonne zeichnen -> Rotation um Sonne -> Verschiebung der Erde -> Erde zeichnen ->Rotation um Erde -> Verschiebung Mond -> Mond zeichnen

Du brauchst hier also gar nicht zwangsweise glPushMatrix und glPopMatrix.
Um die Übung fortzuführen kannst ja auch noch versuchen umzusetzen, dass sich alle 3 Körper zusätzlich noch um die eigene Achse drehen :).

_________________
Nichts auf der Welt ist so gerecht verteilt wie der Verstand. Denn jederman ist überzeugt, dass er genug davon habe.
Rene Descartes, frz. Mathematiker u. Philosoph, 1596-1650


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Mär 13, 2006 12:04 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Das hatte ich damals gemacht. Aber mit Tetraedern. Ich habs damals Phob geschickt um seine Meinung zu höhren. Der war total perplex mal antwort von nem NewBe zu bekommen. :mrgreen:

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Mär 17, 2006 14:16 
Offline
DGL Member

Registriert: Di Feb 07, 2006 20:22
Beiträge: 27
danke jetzt gehts!


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 3 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.009s | 14 Queries | GZIP : On ]