Welcome, guest! Login / Register - Why register?
Psst.. new poll here.
Psst.. new forums here.
Microsoft is blocking us again (TY IP Reputation!) so just use oauth login instead. :)

Paste

Pasted as C++ by rivorism ( 14 years ago )
#include <GL/glut.h>

#include <stdlib.h>

float speed=0.0;
void grid(int baris, int kolom)
{
     int i;
     
     int kiri  = -kolom/2; //batas kiri x
     int kanan =  kolom/2; //batas kanan x
     int bawah = -baris/2; //batas bawah y
     int atas  =  baris/2; //batas atas y

     glBegin(GL_LINES);
         glLineWidth(1);
         //Baris digambar dari atas ke bawah
         for(i=0;i<baris+1;i++)
         {
            glVertex2f( kiri, baris/2-i);
            glVertex2f(kanan, baris/2-i);                
         }
    
         //Kolom digambar dari kanan ke kiri
         for(i=0;i<kolom+1;i++)
         {
            glVertex2f(kolom/2-i, bawah);
            glVertex2f(kolom/2-i,  atas);
         }          
     
         glLineWidth(3);
         glColor3f(0.5,0.5,0.5);
         glVertex2f( kiri,0);
         glVertex2f(kanan,0);
         glVertex2f(0,bawah);
         glVertex2f(0, atas);
     
     glEnd();    
}

void kotak(float p, float l){
     p/=2;
     l/=2;
     glBegin(GL_POLYGON);
       glVertex2f(-p,l);
       glVertex2f(-p,-l);
       glVertex2f(p,-l);
       glVertex2f(p,l);
     glEnd();   
     }

void sail() {
     int tinggi=8;
     int panjang=2;
     
     glColor3ub(153,44,0);
     kotak(panjang,tinggi);
  
  panjang=panjang/2;
  glColor3ub(243,134,48);
     glLineWidth(5);
     for(int i=2;i<tinggi-2;i++)
     {
       glBegin(GL_LINE_LOOP);
         glVertex2f(panjang,-tinggi + i*2);
         glVertex2f(-panjang,-tinggi + i*2);
         glVertex2f(-panjang,-tinggi + (i+1)*2);
         glVertex2f(panjang,-tinggi + (i+1)*2);
       glEnd();
       }
     glLineWidth(1);  
     }
     
void kincir() {
  
     glPushMatrix();
       glTranslatef(0,5,0);//translasi x, y, z
    sail();
  glPopMatrix();
  
  glPushMatrix();
       glTranslatef(5,0,0);//translasi x, y, z
       glRotatef(90,0,0,1);
    sail();
  glPopMatrix();
  
  glPushMatrix();
       glTranslatef(0,-5,0);//translasi x, y, z
    sail();
  glPopMatrix();
  
  glPushMatrix();
       glTranslatef(-5,0,0);//translasi x, y, z
       glRotatef(90,0,0,1);
    sail();
  glPopMatrix();
     }  
        
void display()  
{
    glClear( GL_COLOR_BUFFER_BIT);

     //Let there be the grid!
     glColor3f(0.3,0.3,0.3);      
     grid(20,20);
     
     /*
     //translasi matrix disini  
     glColor3ub(243,134,48);
  glPushMatrix();
    glTranslatef(0,-6,0);//translasi x, y, z
    kotak(5,5);
  glPopMatrix();
  */
  
  /*
  for(GLfloat i=0;i<180;i+=15) {
  //rotasi disini
     glColor3ub(243,100,48);
  glPushMatrix();
    glRotatef(15,0,0,1);
    kotak(5,5);
  glPopMatrix();
     }
     */
     
     /*
     //dilatasi disini
     glColor3ub(243,134,48);
  glPushMatrix();
    glScalef(2,2,1);//translasi x, y, z
    kotak(5,5);
  glPopMatrix();
  */
  
     /*
  glColor3ub(243,134,48);
  glPushMatrix();
    glScalef(4,4,1);
       glTranslatef(1,1,0);//translasi x, y, z
    
    kotak(2,2);
  glPopMatrix();
  
  
     glColor3ub(105,240,250);
     kotak(2.0,2.0);
     */
     glPushMatrix();
       glRotatef(speed,0,0,1);
       kincir();
       speed+=0.2;
     glPopMatrix();
     glutSwapBuffers();     
     glFlush(); 
}

void init()  { 
   glClearColor( 0.0, 0.0, 0.0, 0.0);  

     glMatrixMode(GL_PROJECTION);
     glLoadIdentity();
   gluOrtho2D(-10.0, 10.0, -10.0, 10.0); // The para are: (left, right, bottom, top)
     glMatrixMode(GL_MODELVIEW);
}

static void 
key(unsigned char key, int x, int y)
{
    switch (key) 
    {
        case 27 : 
        case 'q':
            exit(0);
            break;       
    }
    glutPostRedisplay();
}


/* Program entry point */

int 
main(int argc, char *argv[])
{
    glutInit(&argc;, argv);
    glutInitWindowSize(400, 400);   
   glutInitWindowPosition(100, 100); 
   glutCreateWindow("KOTAK"); 
    glutKeyboardFunc(key);    
  glutDisplayFunc(display);
  glutIdleFunc(display);
    init();

 glutMainLoop();

   return 0;  
}

 

Revise this Paste

Your Name: Code Language: