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