Rabu, 18 Mei 2011

Drawing Hello Kitty Using Glut

hellokitty using glut
ini gambar hello kitty yang aku bikin pake c++ (glut)...
source code nya :

#include
#include
#define lebarWindow 800
#define tinggiWindow 600

#define xmin -9
#define xmax 9
#define ymin -8
#define ymax 8

void sumbuKoordinat(){
glColor3f(0.0,1.0,0.0);
glBegin(GL_LINES);
glVertex2f(xmin,0); glVertex2f(xmax,0);//horizon
glVertex2f(0,ymin); glVertex2f(0,ymax);//vertikal
glEnd();
}

void grid(){
int i;
glColor3f(0.5,0.5,0.5);
glBegin(GL_LINES);
for(i=xmin;i<=xmax;i++)//horizon
{glVertex2f(i,ymin); glVertex2f(i,ymax);}
for(i=ymin;i<=ymax;i++)//vertikal
{glVertex2f(xmin,i); glVertex2f(xmax,i);}
glEnd();
}

void lingkaran(float x, float y, float r){
glBegin( GL_LINES);
float t = 0., deltaT;
deltaT = (3.14159/360)*0.2;
const float phi = 3.14159;

for ( t=0; t <= (2.0*phi); t+=deltaT) {
glVertex2f( x, y);
glVertex2f( (r*cos(t)+ x), (r*sin(t)+y));
}
glEnd();
}

void ellips(float rx, float ry, float xc, float yc){
glBegin( GL_POLYGON);
int n=100;
double t;
for (int i=0; i < n; ++i) {
t = i * 2.0 * 3.14159 / n;
glVertex2f( rx*cos(t)+xc, ry*sin(t)+yc );
}
glEnd();
}

void bulat(float rx,float ry,int xc,int yc){

glBegin( GL_LINES);
int n = 360; double t;
for (int i=0; i < n; ++i) {
t = i * 2.0 * 3.14159 / n;
glVertex2f( cos(t), sin(t) );
}

glEnd();
}

void elips(float rx,float ry,int xc,int yc){
double t;
int n=360;
glBegin( GL_POLYGON);
for (int i=0; i < n; ++i) {
t = i * 0.5 * 3.14159 / n; //360 derajat :10=36
glVertex2f( rx*cos(t)+xc, ry*sin(t)+yc ); //c0s 36,sin 36
}
glEnd();
}
void pita(){
glColor3f(0,0,0);
glBegin( GL_POLYGON);
glVertex2f(1.9,2.6);
glVertex2f(1.0,4.1);
glVertex2f(0.1,2.6);
glVertex2f(1.5,1.9);
glEnd();
glColor3f(1,0,0);//hijau
glBegin( GL_POLYGON);
glVertex2f(1.8,2.5);
glVertex2f(1.0,3.7);
glVertex2f(0.3,2.7);
glVertex2f(1.5,2.0);
glEnd();

//bawah
glColor3f(0,0,0);
glBegin( GL_POLYGON);
glVertex2f(2.5,1.75);
glVertex2f(4.0,1.2);
glVertex2f(3.4,-0.1);
glVertex2f(2.3,1.0);
glEnd();
glColor3f(1,0,0);//hijau
glBegin( GL_POLYGON);
glVertex2f(2.6,1.5);
glVertex2f(3.8,1.1);
glVertex2f(3.3,0.2);
glVertex2f(2.3,1.2);
glEnd();
//lingkaran
glColor3f(0,0,0);//hijau
ellips(0.7,0.9,2,1.7);//fill kepala
glColor3f(1,0,0);//hijau
ellips(0.5,0.7,2,1.7);//fill kepala

}
void bulat(float x, float y, float r){
float t;
float deltaT;
const float pi = 3.14159;
deltaT = (pi/180.0)*0.5;
glBegin( GL_LINES);
for (t=0; t <= (2*pi) ; t+=deltaT) {
glVertex2f( x, y);
glVertex2f( r*cos(t)+x, r*sin(t)+y );

}
glEnd();
}
void display(){

glClear(GL_COLOR_BUFFER_BIT);//menghapus isi frame buffer
grid();
sumbuKoordinat();
//daun kiri
//riak air




//telinga kiri
glColor3f(0,0,0);//hitam
glPushMatrix();
glRotatef( 20.0, 0.0, 0.0, 1.0);
ellips(1.3,3.5,-1.3,0.7);//kiri
glPopMatrix();
glColor3f(1,1,1);//hitam
glPushMatrix();
glRotatef( 20.0, 0.0, 0.0, 1.0);
ellips(1.1,3.4,-1.3,0.7);//kiri
glPopMatrix();



//telinga kanan
glColor3f(0,0,0);//hitam
glPushMatrix();
glRotatef( -20.0, 0.0, 0.0, 1.0);
ellips(1.3,3.5,1.3,0.7);//kiri
glPopMatrix();
glColor3f(1,1,1);//hitam
glPushMatrix();
glRotatef( -20.0, 0.0, 0.0, 1.0);
ellips(1.1,3.4,1.3,0.7);//kiri
glPopMatrix();


//kepala


glColor3f(1,1,1);//hijau
lingkaran(0,0.01,2.9);//fill kepala
glColor3f(0.0,0.0,0.0);//hitam
lingkaran(0,0.01,3.1);//border kepala
glColor3f(1,1,1);//hijau
lingkaran(0,0.01,2.9);//fill kepala

ellips(0.94,1.1,-2,1.74);
pita();//pink

//bunga
glColor3f(1.0,0.7,0.96);
ellips(0.6,0.7,-5.5,4.5);
ellips(0.6,0.7,-4.5,4.5);
ellips(0.6,0.7,-4.5,3.5);
ellips(0.6,0.7,-5.5,3.5);
glColor3f(1,1,1);
ellips(0.6,0.7,-5,4);

glColor3f(1.0,0.7,0.96);
ellips(0.6,0.7,5.5,4.5);
ellips(0.6,0.7,4.5,4.5);
ellips(0.6,0.7,4.5,3.5);
ellips(0.6,0.7,5.5,3.5);
glColor3f(1,1,1);
ellips(0.6,0.7,5,4);


glColor3f(1.0,0.7,0.96);
ellips(0.6,0.7,-6.5,-3.5);
ellips(0.6,0.7,-6.5,-2.5);
ellips(0.6,0.7,-7.5,-2.5);
ellips(0.6,0.7,-7.5,-3.5);
glColor3f(1,1,1);
ellips(0.6,0.7,-7,-3);


glColor3f(1.0,0.7,0.96);
ellips(0.6,0.7,6.5,-3.5);
ellips(0.6,0.7,6.5,-2.5);
ellips(0.6,0.7,7.5,-2.5);
ellips(0.6,0.7,7.5,-3.5);
glColor3f(1,1,1);
ellips(0.6,0.7,7,-3);


glColor3f(1.0,0.7,0.96);
ellips(0.6,0.7,-0.5,6.5);
ellips(0.6,0.7,0.5,6.5);
ellips(0.6,0.7,0.5,5.5);
ellips(0.6,0.7,-0.5,5.5);
glColor3f(1,1,1);
ellips(0.6,0.7,0,6);


glColor3f(0.0,0.0,0.0);//hitam
glBegin(GL_POLYGON);//garis baju kanan
glVertex2f(-2, -0.5);
glVertex2f(-3.5, -0.1);
glVertex2f(-3.5, -0.2);
glVertex2f(-2.0, -0.6);
glEnd();
glBegin(GL_POLYGON);//garis baju kanan
glVertex2f(-2, -1);
glVertex2f(-3.5, -1);
glVertex2f(-3.5, -1.1);
glVertex2f(-2.0, -1.1);
glEnd();
glColor3f(0.0,0.0,0.0);//hitam
glBegin(GL_POLYGON);//garis baju kanan
glVertex2f(-2.0, -1.5);
glVertex2f(-3.5, -1.9);
glVertex2f(-3.5, -2.0);
glVertex2f(-2.0, -1.6);
glEnd();
//kumis kanan
glBegin(GL_POLYGON);//garis baju kanan
glVertex2f( 2.0, -1.5);
glVertex2f( 3.5, -1.9);
glVertex2f( 3.5, -2.0);
glVertex2f( 2.0, -1.6);
glEnd();
glColor3f(0.0,0.0,0.0);//hitam
glBegin(GL_POLYGON);//garis baju kanan
glVertex2f(2, -0.5);
glVertex2f(3.5, -0.1);
glVertex2f(3.5, -0.2);
glVertex2f(2.0, -0.6);
glEnd();
glBegin(GL_POLYGON);//garis baju kanan
glVertex2f(2, -1);
glVertex2f(3.5, -1);
glVertex2f(3.5, -1.1);
glVertex2f(2.0, -1.1);
glEnd();



//hidung
glColor3f(0,0,0.0);//hitam
lingkaran(0,-1,0.5);//border kepala
glColor3f(1,1,0);//hijau
lingkaran(0,-1,0.4);//fill kepala
//mata
glColor3f(0,0,0);//hitan
ellips(0.3,0.55,-1.5,0.25);//kiri
ellips(0.3,0.55,1.5,0.25);//kanan
//love

glBegin( GL_POLYGON);
glVertex2f( -2.85, -5.85);
glVertex2f( 0, -3.1);
glVertex2f( 2.85, -5.85);
glVertex2f( 0,-8.1);
glEnd();



glColor3f(0.0,0.0,0.0);
ellips(2.1,2.4,-1.5,-4);//kiri
ellips(2.1,2.4,1.5,-4);//kiri

glColor3f(1.0,0.7,0.96);
ellips(2,2.3,-1.5,-4);//kiri
ellips(2,2.3,1.5,-4);//kiri
glColor3f(1.0,0.7,0.96);
glBegin( GL_POLYGON);
glVertex2f( -2.75, -5.75);
glVertex2f( 0, -3);
glVertex2f( 2.75, -5.75);
glVertex2f( 0,-8);
glEnd();
//tangan kiri
glColor3f(0.0,0.0,0.0);
ellips(1,1,-2.8,-2.5);//kiri
ellips(0.45,0.45,-2.0,-2.1);//kiri
glColor3f(1,1,1);
ellips(0.9,0.9,-2.8,-2.5);//kiri
ellips(0.35,0.35,-2.0,-2.1);//kiri

//tangan kanan
glColor3f(0.0,0.0,0.0);
ellips(1,1,2.8,-2.5);//kiri
ellips(0.45,0.45,2.0,-2.1);//kiri

glColor3f(1,1,1);
ellips(0.9,0.9,2.8,-2.5);//kiri
ellips(0.35,0.35,2.0,-2.1);//kiri
//sayap kiri
glColor3f(0,0,0);

ellips(1.65,0.85,-4.0,-4);//line kiri
ellips(0.8,1.1,-3.0,-4.5);//line kiri
ellips(0.8,1.1,-4.0,-4.5);//line kiri

glColor3f(1,1,1);

ellips(1.5,0.75,-4.0,-4);//kiri
ellips(0.7,1,-3.0,-4.5);//kiri
ellips(0.7,1,-4.0,-4.5);//kiri

//sayap kanan
glColor3f(0,0,0);

ellips(1.65,0.85,4.0,-4);//line kiri
ellips(0.8,1.1,3.0,-4.5);//line kiri
ellips(0.8,1.1,4.0,-4.5);//line kiri

glColor3f(1,1,1);

ellips(1.5,0.75,4.0,-4);//kiri
ellips(0.7,1,3.0,-4.5);//kiri
ellips(0.7,1,4.0,-4.5);//kiri



glFlush();//memastikan comment langsung dieksekusi
}

void init(){
// glClearColor(0.2,0.79,0.8,0.0);//memberi warna
glClearColor(0.3,0.1,0.7,0.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity(); //menerapkan seluruh nilai konfigurasi
gluOrtho2D(xmin,xmax,ymin,ymax);//left, right, bottom, top
glMatrixMode(GL_MODELVIEW);

}

int main(int argc, char **argv){

glutInit(&argc, argv); //inisialisai mode default penggunaan glut library
glutInitWindowSize(lebarWindow,tinggiWindow);
glutInitWindowPosition(200,100);
glutCreateWindow("Hello Kitty");//membuat title window
glutDisplayFunc(display);
init();
glutMainLoop(); //selama belum ditutup window akan dipangil kembali fungsi display
return 0;
}


0 komentar:

Poskan Komentar