Anda di halaman 1dari 16

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