Advertisement
erodemobiles

c++ like

Apr 26th, 2011
539
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 16.27 KB | None | 0 0
  1. // CarTransformer.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung.
  2.  
  3. #include <iostream>
  4. #include <GL/freeglut.h>         //lädt alles für OpenGL
  5. #include <GL/gl.h>
  6. #include <GL/glu.h>
  7. #include <GL/glut.h>
  8.  
  9. using namespace std;
  10.  
  11. //Kameraperspektive zu Beginn: weit weg, Blick von oben rechts auf Objekt (Koordinatenursprung)
  12. float camX = 3;
  13. float camY = 2;
  14. float camZ = 10;
  15.  
  16. //Rotationen
  17. float wheelRotation = 1.0;
  18. float legRotationX = 1.0;
  19. float legRotationZ = 1.0;
  20.  
  21. //Verschiebungen
  22. float moveTiresZ = 0;
  23. float moveRoofY = 0;
  24. float moveLegsX = 0;
  25. float moveLegsY = 0;
  26. float moveLegsZ = 0;
  27. float moveLaneLineX = 0;        //Fahrbahnstreifen
  28.  
  29. //Skalierungen
  30. float stretchLegsX = 0;
  31. float stretchLegsZ = 0;
  32. float stretchRoofX = 0;
  33. float stretchRoofY = 0;
  34.  
  35. bool transform = false;
  36.  
  37. //Tastaturoptionen
  38. bool showFront = false;
  39. bool showBack = false;
  40. bool showAxes = true;           //Achsenkreuze anzeigen
  41. bool showLaneGround = true;     //Fahrbahn und Untergrund anzeigen
  42.  
  43. GLfloat xMousePos = 300;
  44. GLfloat yMousePos = 300;
  45.  
  46. GLfloat xMousePosTMP = xMousePos;
  47. GLfloat yMousePosTMP = yMousePos;
  48.  
  49.  
  50. void moveCam(){
  51.     //x - Achse
  52.     if((xMousePos > xMousePosTMP) && (xMousePos != xMousePosTMP)){
  53.         xMousePosTMP = xMousePos;
  54.         camX = camX - (xMousePos / 1000);  
  55.     }
  56.     else if((xMousePos < xMousePosTMP) && (xMousePos != xMousePosTMP)){
  57.         xMousePosTMP = xMousePos;
  58.         camX = camX + (xMousePos / 1000);
  59.     }
  60.  
  61.     //y-Achse
  62.     if((yMousePos > yMousePosTMP) && (yMousePos != yMousePosTMP)){
  63.         yMousePosTMP = yMousePos;
  64.         camY = camY - (yMousePos / 1000);  
  65.     }
  66.     else if((yMousePos < yMousePosTMP) && (yMousePos != yMousePosTMP)){
  67.         yMousePosTMP = yMousePos;
  68.         camY = camY + (yMousePos / 1000);
  69.     }
  70. }
  71.  
  72. //Tastaturbelegung
  73. void SpecialFunc ( int key, int x, int y ){
  74.     switch(key){
  75.         case GLUT_KEY_F1:
  76.             showFront = true;
  77.             showBack = false;
  78.             break;
  79.         case GLUT_KEY_F2:
  80.             showBack = true;
  81.             showFront = false;
  82.             break;
  83.         case GLUT_KEY_F3:
  84.             camX = 3;
  85.             camY = 2;
  86.             camZ = 10;
  87.             break;
  88.         case GLUT_KEY_F4:
  89.             if(!showAxes)
  90.                 showAxes = true;
  91.             else
  92.                 showAxes = false;
  93.             break;
  94.         case GLUT_KEY_F5:
  95.             if(!showLaneGround)
  96.                 showLaneGround = true;
  97.             else
  98.                 showLaneGround = false;
  99.             break;
  100.     }
  101.     // RenderScene aufrufen.
  102.     glutPostRedisplay();
  103. }
  104.  
  105. void Init()
  106. {
  107.    // Hier finden jene Aktionen statt, die zum Programmstart einmalig
  108.    // durchgeführt werden müssen
  109.     glClearColor(0, 0.3, 0.7, 0.0);    // Hintergrundfarbe setzen
  110.     glEnable(GL_DEPTH_TEST);
  111.     glClearDepth(1.0);
  112.  
  113.     // Create light components
  114.     GLfloat ambientLight[] = { 1.0f, 1.0f, 1.0f, 0.3f };
  115.     GLfloat diffuseLight[] = { 1.0f, 1.0f, 1.0f, 1.0f };
  116.     GLfloat specularLight[] = {1.0f, 1.0f, 1.0f, 1.0f};
  117.     GLfloat position1[] = {5.0f, 5.0f, 5.0f, 1.0f};     //Lichtquelle gerichtet und leuchtet entlang der X,Y und Z-Achse
  118.  
  119.     // Assign created components to GL_LIGHT0
  120.     //glLightfv(GL_LIGHT1, GL_AMBIENT, ambientLight);
  121.     glLightfv(GL_LIGHT1, GL_DIFFUSE, diffuseLight);
  122.     //glLightfv(GL_LIGHT1, GL_SPECULAR, specularLight);
  123.     glLightfv(GL_LIGHT1, GL_POSITION, position1);
  124.  
  125.     glEnable(GL_COLOR_MATERIAL);
  126.     glEnable(GL_LIGHT1);
  127.     glEnable(GL_LIGHTING);
  128.  
  129.     //Ausgaben
  130.     cout << "##########################################################################" << endl;
  131.     cout << "#                           Car Transformer                              #" << endl;
  132.     cout << "#          Markus Mayer (719045) und Daniel Braeutigam (719406)          #" << endl;
  133.     cout << "##########################################################################" << endl;
  134.     cout << endl;
  135.     cout << " Blickwinkelaenderung:" << endl;
  136.     cout << " mit gedrueckter linker Maustaste bewegen" << endl;
  137.     cout << endl;
  138.     cout << endl;
  139.     cout << " Tastaturbefehle:" << endl;
  140.     cout << endl;
  141.     cout << " F1     -    Objekt von der Vorderseite betrachten" << endl;
  142.     cout << " F2     -    Objekt von der Rueckseite betrachten" << endl;
  143.     cout << " F3     -    Kamera auf Ausgangsposition zuruecksetzen" << endl;
  144.     cout << " F4     -    Achsenkreuze ein-/ausblenden" << endl;
  145.     cout << " F5     -    Fahrbahn und Untergrund ein-/ausblenden" << endl;
  146.  
  147. }
  148.  
  149. void RenderScene() //Zeichenfunktion
  150. {
  151.    // Hier befindet sich der Code der in jedem Frame ausgefuehrt werden muss
  152.    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);         // Farbpuffer und Tiefenpuffer leeren/überschreiben
  153.    glLoadIdentity ();   // Aktuelle Model-/View-Transformations-Matrix zuruecksetzen
  154.    moveCam();
  155.    gluLookAt ( camX, camY, camZ, 0., 0., 0., 0., 1., 0.);
  156.    glLineWidth (2);
  157.    
  158.    glTranslatef(0., -2.,0); //Koordinatenursprung nach unten verschieben
  159.  
  160.    //Rueckseite betrachten, wenn F2 gedrueckt
  161.    if(showBack){
  162.         glRotatef(-180., 0, 1, 0);
  163.    }
  164.  
  165.    if(showAxes){
  166.        //x-Achse Senkrechte
  167.        glBegin(GL_LINES);
  168.             glColor3f(1.0,0.0,0.0);
  169.             glVertex2f(0.,0.);
  170.             glVertex2f(10.,0.);
  171.        glEnd();
  172.        //y-Achse Senkrechte
  173.        glBegin(GL_LINES);
  174.             glColor3f(0.0,1.0,0.0);
  175.             glVertex2f(0.,0.);
  176.             glVertex2f(0.,10.);
  177.        glEnd();
  178.        //z-Achse Senkrechte
  179.        glBegin(GL_LINES);
  180.             glColor3f(0.0,0.0,1.0);
  181.             glVertex3f(0.,0., 0.);
  182.             glVertex3f(0.,0., 10.);
  183.        glEnd();
  184.     }
  185.  
  186.     glPushMatrix();
  187.  
  188.         if(showLaneGround){
  189.             //Untergrund "Rasen"
  190.             glPushMatrix();
  191.                 glColor3f(0.3, 0.9, 0.3);  
  192.                 glTranslatef(0., -0.8, 0.0);
  193.                 glScalef(100, 0.2, 100);
  194.                 glutSolidCube(1.0);
  195.             glPopMatrix(); 
  196.  
  197.             //Fahrbahn
  198.             glPushMatrix();
  199.                 glColor3f(0.3, 0.3, 0.3);  
  200.                 glTranslatef(0., -0.6, 0.0);
  201.                 glScalef(100, 0.2, 7);
  202.                 glutSolidCube(1.0);
  203.             glPopMatrix();
  204.  
  205.             //Fahrbahnstreifen Rand rechts
  206.             glPushMatrix();
  207.                 glColor3f(1, 1, 1);
  208.                 glTranslatef(0, -0.49, +3.3);
  209.                 glScalef(100, 0.01, 0.5);
  210.                 glutSolidCube(1.0);
  211.             glPopMatrix();
  212.  
  213.             //Fahrbahnstreifen Rand links
  214.             glPushMatrix();
  215.                 glColor3f(1, 1, 1);
  216.                 glTranslatef(0, -0.49, -3.2);
  217.                 glScalef(100, 0.01, 0.5);
  218.                 glutSolidCube(1.0);
  219.             glPopMatrix();
  220.  
  221.             //Fahrbahnstreifen Mitte hinten
  222.             glPushMatrix();
  223.                 glColor3f(1, 1, 1);
  224.                 glTranslatef(-25-moveLaneLineX, -0.49, 0.0);
  225.                 glScalef(8, 0.01, 0.5);
  226.                 glutSolidCube(1.0);
  227.             glPopMatrix();
  228.  
  229.             //Fahrbahnstreifen Mitte mitte
  230.             glPushMatrix();
  231.                 glColor3f(1, 1, 1);
  232.                 glTranslatef(+5.-moveLaneLineX, -0.49, 0.0);
  233.                 glScalef(8, 0.01, 0.5);
  234.                 glutSolidCube(1.0);
  235.             glPopMatrix();
  236.  
  237.             //Fahrbahnstreifen Mitte vorne
  238.             glPushMatrix();
  239.                 glColor3f(1, 1, 1);
  240.                 glTranslatef(+35-moveLaneLineX, -0.49, 0.0);
  241.                 glScalef(8, 0.01, 0.5);
  242.                 glutSolidCube(1.0);
  243.             glPopMatrix();
  244.         }
  245.        
  246.         // Dach
  247.         glPushMatrix();
  248.             glColor3f(0.0, 1.0, 0.5);  
  249.             glTranslatef(0., 1.5+moveRoofY, 0.0);
  250.             glScalef(4.-stretchRoofX, 1.0+stretchRoofY, 3);
  251.             glutSolidCube(1.0);
  252.         glPopMatrix();
  253.  
  254.         // rechtes "Bein"
  255.         glPushMatrix();
  256.             glColor3f(0.5, 0.0, 1.5);  
  257.             glTranslatef(0.-moveLegsX, 0.5+moveLegsY, 0.75-moveLegsZ);
  258.             if(transform){
  259.                 glRotatef(legRotationZ, 0, 0, 1);
  260.                 glRotatef(legRotationX, 1, 0, 0);
  261.             }
  262.             glScalef(7.-stretchLegsX, 1.0, 1.5-stretchLegsZ);
  263.             glutSolidCube(1.0);
  264.         glPopMatrix();
  265.  
  266.         // linkes "Bein"
  267.         glPushMatrix();
  268.             glColor3f(1.0, 0.0, 0.5);  
  269.             glTranslatef(0.+moveLegsX, 0.5+moveLegsY, -0.75+moveLegsZ);
  270.             if(transform){
  271.                 glRotatef(legRotationZ, 0, 0, 1);
  272.                 glRotatef(legRotationX, 1, 0, 0);
  273.             }
  274.             glScalef(7.-stretchLegsX, 1.0, 1.5-stretchLegsZ);
  275.             glutSolidCube(1.0);
  276.         glPopMatrix();
  277.    
  278.         //linkes hinteres Rad
  279.         glPushMatrix();
  280.             glTranslatef(-2.0, 0., -1.55-moveTiresZ);
  281.             glColor3f(0.2,0.2, 0.2);
  282.             glutSolidCylinder(0.5, 0.40, 100, 100);
  283.             if(!transform)         
  284.                 glRotatef(wheelRotation, 0, 0, 1); //Rad drehen, so lange keine Transformation statt findet
  285.  
  286.             glPushMatrix();
  287.                 glColor3f(0.8, 0.8, 0.8);
  288.                 glTranslatef(0., 0., -0.05);
  289.                 glutSolidCylinder(0.4, 0.40, 100, 100);
  290.                
  291.                 // Radmuttern
  292.                 glPushMatrix();
  293.                     glColor3f(0., 0., 0.);
  294.                     glTranslatef(0.1, 0.1, -0.01);
  295.                     glutSolidCylinder(0.05, 0.01, 100, 100);
  296.                 glPopMatrix();
  297.                 glPushMatrix();
  298.                     glColor3f(0., 0., 0.);
  299.                     glTranslatef(-0.1, 0.1, -0.01);
  300.                     glutSolidCylinder(0.05, 0.01, 100, 100);
  301.                 glPopMatrix();
  302.                 glPushMatrix();
  303.                     glColor3f(0., 0., 0.);
  304.                     glTranslatef(0.1, -0.1, -0.01);
  305.                     glutSolidCylinder(0.05, 0.01, 100, 100);
  306.                 glPopMatrix();
  307.                 glPushMatrix();
  308.                     glColor3f(0., 0., 0.);
  309.                     glTranslatef(-0.1, -0.1, -0.01);
  310.                     glutSolidCylinder(0.05, 0.01, 100, 100);
  311.                 glPopMatrix();
  312.                 glPushMatrix();
  313.                     glColor3f(0., 0., 0.);
  314.                     glTranslatef(0., 0., -0.01);
  315.                     glutSolidCylinder(0.05, 0.01, 100, 100);
  316.                 glPopMatrix();
  317.  
  318.             glPopMatrix();
  319.         glPopMatrix();
  320.  
  321.         //linkes vorderes Rad
  322.         glPushMatrix();
  323.             glTranslatef(2.0, 0., -1.55-moveTiresZ);
  324.             glColor3f(0.2,0.2, 0.2);
  325.             glutSolidCylinder(0.5, 0.40, 100, 100);
  326.             glPushMatrix();
  327.                 glColor3f(0.8, 0.8, 0.8);
  328.                 glTranslatef(0., 0., -0.05);
  329.                 glutSolidCylinder(0.4, 0.40, 100, 100);
  330.                 if(!transform)
  331.                     glRotatef(wheelRotation, 0, 0, 1); //Rad drehen, so lange keine Transformation statt findet
  332.  
  333.                 // Radmuttern
  334.                 glPushMatrix();
  335.                     glColor3f(0., 0., 0.);
  336.                     glTranslatef(0.1, 0.1, -0.01);
  337.                     glutSolidCylinder(0.05, 0.01, 100, 100);
  338.                 glPopMatrix();
  339.                 glPushMatrix();
  340.                     glColor3f(0., 0., 0.);
  341.                     glTranslatef(-0.1, 0.1, -0.01);
  342.                     glutSolidCylinder(0.05, 0.01, 100, 100);
  343.                 glPopMatrix();
  344.                 glPushMatrix();
  345.                     glColor3f(0., 0., 0.);
  346.                     glTranslatef(0.1, -0.1, -0.01);
  347.                     glutSolidCylinder(0.05, 0.01, 100, 100);
  348.                 glPopMatrix();
  349.                 glPushMatrix();
  350.                     glColor3f(0., 0., 0.);
  351.                     glTranslatef(-0.1, -0.1, -0.01);
  352.                     glutSolidCylinder(0.05, 0.01, 100, 100);
  353.                 glPopMatrix();
  354.                 glPushMatrix();
  355.                     glColor3f(0., 0., 0.);
  356.                     glTranslatef(0., 0., -0.01);
  357.                     glutSolidCylinder(0.05, 0.01, 100, 100);
  358.                 glPopMatrix();
  359.  
  360.             glPopMatrix();
  361.         glPopMatrix();
  362.  
  363.         //rechtes hinteres Rad
  364.         glPushMatrix();
  365.             glTranslatef(-2.0, 0., 1.15+moveTiresZ);
  366.             glColor3f(0.2,0.2, 0.2);
  367.             glutSolidCylinder(0.5, 0.40, 100, 100);
  368.             glPushMatrix();
  369.                 glColor3f(0.8, 0.8, 0.8);
  370.                 glTranslatef(0., 0., 0.05);
  371.                 glutSolidCylinder(0.4, 0.40, 100, 100);
  372.                 if(!transform)
  373.                     glRotatef(wheelRotation, 0, 0, 1); //Rad drehen, so lange keine Transformation statt findet
  374.  
  375.                 // Radmuttern
  376.                 glPushMatrix();
  377.                     glColor3f(0., 0., 0.);
  378.                     glTranslatef(0.1, 0.1, 0.4);
  379.                     glutSolidCylinder(0.05, 0.01, 100, 100);
  380.                 glPopMatrix();
  381.                 glPushMatrix();
  382.                     glColor3f(0., 0., 0.);
  383.                     glTranslatef(-0.1, 0.1, 0.4);
  384.                     glutSolidCylinder(0.05, 0.01, 100, 100);
  385.                 glPopMatrix();
  386.                 glPushMatrix();
  387.                     glColor3f(0., 0., 0.);
  388.                     glTranslatef(0.1, -0.1, 0.4);
  389.                     glutSolidCylinder(0.05, 0.01, 100, 100);
  390.                 glPopMatrix();
  391.                 glPushMatrix();
  392.                     glColor3f(0., 0., 0.);
  393.                     glTranslatef(-0.1, -0.1, 0.4);
  394.                     glutSolidCylinder(0.05, 0.01, 100, 100);
  395.                 glPopMatrix();
  396.                 glPushMatrix();
  397.                     glColor3f(0., 0., 0.);
  398.                     glTranslatef(0., 0., 0.4);
  399.                     glutSolidCylinder(0.05, 0.01, 100, 100);
  400.                 glPopMatrix();
  401.  
  402.             glPopMatrix();
  403.         glPopMatrix();
  404.        
  405.         //rechtes vorderes Rad
  406.         glPushMatrix();
  407.             glTranslatef(2.0, 0., 1.15+moveTiresZ);
  408.             glColor3f(0.2,0.2, 0.2);
  409.             glutSolidCylinder(0.5, 0.40, 100, 100);
  410.             glPushMatrix();
  411.                 glColor3f(0.8, 0.8, 0.8);
  412.                 glTranslatef(0., 0., 0.05);
  413.                 glutSolidCylinder(0.4, 0.40, 100, 100);
  414.                 if(!transform)
  415.                     glRotatef(wheelRotation, 0, 0, 1); //Rad drehen, so lange keine Transformation statt findet
  416.                
  417.                 // Radmuttern
  418.                 glPushMatrix();
  419.                     glColor3f(0., 0., 0.);
  420.                     glTranslatef(0.1, 0.1, 0.4);
  421.                     glutSolidCylinder(0.05, 0.01, 100, 100);
  422.                 glPopMatrix();
  423.                 glPushMatrix();
  424.                     glColor3f(0., 0., 0.);
  425.                     glTranslatef(-0.1, 0.1, 0.4);
  426.                     glutSolidCylinder(0.05, 0.01, 100, 100);
  427.                 glPopMatrix();
  428.                 glPushMatrix();
  429.                     glColor3f(0., 0., 0.);
  430.                     glTranslatef(0.1, -0.1, 0.4);
  431.                     glutSolidCylinder(0.05, 0.01, 100, 100);
  432.                 glPopMatrix();
  433.                 glPushMatrix();
  434.                     glColor3f(0., 0., 0.);
  435.                     glTranslatef(-0.1, -0.1, 0.4);
  436.                     glutSolidCylinder(0.05, 0.01, 100, 100);
  437.                 glPopMatrix();
  438.                 glPushMatrix();
  439.                     glColor3f(0., 0., 0.);
  440.                     glTranslatef(0., 0., 0.4);
  441.                     glutSolidCylinder(0.05, 0.01, 100, 100);
  442.                 glPopMatrix();
  443.  
  444.             glPopMatrix();
  445.         glPopMatrix();
  446.     glPopMatrix();
  447.      
  448.    glutSwapBuffers();
  449.    glFlush();
  450. }
  451.  
  452. void Reshape(int width,int height)
  453. {
  454.    // Hier finden die Reaktionen auf eine Veränderung der Größe des
  455.    // Graphikfensters statt
  456.     // Matrix für Transformation: Frustum->viewport
  457.     glMatrixMode(GL_PROJECTION);
  458.     // Aktuelle Transformations-Matrix zuruecksetzen
  459.     glLoadIdentity ();
  460.     // Viewport definieren
  461.     glViewport(0,0,width,height);
  462.     // Frustum definieren (siehe unten)
  463.     gluPerspective(60., 1., 0.1, 100.0);
  464.     // Matrix für Modellierung/Viewing
  465.     glMatrixMode(GL_MODELVIEW);
  466. }
  467.  
  468. /*
  469. void MotionP ( int x, int y )
  470. // Maus-Bewegungen ohne gedrückte Maus-Taste
  471. {
  472.     GLfloat xMousePos = float(x);
  473.     GLfloat yMousePos = float(y);
  474.     std::cout <<xMousePos<<", "<<yMousePos<<std::endl;
  475.     // RenderScene aufrufen.
  476.     glutPostRedisplay();
  477. } */
  478.  
  479. void Motion ( int x, int y )
  480. // Maus-Bewegungen mit gedrückter Maus-Taste
  481. {
  482.     xMousePos = float(x);
  483.     yMousePos = float(y);
  484.     //std::cout <<"Maustaste gedrueckt "<< xMousePos<<", "<<yMousePos<<std::endl;
  485.     // RenderScene aufrufen.
  486.     glutPostRedisplay();
  487. }
  488.  
  489. void Animate (int value)    
  490. {
  491.    // Hier werden Berechnungen durchgeführt, die zu einer Animation der Szene  
  492.    // erforderlich sind. Dieser Prozess läuft im Hintergrund und wird alle
  493.    // 1000 msec aufgerufen. Der Parameter "value" wird einfach nur um eins
  494.    // inkrementiert und dem Callback wieder uebergeben.
  495.    //std::cout << "value=" << value << std::endl;
  496.    wheelRotation = wheelRotation - 1.0;
  497.    if ( wheelRotation <= 0.0) {
  498.        wheelRotation = wheelRotation + 360.0;
  499.    }
  500.  
  501.    //starte Animation: bewege Fahrbahnstreifen
  502.    if(value < 500){
  503.        if(moveLaneLineX < 30.0)
  504.            moveLaneLineX += 0.03;
  505.    }
  506.  
  507.  
  508.    //starte Transformation: schiebe Reifen nach aussen, bewege Dach nach oben
  509.    // und skaliere die Beine (kürzer und schmäler)
  510.    if(value > 500 && value <= 700){
  511.        transform = true;
  512.        if(moveTiresZ < 1.0)
  513.            moveTiresZ += 0.03;
  514.        if(moveRoofY < 6.0)
  515.            moveRoofY += 0.04;
  516.        if(stretchLegsX < 4.0)
  517.            stretchLegsX += 0.03;
  518.        if(stretchLegsZ < 0.9)
  519.            stretchLegsZ += 0.02;
  520.    }
  521.  
  522.    //drehe Beine horizontal und verschiebe sie nach oben, so dass sie auf der Fahrbahn stehen
  523.    if(value > 580 && value <= 680){
  524.       if(legRotationZ > -90)
  525.        legRotationZ -= 1.0;
  526.       if(moveLegsY < 0.5)
  527.           moveLegsY += 0.015;
  528.    }
  529.  
  530.    //drehe Beine vertikal und verschiebe sie nach links und rechts und mittig nach oben
  531.    //die Mitte der Beine sitzt jetzt am Achsenursprung
  532.    if(value > 680 && value <= 820){
  533.       if(legRotationX > -90)
  534.        legRotationX -= 1.0;
  535.       if(moveLegsX < 1.0)
  536.           moveLegsX += 0.03;
  537.       if(moveLegsZ < 0.75)
  538.           moveLegsZ += 0.02;
  539.    }
  540.  
  541.    //skaliere Dach als Body
  542.    if(value > 780 && value <= 880){
  543.       if(stretchRoofX < 1.2)
  544.           stretchRoofX += 0.03;
  545.       if(stretchRoofY < 3.0)
  546.           stretchRoofY += 0.06;  
  547.    }
  548.  
  549.    
  550.    //bewege Dach als Body nach unten
  551.    if(value > 850){
  552.       if(moveRoofY > 3.0)
  553.            moveRoofY = moveRoofY - 0.04;
  554.    }
  555.  
  556.  
  557.  
  558.    //reset Transformation
  559.    if(value == 10000){
  560.        value = 0;
  561.        transform = false;
  562.    }
  563.    // RenderScene aufrufen
  564.    glutPostRedisplay();
  565.    // Timer wieder registrieren; Animate wird so nach 100 msec mit value+=1 aufgerufen
  566.    glutTimerFunc(10, Animate, ++value);          
  567. }
  568.  
  569.  
  570.  
  571. int main(int argc, char **argv)
  572. {
  573.    glutInit( &argc, argv );                // GLUT initialisieren
  574.    glutInitDisplayMode( GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH );        
  575.    glutInitWindowSize( 600, 600 );         // Fenster-Konfiguration
  576.    glutCreateWindow( "CarTransformer made by Markus Mayer and Daniel Braeutigam" );   // Fenster-Erzeugung
  577.    glutDisplayFunc( RenderScene );         // Zeichenfunktion bekannt machen
  578.    glutReshapeFunc( Reshape );
  579.    //glutPassiveMotionFunc( MotionP );
  580.    glutMotionFunc( Motion );          
  581.    glutSpecialFunc( SpecialFunc );
  582.    // TimerCallback registrieren; wird nach 10 msec aufgerufen mit Parameter 0  
  583.    glutTimerFunc( 10, Animate, 0);
  584.    Init();
  585.    glutMainLoop();
  586.    return 0;
  587. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement