wenyTHEpooh's Blog

Program Pelles C

Posted on: January 15, 2010

Nama File             : Orang.ppj

Nama Program     : Pelles C


Listing Program

#include <windows.h>

#include <GL/gl.h>

#include <GL/glu.h>

#include <GL/glfw.h>

#include <math.h>

#define pi 3.1415

void mulaiOpenGL(void);

int main(void)

{

//

// mRunning = TRUE, aplikasi masih berjalan

// mRunning = FALSE, ??? :p

GLuint mRunning = GL_TRUE;

//

// inisialisasi GLFW

if( glfwInit() == GL_FALSE )

{

MessageBox( NULL, “ERROR :: gagal menginisialisasi GLFW”, “Error!”, MB_OK);

return(0);

}

//

// buat sebuah window yang akan digunakan untuk menggambar.

if( glfwOpenWindow( 640, 480, 0, 0, 0, 0, 24, 0, GLFW_WINDOW ) == GL_FALSE )

{

MessageBox( NULL, “ERROR :: gagal membuat window”, “Error!”, MB_OK );

glfwTerminate();

return(0);

}

//

// Set judul yang ada di window dan Swap interval.

glfwSetWindowTitle( “Praktikum Grafik Komputer LabTI” );

glfwSwapInterval( 1 );

//

// mulai OpenGL (melakukan setting awal OpenGL)

mulaiOpenGL();

//

// mulai looping utama program

while( mRunning )

{

//

// bersihkan layar dan depth buffer

glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );

glLoadIdentity();

//

// lakukan penggambaran di sini

//————————————————————————————

gluLookAt(0.0,0.0,20.0,0.0,0.0,0.0,0.0,1.0,0.0);

float x, y, sudut;

for (sudut = 0.0f;sudut <=2.0 * pi ; sudut +=0.001f)

{x=2.0f * sin (sudut);

y= 2.0f * cos (sudut);

glBegin (GL_POINTS);

glVertex3f (x, y, 5);

glEnd();

}

glBegin (GL_QUADS);

//persegi pnjg

glVertex2f(-1.0f,-2.5f);

glVertex2f(1.0f,-2.5f);

glVertex2f(1.0f,-7.5f);

glVertex2f(-1.0f,-7.5f);

glColor3f(1.0f,0.0f,1.0f);

//persegi

glVertex2f(-2.0f,-7.5f);

glVertex2f(2.0f,-7.5f);

glVertex2f(2.0f,-11.0f);

glVertex2f(-2.0f,-11.0f);

glColor3f(0.0f,1.0f,0.0f);

glEnd();

//topi

glBegin(GL_TRIANGLES);

glVertex2f(3.0f,2.65f);

glVertex2f(-3.0f,2.65f);

glVertex2f(0.0f,6.0f);

glEnd();

//tangan

glBegin(GL_LINES);

glVertex2f(-1.0f,-2.5f);

glVertex2f(-4.25f,-5.0f);

glVertex2f(1.0f,-2.5f);

glVertex2f(4.25f,-5.0f);

//tangkai

glVertex2f(-4.25f,-6.0f);

glVertex2f(-4.25f,-1.5f);

glEnd();

//bunga

glBegin(GL_POLYGON);

glColor3f(1.0f,0.0f,0.0f);

glVertex2f(-3.75f,-1.5f);

glVertex2f(-4.75f,-1.5f);

glVertex2f(-4.75f,-0.5f);

glVertex2f(-4.5f,-1.0f);

glVertex2f(-4.25f,-0.5f);

glVertex2f(-4.0f,-1.0f);

glVertex2f(-3.75f,-0.5f);

glEnd();

//————————————————————————————

//

// tampilkan ke layar (swap double buffer)

glfwSwapBuffers();

//

// check input , apakah tombol esc ditekan atau tombol “close” diclick

mRunning = !glfwGetKey( GLFW_KEY_ESC ) && glfwGetWindowParam( GLFW_OPENED );

}

glfwTerminate();

return(0);

}

void mulaiOpenGL(void)

