Modul 1 dan 2 Primitif dan Kurva Copy.

BAB I
PENDAHULUAN
1.1 Latar Belakang
Mata kuliah Grafik aadalah mata kuliah dimana mahasiswa diharapkan mampu
memahami konsep dan teori mengenai kegrafikaan dan mampu menerapkannya
dalam pemenuhan kebutuhan bahan grafis untuk kepentingan pendidikan dan
nonpendidikan dalam kehidupan sehari-hari.
1.2 Tujuan
Mahasiswa mampu memahami dan menerapkan aplikasi komputer grafik
menggunakan bahasa pemrograman OpenGL.
1.3 Gambaran Umum :
Praktikum ini merupakan bagian dari kuliah Komputer Grafik. Dalam
praktikum ini, praktikan dikenalkan dengan beberapa aspek yang berkaitan
dalam pemrograman komputer grafik.
Praktikum ini memuat beberapa modul yang berisi tentang struktur program
OpenGL (Open Graphics Library): primitif drawing, kurva, transformasi,
animasi, pencahayaan pada OpenGL. Modul-modul ini harus dapat dikuasai
oleh mahasiswa sebagai dasar penguasaan Komputer Grafik.
1.4 Rumusan Kompetensi Dasar
 Mahasiswa mampu memahami dan mengaplikasikan sistem grafik pada
komputer.

 Mahasiswa mampu memahami dan mengaplikasikan berbagai teknik dan
komponen komputer grafik.
 Mahasiswa mampu memahami dan mengaplikasikan visualisasi obyek.

BAB II

DASAR TEORITIS
Komputer grafik telah menunjukkan kemajuan

yang pesat dari

berbagai sisi: algoritma, software, dan hardware. Cakupannya juga telah meluas
ke berbagai bidang: kedokteran, sains, engineering, bisnis, industri, seni, hiburan,
iklan, dan lain-lain.
Salah satu tools/library pembuatan aplikasi grafik adalah OpenGL
(Open Graphics Library). OpenGL adalah suatu standar grafik yang menyediakan
fungsi-fungsi low-level untuk pembuatan berbagai gambar pada komputer.
Sebagai API (Application Programming Interface), OpenGL bersifat
platform- independent/tidak tergantung pada piranti dan platform yang
digunakan. Hal inilah yang membuat OpenGL dapat berjalan pada berbagai

sistem operasi: Windows, UNIX, Mac, Android, dll. OpenGL pada awalnya
didesain untuk digunakan oleh bahasa pemrograman C/C++, namun dalam
perkembangannya OpenGL dapat juga digunakan oleh bahasa pemrograman
yang lain seperti Java, Tcl, Ada, Visual Basic, Delphi, maupun Fortran.
OpenGL memiliki beberapa obyek dasar yang disebut primitif. Gambargambar kompleks dibuat dari kombinasi obyek-obyek primitif ini. Primitif
mudah digambar pada layar monitor karena menggunakan persamaan geometrik
sederhana. Contoh primitif / grafik dasar adalah :
 Titik

 Segitiga

 Garis

 Polygon

Tujuan Utama

 Mahasiswa mampu memahami dan mengaplikasikan sistem grafik
pada komputer.
 Mahasiswa mampu memahami dan mengaplikasikan berbagai teknik

dan komponen komputer grafik.
 Mahasiswa mampu memahami dan mengaplikasikan visualisasi
obyek.

BAB III
PERCOBAAN PRAKTIKUM
PRIMITIF DRAWING
Program 1 Membuat 5 Titik
#include
#include
#include
void display(void)
{
/* bersihkan layar dari titik pixel yang masih ada */
glClear (GL_COLOR_BUFFER_BIT);
/* gambar 5 titik di layar */
glColor3f (1.0, 1.0, 0.0);
/* posisi vertex */
glBegin(GL_POINTS);
glVertex3f (0.0, 0.0, 0.0);

glVertex3f (0.0, 0.8, 0.0);
glVertex3f (0.8, 0.0, 0.0);
glVertex3f (0.0, -0.8, 0.0);
glVertex3f (-0.8, 0.0, 0.0);
glEnd();
glFlush ();
}
/*void kunci(unsigned char key, int x, int y)
{
switch (key)
{
aplikasi berhenti ketika tombol q ditekan
case 27 : case 'q': exit(0); break;
}
glutPostRedisplay();
{*/
main(int argc, char *argv[])
{
glutInitWindowSize(400,400);
glutInitWindowPosition(100,100);

glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
glutCreateWindow("Dian Zefri( 5 titik )");
glutDisplayFunc(display);
//glutKeyboardFunc(kunci);
glutMainLoop();
return 0;}
Hasilnya Adalah :

3.1 Percobaan Primitif Drawing
3.1.1Mengganti Sintak
#include
#include
#include
void display(void)
{
/* bersihkan layar dari titik pixel yang masih ada */
glClear (GL_COLOR_BUFFER_BIT);
/* gambar 5 titik di layar */
glColor3f (1.0, 1.0, 0.0);
/* posisi vertex */

glBegin(- - - - - - -);
glVertex3f (0.0, 0.0, 0.0);
glVertex3f (0.0, 0.8, 0.0);
glVertex3f (0.8, 0.0, 0.0);
glVertex3f (0.0, -0.8, 0.0);
glVertex3f (-0.8, 0.0, 0.0);
glEnd();
glFlush ();
}
/*void kunci(unsigned char key, int x, int y)
{
switch (key)
{
aplikasi berhenti ketika tombol q ditekan
case 27 : case 'q': exit(0); break;
}
glutPostRedisplay();
{*/
main(int argc, char *argv[])
{

glutInitWindowSize(400,400);
glutInitWindowPosition(100,100);
glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);

glutCreateWindow("Dian Zefri( 5 titik )");
glutDisplayFunc(display);
//glutKeyboardFunc(kunci);
glutMainLoop();
return 0;}
Hasil :
3.1.1.1 glBegin(GL_POINT)

3.1.1.2 glBegin(GL_LINES)

3.1.1.3 glBegin(GL_LINE_LOOP)

3.1.1.4 glBegin(GL_LINE_STRIP)

3.1.1.5 glBegin(GL_TRIANGLES)


3.1.1.6 glBegin(GL_TRIANGLE_FAN)

3.1.1.7 glBegin(GL_TRIANGLE_STRIP)

3.1.1.8 glBegin(GL_QUADS)

3.1.1.9 glBegin(GL_QUADS_STRIP)

3.1.1.10 glBegin(GL_POLYGON)

3.1.2 penyisipan glColor3f (X, X, X); pada tiap vertex
#include
#include
#include
void display(void)
{
glClearColor (0.0,0.0,1.0,0.0); //warna dasar putih
glClear (GL_COLOR_BUFFER_BIT);
/* bersihkan layar dari titik pixel yang masih ada */
glClear (GL_COLOR_BUFFER_BIT);

/* gambar 5 titik di layar */

glColor3f (1.0, 0.0, 0.5);
/* posisi vertex */
glLineWidth (40);
glBegin(GL_LINES);
glVertex3f (0.0, 0.0, 0.0);
glVertex3f (0.0, 0.8, 0.0);
glVertex3f (0.8, 0.0, 0.0);
glVertex3f (0.0, -0.8, 0.0);
glVertex3f (-0.8, 0.0, 0.0);
glEnd();
glFlush ();
}
void kunci(unsigned char key, int x, int y)
{
switch (key)
{
/* aplikasi berhenti ketika tombol q ditekan */
case 27 : case 'q': exit(0); break;

}
glutPostRedisplay();
}
int main(int argc, char* argv[])
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(400,400);
glutInitWindowPosition(100,100);
glutCreateWindow("Penyisipan Warna");
glutDisplayFunc(display);
glutKeyboardFunc(kunci);
glutMainLoop();
return 0;
}
Hasil :

3.1.3 ketebalan titik glPointSize(x)
source code
#include


#include
#include
void display(void)
{
glClearColor (1.0,1.0,1.0,1.0); //warna dasar putih
glClear (GL_COLOR_BUFFER_BIT);
/* bersihkan layar dari titik pixel yang masih ada */
glClear (GL_COLOR_BUFFER_BIT);
/* gambar 5 titik di layar */
glColor3f (1.0, 0.0, 0.0);
/* posisi vertex */
glPointSize (20);
glBegin(GL_POINTS);
glVertex3f (0.0, 0.0, 0.0);
glVertex3f (0.0, 0.8, 0.0);
glVertex3f (0.8, 0.0, 0.0);
glVertex3f (0.0, -0.8, 0.0);
glVertex3f (-0.8, 0.0, 0.0);
glEnd();
glFlush ();
}
void kunci(unsigned char key, int x, int y)
{
switch (key)
{
/* aplikasi berhenti ketika tombol q ditekan */
case 27 : case 'q': exit(0); break;
}
glutPostRedisplay();
}
int main(int argc, char* argv[])
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(400,400);
glutInitWindowPosition(100,100);
glutCreateWindow("ketebalan titik");
glutDisplayFunc(display);
glutKeyboardFunc(kunci);
glutMainLoop();
return 0;
}

Hasil :

3.1.4 Ketebalan Garis (glLineWidth)
source code
#include
#include
#include
void display(void)
{
glClearColor (1.0,1.0,1.0,1.0); //warna dasar putih
glClear (GL_COLOR_BUFFER_BIT);
/* bersihkan layar dari titik pixel yang masih ada */
glClear (GL_COLOR_BUFFER_BIT);
/* gambar 5 titik di layar */
glColor3f (1.0, 0.0, 0.0);
/* posisi vertex */
glLineWidth (40);
glBegin(GL_LINES);
glVertex3f (0.0, 0.0, 0.0);
glVertex3f (0.0, 0.8, 0.0);
glVertex3f (0.8, 0.0, 0.0);
glVertex3f (0.0, -0.8, 0.0);
glVertex3f (-0.8, 0.0, 0.0);
glEnd();
glFlush ();
}
void kunci(unsigned char key, int x, int y)
{
switch (key)
{
/* aplikasi berhenti ketika tombol q ditekan */
case 27 : case 'q': exit(0); break;
}
glutPostRedisplay();
}

int main(int argc, char* argv[])
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(400,400);
glutInitWindowPosition(100,100);
glutCreateWindow("ketebalan Garis");
glutDisplayFunc(display);
glutKeyboardFunc(kunci);
glutMainLoop();
return 0;
}
Hasil :

KURVA
Program 2. Memplot persamaan linier
Kurva Polynomial Derajat 1
 Memplot Persamaan Linear
#include
#include
#include
void userdraw(void){
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0, 0.0, 0.0);
float t = 0.0;
glBegin(GL_POINTS);
for(t=-1.0; t