Oleh :
Fitriyah (140533601394)
OBJEK 2 DIMENSI
TUGAS PRAKTIKUM
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 ();
Penjelasan
Kode program
#include <stdlib.h>
#include <glut.h>
#include <windows.h>
#include <math.h>
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);
}
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,
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();
}
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).