{

//

// Set viewport ke resolusi 640×480 viewport bisa diibaratkan

// layar monitor anda

glViewport( 0, 0, 640, 480 );

//

// Set mode OpenGL ke mode pryeksi (Projection) dan set proyeksi

// menggunakan proyeksi perspective, dengan sudut pandang (Field Of

// View) 60 derajat

glMatrixMode( GL_PROJECTION );

glLoadIdentity();

gluPerspective( 60.0f, 640.0f/480.0f, 0.1f, 1000.0f );

glMatrixMode( GL_MODELVIEW );

glLoadIdentity();

//

// Set mode gradasi warna halus (Smooth)

glShadeModel( GL_SMOOTH );

//

// warna yang digunakan untuk membersihkan layar

glClearColor( 0.0f, 0.0f, 0.0f, 0.0f );

//

// nilai untuk membersihkan depth buffer.

glClearDepth( 1.0f );

//

// Depth test digunakan untuk menghindari polygon yang

// tumpang tindih.

glEnable( GL_DEPTH_TEST );

glDepthFunc( GL_LEQUAL );

//

// beritahu OpenGL untuk menggunakan perhitungan perspective

// yang terbaik (perhitungan ini tidak bisa selalu 100% akurat)

glHint( GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST );

}


Logika Program

Analisa Program:

Program ini berguna untuk membuat gambar berupa garis vertikal, horizontal, diagonal, dan lingkaran. Dalam program ini, pembuat membuat gambar orang yang berasal dari gambar persegi, persegi panjang, lingkaran dan poligon yang dihubung-hubungkan sedemikian rupa sehingga menghasilkan gambar tersebut. Untuk lebih jelasnya, lihat output program dari program ini.

Penjelasan Program:

glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );

glLoadIdentity();

gluLookAt(0.0,0.0,20.0,0.0,0.0,0.0,0.0,1.0,0.0);

Pertama, program akan membersihkan layar dari tampilan-tampilan sebelumnya lalu melakukan depth buffer. Kemudian, program akan memanggil fungsi glLoadIdentity(). Perintah gluLookAt kita gunakan untuk menentukan posisi awal untuk titik x, y dan z.

float x, y, sudut;

for (sudut = 0.0f;sudut <=2.0 * pi ; sudut +=0.001f)

{x=2.0f * sin (sudut);

y= 2.0f * cos (sudut);

glBegin (GL_POINTS);

glVertex3f (x, y, 5);

glEnd();

}

Dalam pembuatan lingkaran ini kita akan menggunakan perintah GL_POINTS. Untuk membuatnya, kita terlebih dahulu mendeklarasikan variabel x, y dan sudut bertipe data float (pecahan). Disini, kita memakai perintah perulangan for, untuk var sudut dari 0.0 sampai kurang dari 2.0 * pi dengan pertambahan pengulangan samadengan +0.001, lakukan perintah perhitungan x= 2.0f * sin (sudut) dan y= 2.0f * cos (sudut) lalu buat garisnya dengan perintah glVertex3f(x,y,5).

glBegin (GL_QUADS);

//persegi pnjg

glVertex2f(-1.0f,-2.5f);

glVertex2f(1.0f,-2.5f);

glVertex2f(1.0f,-7.5f);

glVertex2f(-1.0f,-7.5f);

glColor3f(1.0f,0.0f,1.0f);

Perintah GL_QUADS digunakan jika kita menginginkan bentuk gambar segi empat. Apabila kita telah menetapkan empat titik, secara otomatis program akan menghubungkan titik-titik tersebut sehingga terbentuk persegi. Perintah glVertex2f(-1.0f,-2.5f) digunakan untuk menentukan koordinat dari titik sudut persegi yang akan dibuat. Digit pertama merupakan letak titik berdasarkan sumbu X, digit kedua merupakan letak titik  berdasarkan sumbu Y. Penggunaan glColor3f(1,0,1) adalah untuk menentukan warna atau campuran warna dimana digit pertama untuk warna merah, digit kedua untuk warna merah, dan digit ketiga untuk warna merah.

//persegi

glVertex2f(-2.0f,-7.5f);

glVertex2f(2.0f,-7.5f);

glVertex2f(2.0f,-11.0f);

glVertex2f(-2.0f,-11.0f);

glColor3f(0.0f,1.0f,0.0f);

glEnd();

Perintah GL_QUADS digunakan jika kita menginginkan bentuk gambar segi empat. Apabila kita telah menetapkan empat titik, secara otomatis program akan menghubungkan titik-titik tersebut sehingga terbentuk persegi. Perintah glVertex2f(-2.0f,-7.5f) digunakan untuk menentukan koordinat dari titik sudut persegi yang akan dibuat. Digit pertama merupakan letak titik berdasarkan sumbu X, digit kedua merupakan letak titik  berdasarkan sumbu Y. Penggunaan glColor3f(0,1,0) adalah untuk menentukan warna menjadi warna pink.

