Anda di halaman 1dari 15

OBJEK 2 DIMENSI

Disusun untuk memenuhi Matakuliah Praktikum Grafika Komputer


Dibimbing oleh Bpk. Ahmad Mursyidun Nidhom
.

Oleh :

Fitriyah (140533601394)

Intan Nurlaila (140533602086)

UNIVERSITAS NEGERI MALANG


FAKULTAS TEKNIK
JURUSAN TEKNIK ELEKTRO
PRODI PENDIDIKAN TEKNIK INFORMATIKA
FEBRUARI 2016
Praktikum 3

OBJEK 2 DIMENSI

TUGAS PRAKTIKUM

1. Buatlah inisialisasi nama anda menggunakan objek 2 dimensi, minimal 3


karakter!

 Kode program

#include<stdlib.h>
#include<glut.h>

void display(){
glClear( GL_COLOR_BUFFER_BIT);//membersihkan bidang gambar

glPointSize(10);
glLineWidth(5);

glBegin(GL_POLYGON); // huruf F
glColor3f(1.0,0.0,1.0);
glVertex2f(-0.8,0.7);
glVertex2f(-0.7,0.7);
glVertex2f(-0.7,0.2);
glVertex2f(-0.8,0.2);
glEnd();

glBegin(GL_POLYGON);
glVertex2f(-0.7,0.7);
glColor3f(0.0,0.5,1.0);
glVertex2f(-0.7,0.6);
glVertex2f(-0.4,0.6);
glVertex2f(-0.4,0.7);
glEnd();

glBegin(GL_POLYGON);
glVertex2f(-0.7,0.5);
glColor3f(1.0,1.5,0.0);
glVertex2f(-0.7,0.4);
glVertex2f(-0.4,0.4);
glVertex2f(-0.4,0.5);
glEnd();

glBegin(GL_POLYGON); //huruf N
glVertex2f(-0.2,0.7);
glColor3f(0.5,1.0,0.0);
glVertex2f(-0.1,0.7);
glColor3f(1.0,0.0,1.0);
glVertex2f(-0.1,0.2);//
glVertex2f(-0.2,0.2);
glEnd();

glBegin(GL_POLYGON);
glVertex2f(-0.1,0.7);
glColor3f(1.0,0.0,0.5);
glVertex2f(-0.1,0.6);
glVertex2f(0.3,0.2);
glVertex2f(0.3,0.3);
glEnd();

glBegin(GL_POLYGON);
glVertex2f(0.3,0.7);
glColor3f(0.0,0.5,1.0);
glVertex2f(0.4,0.7);
glColor3f(1.0,0.0,0.0);
glVertex2f(0.4,0.2);
glVertex2f(0.3,0.2);
glEnd();

glBegin(GL_POLYGON);// huruf I
glColor3f(0.0,0.5,1.0);
glVertex2f(0.6,0.7);
glVertex2f(0.7,0.7);
glColor3f(1.0,0.0,1.0);
glVertex2f(0.7,0.2);
glVertex2f(0.6,0.2);

glEnd();
glFlush();

void init(){
glClearColor(0.0, 0.0, 0.0, 0.0);//definisiin warna clear
atau background

glMatrixMode(GL_PROJECTION);

glLoadIdentity ();

gluOrtho2D(-1.0,1.0,-1.0,1.0);//MENENTUKAN UKURAN KANVAS


// k k b a
glMatrixMode(GL_MODELVIEW);
}

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


glutInit(&argc,argv);
glutInitWindowSize(400,400);
glutInitWindowPosition(200,100);//jarak windows dari tepi
monitor

glutCreateWindow("Nama Panggilan Saya Adalah");


glutDisplayFunc(display);
init();
glutMainLoop();//mulai render
}
 Screenshoot hasil

 Penjelasan

Pada tugas praktikum 1 ini membuat sebuah program untuk nama


inisial. Progrm ini membuat inisial nama Fitriyah (F) dan (N) Intan (I).
Pembuatan program ini menggunakan gabungan dari beberapa
POLYGON sehingga membentuk sebuah huruf dengan titik koordinat
yang telah disesuaikan berdasarkan huruf yang akan dibuat.
Header file merupakan satu jenis pengarah preprocessor yang
digunakan untuk membaca file yang dinamakan file judul
#include<glut.h> file header ini mengandung semua arahan bagi open
GL Utility Kit. glClear(GL_COLOR_BUFFER_BIT); berfungsi untuk
membersihkan atau menghapus layar.
glBegin(GL_POLYGON); digunakan untuk membuat poligon yang
titik koordinatnya bisa lebih dari 4. glVertex2f(-0.8,0.7);berfungsi
untuk menunjukkan koordinat dalam dua dimensi (x,y) (-0.8, 0.7) -0.8
merupakan titik x dan 0.7 titik y. glColor3f(1.0,0.0,1.0); perintah ini
berfungsi untuk memberi warna. Untuk membuat huruf F membutuhkan
3 buah poligon, huruf N membutuhkan 3 poligon dan huruf I
membutuhkan hanya satu poligon. Setiap poligon pada program ini diberi
beberapa glColor untuk menampilkan gradasi warna. Pada setiap poligon
diakhiri dengan sintaks glEnd(); yang berfungsi mengakhiri setiap titik
poligon. gluOrtho2D(-1.0,1.0,-1.0,1.0) berfungsi untuk membagi
bidang menjadi 2 bagian x dan y. glutDisplayFunc(display) berfungsi
untuk memanggil fungsi display.

2. Buatlah objek lingkaran yang memiliki gradasi fill warna!

 Kode program
#include <stdlib.h>
#include <glut.h>
#include <windows.h>
#include <math.h>

const double PI = 3.141592653589793;


int i, radius, jumlah_titik,x_tengah,y_tengah;

void Draw(){
glClear(GL_COLOR_BUFFER_BIT); //membersihkan bidang
gambar

glBegin(GL_POLYGON);
radius=40;
jumlah_titik=360;
x_tengah=50;
y_tengah=50;

for (i=-90;i<=360;i++) {
glColor3f(1.0,1.0,0.0);
float sudut=i*(2*PI/jumlah_titik);
float x=x_tengah+radius*cos(sudut);
float y=y_tengah+radius*sin(sudut);
glVertex2f(x/100,y/100);
}

for (i=0;i<=360;i++) {
glColor3f(0.0,0.0,0.0);
float sudut=i*(2*PI/jumlah_titik);
float x=x_tengah+radius*cos(sudut);
float y=y_tengah+radius*sin(sudut);
glVertex2f(x/100,y/100);
}
glEnd();
glFlush();
}

void Initialize(){
glClearColor(0.0, 0.0, 0.0, 0.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0);
}

int main(int argc, char **argv)


{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(250,250);
glutInitWindowPosition(200,200);
glutCreateWindow("Lingkaran GLUT");
Initialize();
glutDisplayFunc(Draw);
glutMainLoop();//enter the event-processing loop
return 0;
}

 Screenshoot hasil

 Penjelasan
Pada tugas praktikum 2 membuat sebuah lingkaran dengan gradasi
warna. Dalam program ini, perlu untuk mendeklarasikan variabel terlebih
dahulu, terutama karena untuk membuat lingkaran diperlukan rumus
perhitungan matematika.
Selain menggunakan header glut.h, digunakan header math.h. PI
merupakan nilai yang konstan, sehingga pendeklarasiannya menggunakan
const double PI = 3.141592653589793; Selain PI variabel yang perlu
di deklarasikan adalah int i, radius, jumlah_titik,

x_tengah,y_tengah; Membuat objek lingkaran menggunakan polygon ,


kemudian menentukan nilai dari radius, jumlh_titik, x_tengah dan
y_tengah. Karena lingkaran merupakan bangun yang berputar 360 derajat,
maka jumlah_titik=360.
Fungsi perulangan for digunakan untuk membuat lingkaran dengan
beberapa rumus seperti:
float sudut=i*(2*PI/jumlah_titik);
float x=x_tengah+radius*cos(sudut);
float y=y_tengah+radius*sin(sudut);dan
glVertex2f (x/100,y/100);tersebut.
Kemudian untuk memberi warna digunakan glColor3f sesuai
dengan yang diinginkan. Pada lingakaran ini menggunakan 2 kali
perulangan untuk menghasilkan gradasi warna. Pada perulangan pertama
diberi warna kuning atau glColor3f(1.0,1.0,0.0) dan pada perulanagan
kedua diberi warna hitam atau. glColor3f(0.0,0.0,0.0).Untuk memberi
warna background dengan glClearColor(0.0, 0.0, 0.0, 0.0).

Pengaturan ukuran dan letak window menggunakan glutInitWindowSize


dan glutInitwWindowPosition. Untuk membentuk objek diawali dengan
glBegin() dan harus diakhiri dengan glEnd().

3. Buatlah bentuk bintang dengan warna pelangi!

 Kode program

#include <stdlib.h>
#include <glut.h>

void renderScene(void){
glClear(GL_COLOR_BUFFER_BIT); //membersihkan bidang
gambar
glBegin(GL_TRIANGLES);
glColor3f(1.0,1.0,0.0);
glVertex3f(-0.1f, -0.1f, 0.0f);
glVertex3f(-0.3f, -0.12f, 0.0f);
glVertex3f(-0.1f, -0.36f, 0.0f);
glEnd();

glBegin(GL_QUADS);
glColor3f(1.0,1.0,1.0);
glVertex3f(0.1f, -0.1f, 0.0f);
glVertex3f(-0.1f, -0.1f, 0.0f);
glVertex3f(-0.16f, -0.4f, 0.0f);
glVertex3f(0.16f, -0.4f, 0.0f);
glEnd();
glBegin(GL_TRIANGLES);
glColor3f(1.0,0.0,0.0);
glVertex3f(0.0f, 0.1f, 0.0f);
glVertex3f(-0.1f, -0.1f, 0.0f);
glVertex3f(0.1f, -0.1f, 0.0f);

glBegin(GL_TRIANGLES);
glColor3f(0.0,1.0,0.0);
glVertex3f(-0.14f, -0.3f, 0.0f);
glVertex3f(-0.22f, -0.55f, 0.0f);
glVertex3f(0.0f, -0.4f, 0.0f);

glBegin(GL_TRIANGLES);
glColor3f(0.0,0.0,1.0);
glVertex3f(0.0f, -0.4f, 0.0f);
glVertex3f(0.22f, -0.55f, 0.0f);
glVertex3f(0.14f, -0.3f, 0.0f);

glBegin(GL_TRIANGLES);
glColor3f(1.0,0.0,1.0);
glVertex3f(0.14f, -0.3f, 0.0f);
glVertex3f(0.3f, -0.12f, 0.0f);
glVertex3f(0.1f, -0.1f, 0.0f);
glEnd();

glFlush();
}

int main(int argc, char **argv)


{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(300,300);
glutInitWindowPosition(100,100);
glutCreateWindow("BINTANG");
glutDisplayFunc(renderScene);
glutMainLoop();//enter the event-processing loop
return 0;
}
 Screenshoot hasil
 Penjelasan

Pada tugas 3 ini membuat sebuah program bintang pelangi yang


masing-masing sudutnya mempunyai warna yang berbeda. Langkah awal
dalam membuat program bintang pelangi dua dimensi pada code program
diatas adalah membuat objek terlebih dahulu dengan menentukan ukuran
letak setiap koordinat. Pada program ini menggunakan fungsi GL_QUADS
dan GL_TRIANGLES untuk membentuk koordinat pada bintang.
Kemudian untuk tampilan seperti pemberian warna suatu objek, dapat
menggunakan fungsi glcolor(). Dan melakukan render dengan looping
seperti yang tertera pada fungsi renderScene di atas.
Pada GL_TRIANGLES pertama glColor3f(1.0,1.0,0.0); yang
berwana kuning memiliki 3 titik koordinat. GL_QUADS dengan warna
glColor3f(1.0,1.0,1.0); memiliki 4 titik koordinat. GL_TRIANGLES
kedua dengan warna merah glColor3f(1.0,0.0,0.0); memiliki 3 titik
koordinat. GL_TRIANGLES ketiga dengan warna hijau
glColor3f(0.0,1.0,0.0);memiliki 3 titik koordinat. GL_TRIANGLES
keempat dengan warna biru glColor3f(0.0,0.0,1.0); memiliki 3 titik
koordinat. GL_TRIANGLES kelima dengan warna magenta
glColor3f(1.0,0.0,1.0); memiliki 3 titik koordinat. Terdapat fungsi
glutMainLoop (); yang digunakan untuk menjalankan program dan semua
fungsi sebelumnya akan berpengaruh setelah fungsi dieksekusi.

4. Buatlah bentuk robot sesuai kreatifitas anda!

 Kode program

#include <stdlib.h>
#include <glut.h>
void init()
{
glClearColor(0.78, 0.80, 0.5, 1.0);
glColor3f(1.0, 1.0, 1.0);
glMatrixMode (GL_PROJECTION);
glLoadIdentity();
glOrtho(-1.3, 1.3, -1.3, 1.3, -1.3, 1.3 );
}
void mydisplay()
{
glClear(GL_COLOR_BUFFER_BIT);
//kepala
glBegin(GL_POLYGON);
glColor3f(1.0, 0.92, 0.80); //almond
glVertex2f(-0.2, 0.9);
glVertex2f(-0.2, 0.6);
glVertex2f(0.2, 0.6);
glVertex2f(0.2, 0.9);
glEnd();;

//mata kiri
glBegin(GL_POLYGON);
glColor3f(0.0, 0.0, 0.0); // hitam
glVertex2f(-0.15, 0.82);
glVertex2f(-0.15, 0.75);
glVertex2f(-0.05, 0.75);
glVertex2f(-0.05, 0.82);
glEnd();

//mata kanan
glBegin(GL_POLYGON);
glColor3f(0.0, 0.0, 0.0); // hitam
glVertex2f(0.15, 0.82);
glVertex2f(0.15, 0.75);
glVertex2f(0.05, 0.75);
glVertex2f(0.05, 0.82);
glEnd();

//alis kanan
glBegin(GL_POLYGON);
glColor3f(0.0, 0.0, 0.0); // hitam
glVertex2f(0.15, 0.85);
glVertex2f(0.15, 0.87);
glVertex2f(0.05, 0.87);
glVertex2f(0.05, 0.85);
glEnd();

//alis kiri
glBegin(GL_POLYGON);
glColor3f(0.0, 0.0, 0.0); // hitam
glVertex2f(-0.15, 0.85);
glVertex2f(-0.15, 0.87);
glVertex2f(-0.05, 0.87);
glVertex2f(-0.05, 0.85);
glEnd();

//mulut
glBegin(GL_POLYGON);
glColor3f(1.0, 0.0, 0.0); //merah
glVertex2f(-0.05, 0.65);
glVertex2f(-0.05, 0.67);
glVertex2f(0.05, 0.67);
glVertex2f(0.05, 0.65);
glEnd();
glBegin(GL_POLYGON);
glColor3f(1.0, 0.0, 0.0); //merah
glVertex2f(-0.05, 0.65);
glVertex2f(-0.05, 0.70);
glVertex2f(-0.04, 0.70);
glVertex2f(-0.04, 0.65);
glEnd();
glBegin(GL_POLYGON);
glColor3f(1.0, 0.0, 0.0); //merah
glVertex2f(0.05, 0.65);
glVertex2f(0.05, 0.70);
glVertex2f(0.06, 0.70);
glVertex2f(0.06, 0.65);
glEnd();

//Rambut kanan
glBegin(GL_POLYGON);
glColor3f(0.0, 0.0, 0.0);
glVertex2f(0.20, 0.9);
glVertex2f(0.20, 0.6);
glVertex2f(0.25, 0.6);
glVertex2f(0.25, 0.9);
glEnd();

//rambut kiri
glBegin(GL_POLYGON);
glColor3f(0.0, 0.0, 0.0);
glVertex2f(-0.20, 0.9);
glVertex2f(-0.20, 0.6);
glVertex2f(-0.25, 0.6);
glVertex2f(-0.25, 0.9);
glEnd();

//rambut atas
glBegin(GL_POLYGON);
glColor3f(0.0, 0.0, 0.0);
glVertex2f(-0.25, 0.9);
glVertex2f(-0.25, 0.95);
glVertex2f(-0.23, 1.0);
glVertex2f(0.23, 1.0);
glVertex2f(0.25, 0.95);
glVertex2f(0.25, 0.9);
glEnd();

//leher
glBegin(GL_POLYGON);
glColor3f(1.0, 0.92, 0.80); //almond
glVertex2f(-0.07, 0.60);
glVertex2f(-0.07, 0.55);
glVertex2f(0.07, 0.55);
glVertex2f(0.07, 0.60);
glEnd();

//lengan kiri
glBegin(GL_POLYGON);
glColor3f(1.0, 0.92, 0.80); //almond
glVertex2f(-0.15, 0.55);
glVertex2f(-0.15, 0.45);
glVertex2f(-0.40, 0.45);
glVertex2f(-0.40, 0.55);
glEnd();
glBegin(GL_POLYGON);
glColor3f(1.0, 0.92, 0.80); //almond
glVertex2f(-0.40, 0.77);
glVertex2f(-0.40, 0.55);
glVertex2f(-0.30, 0.55);
glVertex2f(-0.30, 0.77);
glEnd();

//lengan kanan
glBegin(GL_POLYGON);
glColor3f(1.0, 0.92, 0.80); //almond
glVertex2f(0.15, 0.55);
glVertex2f(0.15, 0.45);
glVertex2f(0.40, 0.45);
glVertex2f(0.40, 0.55);
glEnd();
glBegin(GL_POLYGON);
glColor3f(1.0, 0.92, 0.80); //almond
glVertex2f(0.40, 0.45);
glVertex2f(0.40, 0.20);
glVertex2f(0.30, 0.20);
glVertex2f(0.30, 0.45);
glEnd();

//badan
glBegin(GL_POLYGON);
glColor3f(0.00, 0.00, 0.55); //dongker
glVertex2f(-0.15, 0.25);
glVertex2f(-0.20, 0.55);
glVertex2f(0.20, 0.55);
glVertex2f(0.15, 0.25);
glEnd();

//segitiga baju
glBegin(GL_TRIANGLES);
glColor3f(1.0, 0.92, 0.80); //almond
glVertex2f(-0.07, 0.55);
glVertex2f(0, 0.45);
glVertex2f(0.07, 0.55);
glEnd();

//telapak kiri
glBegin(GL_POLYGON);
glColor3f(0.55, 0.00, 0.0); //dark red
glVertex2f(-0.50, 0.70);
glVertex2f(-0.50, 0.77);
glVertex2f(-0.40, 0.77);
glVertex2f(-0.40, 0.70);
glEnd();

//telapak kanan
glBegin(GL_POLYGON);
glColor3f(0.55, 0.00, 0.0); //dark red
glVertex2f(0.50, 0.20);
glVertex2f(0.50, 0.27);
glVertex2f(0.40, 0.27);
glVertex2f(0.40, 0.20);
glEnd();

//sabuk
glBegin(GL_POLYGON);
glColor3f(0.20, 0.20, 0.20); //greyy 20
glVertex2f(-0.15, 0.25);
glVertex2f(-0.15, 0.20);
glVertex2f(0.15, 0.20);
glVertex2f(0.15, 0.25);
glEnd();

//rok
glBegin(GL_POLYGON);
glColor3f(1.0,1.0,0.0);//kuning
glVertex2f(0.15, 0.20);
glVertex2f(0.35, -0.15);
glVertex2f(-0.35, -0.15);
glVertex2f(-0.15, 0.20);
glEnd();

//kaki kanan
glBegin(GL_POLYGON);
glColor3f(1.0, 0.92, 0.80); //almond
glVertex2f(0.18, -0.15);
glVertex2f(0.18, -0.40);
glVertex2f(0.05, -0.40);
glVertex2f(0.05, -0.15);
glEnd();

//kaki kiri
glBegin(GL_POLYGON);
glColor3f(1.0, 0.92, 0.80); //almond
glVertex2f(-0.18, -0.15);
glVertex2f(-0.18, -0.40);
glVertex2f(-0.05, -0.40);
glVertex2f(-0.05, -0.15);
glEnd();

//sepatu kiri
glBegin(GL_POLYGON);
glColor3f(0.55, 0.00, 0.0); //dark red
glVertex2f(-0.18, -0.40);
glVertex2f(-0.25, -0.43);
glVertex2f(-0.25, -0.50);
glVertex2f(-0.05, -0.50);
glVertex2f(-0.05, -0.40);
glEnd();

//sepatu kanan
glBegin(GL_POLYGON);
glColor3f(0.55, 0.00, 0.0); //dark red
glVertex2f(0.18, -0.40);
glVertex2f(0.25, -0.43);
glVertex2f(0.25, -0.50);
glVertex2f(0.05, -0.50);
glVertex2f(0.05, -0.40);
glEnd();
glFlush();
}
int main(int argc, char **argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(500,500);
glutInitWindowPosition(0,0);
glutCreateWindow("Go Girl Robot");
glutDisplayFunc(mydisplay);
init();
glutMainLoop();//enter the event-processing loop
return 0;
}
 Screenshoot hasil

 Penjelasan