//topi

glBegin(GL_TRIANGLES);

glVertex2f(3.0f,2.65f);

glVertex2f(-3.0f,2.65f);

glVertex2f(0.0f,6.0f);

glEnd();

Perintah GL_TRIANGLES digunakan untuk membuat bentuk gambar segitiga. Apabila kita telah menetapkan tiga buah titik, secara otomatis program akan menghubungkan titik-titik tersebut membentuk sebuah segitiga. Perintah glVertex2f(3.0f,2,65f) digunakan untuk menentukan koordinat dari titik sudut segitiga yang akan dibuat. Digit pertama merupakan letak titik berdasarkan sumbu X, digit kedua merupakan letak titik  berdasarkan sumbu Y.

//tangan

glBegin(GL_LINES);

glVertex2f(-1.0f,-2.5f);

glVertex2f(-4.25f,-5.0f);

glVertex2f(1.0f,-2.5f);

glVertex2f(4.25f,-5.0f);

Perintah selanjutnya, kita akan menggambar garis dengan menggunakan GL_LINES. Titik pertama diletakkan pada posisi x = -1 dan y = -2.5 kemudian kita tarik garis sampai x=-4,25 dan y=-5. Setelah itu beri warna hijau pada garis tersebut. Untuk membuat tangan kiri, caranya sama hanya berbeda di titik koordinat x dan y nya.

//tangkai

glVertex2f(-4.25f,-6.0f);

glVertex2f(-4.25f,-1.5f);

glEnd();

Perintah diatas juga digunakan untuk menggambar garis dengan menggunakan GL_LINES. Titik pertama diletakkan pada posisi x = -4.25 dan y = -6.0 kemudian kita tarik garis sampai x=-4,25 dan y=-1,5. Setelah itu beri warna hijau pada garis tersebut. Jadilah gambar tangkai bunga.

//bunga

glBegin(GL_POLYGON);

glColor3f(1.0f,0.0f,0.0f);

glVertex2f(-3.75f,-1.5f);

glVertex2f(-4.75f,-1.5f);

glVertex2f(-4.75f,-0.5f);

glVertex2f(-4.5f,-1.0f);

glVertex2f(-4.25f,-0.5f);

glVertex2f(-4.0f,-1.0f);

glVertex2f(-3.75f,-0.5f);

glEnd();

Perintah GL_POLYGON berguna untuk membuat bentuk gambar dengan banyak sudut. Jika kita telah menetapkan beberapa titik, secara otomatis program akan menghubungkan titik-titik tersebut sehingga membentuk sebuah gambar polygon. Pertama kita letakkan posisi x = -3.75 dan y = -1.5 kemudian tarik garis sampai posisi x = -4.75 dan y = -1.5 kemudian kita tarik garis. Dari posisi tersebut tarik garis lagi ke x = -4.75 dan y= -0.5 dan seterusnya sampai titik terakhir. Poligon ini diberi warna merah.

Output Program

Seseorang Sedang Membawa Bunga 🙂

#include <windows.h>

#include <GL/gl.h>

#include <GL/glu.h>

#include <GL/glfw.h>

#include <math.h>

#define pi 3.1415

void mulaiOpenGL(void);

int main(void)

{

//

// mRunning = TRUE, aplikasi masih berjalan

// mRunning = FALSE, ??? :p

GLuint mRunning = GL_TRUE;

//

// inisialisasi GLFW

if( glfwInit() == GL_FALSE )

{

MessageBox( NULL, “ERROR :: gagal menginisialisasi GLFW”, “Error!”, MB_OK);

return(0);

}

//

// buat sebuah window yang akan digunakan untuk menggambar.

if( glfwOpenWindow( 640, 480, 0, 0, 0, 0, 24, 0, GLFW_WINDOW ) == GL_FALSE )

{

MessageBox( NULL, “ERROR :: gagal membuat window”, “Error!”, MB_OK );

glfwTerminate();

return(0);

}

//

// Set judul yang ada di window dan Swap interval.

glfwSetWindowTitle( “Praktikum Grafik Komputer LabTI” );

glfwSwapInterval( 1 );

//

// mulai OpenGL (melakukan setting awal OpenGL)

mulaiOpenGL();

//

// mulai looping utama program

while( mRunning )

{

//

// bersihkan layar dan depth buffer

glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );

glLoadIdentity();

//

// lakukan penggambaran di sini

//————————————————————————————

gluLookAt(0.0,0.0,20.0,0.0,0.0,0.0,0.0,1.0,0.0);

float x, y, sudut;

for (sudut = 0.0f;sudut <=2.0 * pi ; sudut +=0.001f)

{x=2.0f * sin (sudut);

y= 2.0f * cos (sudut);

glBegin (GL_POINTS);

glVertex3f (x, y, 5);

glEnd();

}

glBegin (GL_QUADS);

//persegi pnjg

glVertex2f(-1.0f,-2.5f);

glVertex2f(1.0f,-2.5f);

glVertex2f(1.0f,-7.5f);

glVertex2f(-1.0f,-7.5f);

glColor3f(1.0f,0.0f,1.0f);

//persegi

glVertex2f(-2.0f,-7.5f);

glVertex2f(2.0f,-7.5f);

glVertex2f(2.0f,-11.0f);

glVertex2f(-2.0f,-11.0f);

glColor3f(0.0f,1.0f,0.0f);

glEnd();

//topi

glBegin(GL_TRIANGLES);

glVertex2f(3.0f,2.65f);

glVertex2f(-3.0f,2.65f);

glVertex2f(0.0f,6.0f);

glEnd();

//tangan

glBegin(GL_LINES);

glVertex2f(-1.0f,-2.5f);

glVertex2f(-4.25f,-5.0f);

glVertex2f(1.0f,-2.5f);

glVertex2f(4.25f,-5.0f);

//tangkai

glVertex2f(-4.25f,-6.0f);

glVertex2f(-4.25f,-1.5f);

glEnd();

//bunga

glBegin(GL_POLYGON);

glColor3f(1.0f,0.0f,0.0f);

glVertex2f(-3.75f,-1.5f);

glVertex2f(-4.75f,-1.5f);

glVertex2f(-4.75f,-0.5f);

glVertex2f(-4.5f,-1.0f);

glVertex2f(-4.25f,-0.5f);

glVertex2f(-4.0f,-1.0f);

glVertex2f(-3.75f,-0.5f);

glEnd();

//————————————————————————————

//

// tampilkan ke layar (swap double buffer)

glfwSwapBuffers();

//

// check input , apakah tombol esc ditekan atau tombol “close” diclick

mRunning = !glfwGetKey( GLFW_KEY_ESC ) && glfwGetWindowParam( GLFW_OPENED );

}

glfwTerminate();

return(0);

}

void mulaiOpenGL(void)

{

//

// Set viewport ke resolusi 640×480 viewport bisa diibaratkan

// layar monitor anda

glViewport( 0, 0, 640, 480 );

//

// Set mode OpenGL ke mode pryeksi (Projection) dan set proyeksi

// menggunakan proyeksi perspective, dengan sudut pandang (Field Of

// View) 60 derajat

glMatrixMode( GL_PROJECTION );

glLoadIdentity();

gluPerspective( 60.0f, 640.0f/480.0f, 0.1f, 1000.0f );

glMatrixMode( GL_MODELVIEW );

glLoadIdentity();

//

// Set mode gradasi warna halus (Smooth)

glShadeModel( GL_SMOOTH );

//

// warna yang digunakan untuk membersihkan layar

glClearColor( 0.0f, 0.0f, 0.0f, 0.0f );

//

// nilai untuk membersihkan depth buffer.

glClearDepth( 1.0f );

//

// Depth test digunakan untuk menghindari polygon yang

// tumpang tindih.

glEnable( GL_DEPTH_TEST );

glDepthFunc( GL_LEQUAL );

//

// beritahu OpenGL untuk menggunakan perhitungan perspective

// yang terbaik (perhitungan ini tidak bisa selalu 100% akurat)

glHint( GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST );

}

1 Response to "Program Pelles C"

hahahahah
makasi ya gan 🙂

Leave a reply to hendry priyatno Cancel reply

Klik disisni! Di Jual Rumah dan Tanah! SEGERA!!

Calendar

January 2010
M T W T F S S
 123
45678910
11121314151617
18192021222324
25262728293031

Pengunjung

  • 159,914 hits