Pada tugas praktikum 4 ini membuat sebuah program robot
sederhana. Program bertema Go Girl Robot ini merupakan robot perempuan
yang dibuat dengan mengunkan komponen dasar GL_POLYGON untuk
membuat kepala, mata, alis, mulut, leher, tangan, badan, rok, kaki dan juga
sepatu. Selain itu juga menggunakan GL_TRIANGLES yang digunakan
untuk bentuk v pada leher robot.
Untuk merubah parameter transformasi ortogonal dapat
menggunakan perintah glOrtho() dengan didahului proses merubah
status OpenGL ke mode proyeksi dengan perintah
glMatrixMode(GL_PROJECTION).
Untuk menciptakan sebuah bentuk seperti yang diinginkan, dibuat
dengan menggunakan penyesuaian titik koordinat dengan fungsi
glVertex2f. glVertex2f berfungsi untuk menunjukkan koordinat dalam 2
dimensi (x,y).
glColor3f digunakan untuk memberikan warna pada objek . Untuk
pewarnaan kepala, leher, tangan dan kaki digunakan warna almond atau
dalam kode warna yaitu glColor3f(1.0, 0.92, 0.80) . Kemudian untuk
warna badan menggunakan warna biru atau glColor3f(0.00, 0.00,
0.55); untuk warna rok adalah kuning atau glColor3f(1.0,1.0,0.0) ,
untuk warna mulut adalah merah atau glColor3f(1.0, 0.0, 0.0) , warna
mata dan rambut adalah hitam atau glColor3f(0.0, 0.0, 0.0) ,
sedangkan untuk sepatu menggunakan warna merah gelap/kecoklatan atau
glColor3f(0.55, 0.00, 0.0).

Berbeda dengan mewarnai objek, untuk mengganti warna


background digunakan fungsi glClearColor(0.78, 0.80, 0.5, 1.0); .
glutCreateWindow("Go Girl Robot"); digunakan untuk memberi nama
pada window . Pengaturan ukuran dan letak window menggunakan
glutInitWindowSize dan glutInitwWindowPosition. Untuk
membentuk objek diawali dengan glBegin() dan harus diakhiri dengan
glEnd().

Anda mungkin juga menyukai