Anda di halaman 1dari 24

Praktikum Grafika Komputer

February 4, 2015

PRIMITIVE OBJECTS DAN OBJEK 2 DIMENSI

A. TUJUAN
- Memahami jenis-jenis primitive objects.
- Memahami dan dapat membuat objek primitif.
- Memahami penerapan Objek primitif menjadi bangun 2 dimensi dasar.
- Memahami dan dapat membuat fungsi untuk bangun 2 dimensi dasar.
B. JOBSHEET PRAKTIKUM
1. Jobsheet 1: Script Dasar
Source code:

glutInitWindowPosition(100,100);
glutInitWindowSize(320,240);
gluOrtho2D(-320.,320.,-240.,240.);
Penjelasan: merupakan script dasar dalam penggunaan program untuk mengatur
ukuran widows dan posisi windows
2. Jobsheet 2:
Source code:

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

void drawDot(void){
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_POINTS);
glVertex2i(-200, -100);
glVertex2i(200, 100);
glVertex2i(250, 150);
glEnd();
glFlush();
}

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


glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE | GLUT_RGBA);
glutInitWindowPosition(500,200);
glutInitWindowSize(640,480);
gluOrtho2D(-320.,320.,-240.,240.);
glutCreateWindow("Modul 2");
glutDisplayFunc(drawDot);
glutMainLoop();
}

Output program:

PRIMITIVE OBJECTS DAN OBJEK 2 DIMENSI Page 1


Praktikum Grafika Komputer
February 4, 2015

Penjelasan: tampilan output program kosong.


3. Jobsheet 3:
Source code:
a.

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

void drawDot(void){
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_POINTS);
glVertex2i(18, 200);
glVertex2i(100, 100);
glVertex2i(200, 200);
glEnd();
glFlush();
}

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


glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE | GLUT_RGBA);
glutInitWindowPosition(100,100);
glutInitWindowSize(600,400);
gluOrtho2D(-320.,320.,-240.,240.);
glutCreateWindow("Modul 2");
glutDisplayFunc(drawDot);
glutMainLoop();
}

Output program:

b.

#include <stdlib.h>
#include <glut.h>
void drawDot(void){
glPointSize(10);
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_POINTS);

PRIMITIVE OBJECTS DAN OBJEK 2 DIMENSI Page 2


Praktikum Grafika Komputer
February 4, 2015

glVertex2i(50, 0);
glVertex2i(50, 50);
glVertex2i(0, 0);
glEnd();
glFlush();
}
void main(int argc, char **argv){
glutCreateWindow("Pemrograman Grafis GLUT");
glutInitWindowPosition(100, 100);
glutInitWindowSize(640, 480);
gluOrtho2D(-320., 320., -240., 240.);
glutDisplayFunc(drawDot);
glutMainLoop();
}

Output program:

c.

#include <stdlib.h>
#include <glut.h>
void drawDot(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_POINTS);
glVertex2i(50, 0);
glPointSize(10);
glVertex2i(50, 50);
glVertex2i(0, 0);
glEnd();
glFlush();
}
void main(int argc, char **argv){
glutCreateWindow("Pemrograman Grafis GLUT");
glutInitWindowPosition(100, 100);
glutInitWindowSize(400, 400);
gluOrtho2D(-320., 320., -240., 240.);
glutDisplayFunc(drawDot);
glutMainLoop();
}
Output program:

PRIMITIVE OBJECTS DAN OBJEK 2 DIMENSI Page 3


Praktikum Grafika Komputer
February 4, 2015

Pejelasan: program menampilkan titik ketebalan titik berbeda karena GL point


size letaknya diubah pada script sesuai dengan letak koordinat.
4. Jobsheet 4:
Source code:

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

void drawLine(){
glLineWidth(35);
glBegin(GL_LINES);
glColor3f(1.,0.,0.);
glVertex2d(0.0,-0.8);
glVertex2d(9.9,8.9);
glEnd();
glFlush();
}

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


glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE | GLUT_RGBA);
glutInitWindowPosition(500,200);
glutInitWindowSize(640,480);
gluOrtho2D(-320.,320.,-240.,240.);
glutCreateWindow("Modul 2");
glutDisplayFunc(drawLine);
glutMainLoop();
}

Output program:

PRIMITIVE OBJECTS DAN OBJEK 2 DIMENSI Page 4


Praktikum Grafika Komputer
February 4, 2015

Penjelasan:Program menampilkan garis dengan koordinat yang telah ditentukan


karena ukuran dari garis melebihi ukuran jendela program maka yang ditampilkan
tidak semuanya.
5. Jobsheet 5:
Source code:
a.

#include <stdlib.h>
#include <glut.h>
void drawLine(){
glLineWidth(20);
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_LINES);
glVertex2d(18, 200);
glVertex2d(100, 100);
glVertex2d(200, 200);
glEnd();
glFlush();
}
void main(int argc, char **argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE | GLUT_RGBA);
glutCreateWindow("Modul 2");
glutInitWindowPosition(100, 100);
glutInitWindowSize(640, 480);
gluOrtho2D(-320., 320., -240., 240.);
glutDisplayFunc(drawLine);
glutMainLoop();
}

Output program:

b.

#include <stdlib.h>
#include <glut.h>
void drawLine(){

glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_LINES);
glVertex2d(18, 200);

PRIMITIVE OBJECTS DAN OBJEK 2 DIMENSI Page 5


Praktikum Grafika Komputer
February 4, 2015

glVertex2d(100, 100);
glLineWidth(20);
glVertex2d(200, 200);
glEnd();
glFlush();
}
void main(int argc, char **argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE | GLUT_RGBA);
glutCreateWindow("Modul 2");
glutInitWindowPosition(100, 100);
glutInitWindowSize(640, 480);
gluOrtho2D(-320., 320., -240., 240.);
glutDisplayFunc(drawLine);
glutMainLoop();
}

Output program:

c.
source code:

#include <stdlib.h>
#include <glut.h>
void drawLine(){

glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_LINES);
glVertex2d(18, 200);
glVertex2d(100, 100);
glVertex2d(200, 200);
glLineWidth(20);
glEnd();
glFlush();
}
void main(int argc, char **argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE | GLUT_RGBA);
glutCreateWindow("Modul 2");
glutInitWindowPosition(100, 100);
glutInitWindowSize(640, 480);
gluOrtho2D(-320., 320., -240., 240.);
glutDisplayFunc(drawLine);
glutMainLoop();

PRIMITIVE OBJECTS DAN OBJEK 2 DIMENSI Page 6


Praktikum Grafika Komputer
February 4, 2015

Output progam:

Penjelasan:
Hampir sama dengan program yang menampilkan titik sebelumnya,GL point size
kita ubah letaknya pada script untuk menampilkan ukuran dan ketebalan garis
yang berbeda.
6. Jobsheet 6:
Source code:

#include <stdlib.h>
#include <glut.h>
void drawPoliline(void)
{

glBegin(GL_LINE_STRIP);
glVertex2d(18, 200);
glVertex2d(100, 100);
glVertex2d(200, 200);
glVertex2d(200, 200);
glEnd();
glFlush();
}
void main(int argc, char **argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE | GLUT_RGBA);
glutInitWindowPosition(100, 100);
glutInitWindowSize(640, 480);
glutCreateWindow("Modul 2");
gluOrtho2D(-320., 320., -240., 240.);
glutDisplayFunc(drawPoliline);
glutMainLoop();
}
Output program:

PRIMITIVE OBJECTS DAN OBJEK 2 DIMENSI Page 7


Praktikum Grafika Komputer
February 4, 2015

Penjelasan:
Program ini menampilkan segitiga dengan sisi bagian atas ukuran garisnya tidak
terlalu besar,sehingga tampilan garisnya tipis.
7. Jobhseet 7:
Source code:

#include <stdlib.h>
#include <glut.h>
void drawSimetris(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_LINE_LOOP);
glVertex2d(18, 200);
glVertex2d(100, 100);
glVertex2d(200, 200);
glVertex2d(200, 200);
glVertex2d(200, 200);
glEnd();
glFlush();
}
void main(int argc, char **argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE | GLUT_RGBA);
glutInitWindowPosition(100, 100);
glutInitWindowSize(640, 480);
glutCreateWindow("Modul 2");
gluOrtho2D(-320., 320., -240., 240.);
glutDisplayFunc(drawSimetris);
glutMainLoop();
}

Output program:

PRIMITIVE OBJECTS DAN OBJEK 2 DIMENSI Page 8


Praktikum Grafika Komputer
February 4, 2015

Penjelasan:
Program ini menampilkan segitiga yang hampir sama dengan sebelumnya,namu
sisi bagian atasya terlihat.
8. Jobsheet 8:
Source code:

#include <stdlib.h>
#include <glut.h>
void drawSegiTiga(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_TRIANGLES);
glVertex2d(18, 200);
glVertex2d(100, 100);
glVertex2d(200, 200);
glVertex2d(100, 50);
glVertex2d(50, 200);
glVertex2d(-50, -50);
glEnd();
glFlush();
}
void main(int argc, char **argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE | GLUT_RGBA);
glutInitWindowPosition(100, 100);
glutInitWindowSize(640, 480);
glutCreateWindow("Modul 2");
gluOrtho2D(-320., 320., -240., 240.);
glutDisplayFunc(drawSegiTiga);
glutMainLoop();
}

Output program:

Penjelasan:
Program menampilkan dua segitiga yang terpisah,namun ada beberapa bagian
yang saling terhubung,hal ini terjadi karena

PRIMITIVE OBJECTS DAN OBJEK 2 DIMENSI Page 9


Praktikum Grafika Komputer
February 4, 2015

9. Jobsheet 9:
Source code:

#include <stdlib.h>
#include <glut.h>
void drawBangunBebas(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_TRIANGLE_STRIP);
glVertex2d(100, 200);
glVertex2d(200, 100);
glVertex2d(250, 250);
glVertex2d(50, 50);
glVertex2d(50, 50);
glVertex2d(-50, -50);
glEnd();
glFlush();
}
void main(int argc, char **argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE | GLUT_RGBA);
glutInitWindowPosition(100, 100);
glutInitWindowSize(640, 480);
glutCreateWindow("Modul 2");
gluOrtho2D(-320., 320., -240., 240.);
glutDisplayFunc(drawBangunBebas);
glutMainLoop();
}

Output program:

Penjelasan:
Program ini hampir sama dengan sebelumnya namun bentuknya bebas dengan
menggunakan prinsip segitiga.

PRIMITIVE OBJECTS DAN OBJEK 2 DIMENSI Page 10


Praktikum Grafika Komputer
February 4, 2015

10. Jobsheet 10:


Source code:

#include <stdlib.h>
#include <glut.h>
void drawTriangleFan(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_TRIANGLE_FAN);
glVertex2d(100, 200);
glVertex2d(200, 100);
glVertex2d(250, 250);
glVertex2d(50, 50);
glVertex2d(50, 50);
glVertex2d(-50, -50);
glEnd();
glFlush();
}
void main(int argc, char **argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE | GLUT_RGBA);
glutInitWindowPosition(100, 100);
glutInitWindowSize(400, 400);
glutCreateWindow("Pemograman Grafis GLUT : Khafid");
gluOrtho2D(-320., 320., -240., 240.);
glutDisplayFunc(drawTriangleFan);
glutMainLoop();
}
Output program:

Penjelasan:
Program ini menggunakan triangle_fan yang titik koordinatnya berpusat.

PRIMITIVE OBJECTS DAN OBJEK 2 DIMENSI Page 11


Praktikum Grafika Komputer
February 4, 2015

11. Jobsheet 11:


Source code:

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

void drawLine(void){
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_QUADS);
glVertex2d(100, 100);
glVertex2d(150, 100);
glVertex2d(150, 150);
glVertex2d(100, 150);
glVertex2d(190, 100);
glVertex2d(240, 100);
glVertex2d(240, 150);
glVertex2d(190, 150);
glEnd();
glFlush();
}
void main(int argc, char **argv){
glutCreateWindow("Modul 2");
glutInitWindowPosition(100, 100);
glutInitWindowSize(640, 480);
gluOrtho2D(-320., 320., -240., 240.);
glutDisplayFunc(drawLine);
glutMainLoop();
}
Output program:

Penjelasan:
Program menampilkan dua buah segi empat yang terpisah,untuk membuat segi
empat menggunakan GL_QUADS

PRIMITIVE OBJECTS DAN OBJEK 2 DIMENSI Page 12


Praktikum Grafika Komputer
February 4, 2015

12. Jobsheet 12:


Source code:

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

void drawLine(void){
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_QUAD_STRIP);
glVertex2d(200, 50);
glVertex2d(200, 100);
glVertex2d(175, 200);
glVertex2d(175, 150);
glVertex2d(-50, 100);
glVertex2d(75, -100);
glEnd();
glFlush();
}
void main(int argc, char **argv){
glutCreateWindow("Modul 2");
glutInitWindowPosition(100, 100);
glutInitWindowSize(640, 480);
gluOrtho2D(-320., 320., -240., 240.);
glutDisplayFunc(drawLine);
glutMainLoop();
}
Output program:

Penjelasan:
Menampilkan objek bangun bebas dengan fungsi GL_QUADS_STRIP. Memliki 6
titik koordinat.

PRIMITIVE OBJECTS DAN OBJEK 2 DIMENSI Page 13


Praktikum Grafika Komputer
February 4, 2015

13. Jobsheet 13:


Source code:

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

void drawLine(void){
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_POLYGON);
glVertex2d(50, 100);
glVertex2d(150, 50);
glVertex2d(250, 100);
glVertex2d(220, 150);
glVertex2d(250, 200);
glVertex2d(150, 150);
glVertex2d(50, 200);
glVertex2d(0, 150);

glEnd();
glFlush();
}
void main(int argc, char **argv){
glutCreateWindow("Modul 2");
glutInitWindowPosition(100, 100);
glutInitWindowSize(640, 480);
gluOrtho2D(-320., 320., -240., 240.);
glutDisplayFunc(drawLine);
glutMainLoop();
}

Output program:

Penjelasan:
Objek bebas kali ini menggunakan polygon

PRIMITIVE OBJECTS DAN OBJEK 2 DIMENSI Page 14


Praktikum Grafika Komputer
February 4, 2015

a. Object 2D: Persegi Panjang


Source code:

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

void segiEmpat(int posx,int posy,int w, int h){


glBegin(GL_QUADS);
glVertex2i(posx,posy);// posisi a
glVertex2i(w+posx,posy);// posisi b
glVertex2i(w+posx,posy-h);// posisi c
glVertex2i(posx,posy-h);// posisi d

glEnd();
}

void renderScene(void){
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.,0.,0.);
segiEmpat(-200,200,100,100);
glColor3f(0.,1.,0.);
segiEmpat(100,200,150,150);
glColor3f(0., 0., 1.);
segiEmpat(0, 0, 50, 50);
glFlush();
}

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


glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE |GLUT_RGBA);
glutInitWindowPosition(100,200);
glutInitWindowSize(320,240);
glutCreateWindow("Modul 2");
gluOrtho2D(-320,320,-240,240);
glutDisplayFunc(renderScene);
glutMainLoop();
}

Output program:

Penjelasan: menampilkan persegi dengan posisi,dimensi,serta warna yang berbeda.


Agar efisien menggunakan

PRIMITIVE OBJECTS DAN OBJEK 2 DIMENSI Page 15


Praktikum Grafika Komputer
February 4, 2015

b. Objek 2D: Trapesium siku

#include <stdlib.h>
#include <glut.h>
void segiEmpat(int posx, int posy, int w, int h){
glBegin(GL_QUADS);
glVertex2i(posx + w, posy);
glVertex2i(posx, posy);
glVertex2i(posx - (w), posy - h);
glVertex2i(posx + w, posy - h);
glEnd();
}
void renderScene(void) {
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1., 0., 0.);
segiEmpat(100, 80, 20, 60);
glColor3f(0., 1., 1.);
segiEmpat(-100, 90, 50, 70);
glColor3f(0., 0., 1.);
segiEmpat(0, -40, 100, 40);
glFlush();
}
void main(int argc, char **argv) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE |GLUT_RGBA);
glutInitWindowPosition(100, 100);
glutInitWindowSize(640, 480);
glutCreateWindow("Modul 2");
gluOrtho2D(-320.0, 320.0, -240.0, 240.0);
glutDisplayFunc(renderScene);
glutMainLoop();
}
Output program:

Penjelasan: deklrasi koordinat untuk membuat titik yang jika dihubungkan akan
membentuk jajar genjang

PRIMITIVE OBJECTS DAN OBJEK 2 DIMENSI Page 16


Praktikum Grafika Komputer
February 4, 2015

c. Objek 2D: Trapesium sama kaki


Source code:

#include <stdlib.h>
#include <glut.h>
void segiEmpat(int posx, int posy, int w, int h){
glBegin(GL_QUADS);
glVertex2i(posx, posy);
glVertex2i(posx + w, posy);
glVertex2i(posx + 2 * w, posy - h);
glVertex2i(posx - w, posy - h);
glEnd();
}
void renderScene(void) {
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0., 0., 1.);
segiEmpat(40, 40, 70, 50);
glColor3f(0., 1., 0.);
segiEmpat(-90, -10, 20, 70);
glColor3f(1., 0., 0.);
segiEmpat(80, 120, 80, 40);
glFlush();
}
void main(int argc, char **argv) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE | GLUT_RGBA);
glutInitWindowPosition(100, 100);
glutInitWindowSize(640, 480);
glutCreateWindow("Modul 2");
gluOrtho2D(-320.0, 320.0, -240.0, 240.0);
glutDisplayFunc(renderScene);
glutMainLoop();
}

Output program:

d. Objek 2D: Jajar Genjang


Source code:

PRIMITIVE OBJECTS DAN OBJEK 2 DIMENSI Page 17


Praktikum Grafika Komputer
February 4, 2015

#include <stdlib.h>
#include <glut.h>
void segiEmpat(int posx, int posy, int w, int h){
glBegin(GL_QUADS);
glVertex2i(posx, posy);
glVertex2i(posx + w, posy);
glVertex2i(posx + (w / 2), posy - h);
glVertex2i(posx - (w / 2), posy - h);
glEnd();
}
void renderScene(void) {
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1., 0., 0.);
segiEmpat(10, 50, 100, 80);
glColor3f(0., 1., 0.);
segiEmpat(-20, -40, 40, 30);
glColor3f(0., 0., 1.);
segiEmpat(-90, -20, 50, 40);
glFlush();
}
void main(int argc, char **argv) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE | GLUT_RGBA);
glutInitWindowPosition(100, 100);
glutInitWindowSize(640, 480);
glutCreateWindow("Modul 2");
gluOrtho2D(-320.0, 320.0, -240.0, 240.0);
glutDisplayFunc(renderScene);
glutMainLoop();
}

Output program:

Penjelasan: program menampilkan jajar genjang dengan koordinat,ukuran,dan


warna yang berbeda. Untuk mengatur koordinat dari jajar genjang kita membuat
deklrasi berikut

PRIMITIVE OBJECTS DAN OBJEK 2 DIMENSI Page 18


Praktikum Grafika Komputer
February 4, 2015

C. TUGAS ASISTENSI
- Tugas Asistensi 1: Membuat objek belah ketupat
source code:

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

void segiEmpat(int posx,int posy,int w, int h){


glBegin(GL_QUADS);
glVertex2i(posx,posy);// posisi a
glVertex2i(posx+w,posy-h);// posisi b
glVertex2i(posx,posy-h);// posisi c
glVertex2i(posx-w,posy-h);// posisi d

glEnd();
}

void renderScene(void){
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1,1,0); //warna kuning
segiEmpat(-180,200,90,90);
glColor3f(1,1,0); //warna kuning
segiEmpat(-180,20,-90,-90);

glColor3f(0,0,1); //biru tua


segiEmpat(0,70,60,60);
glColor3f(0,0,1); //biru tua
segiEmpat(0,-50,-60,-60);

glColor3f(1,1,1); //putih
segiEmpat(180,-40,30,30);
glColor3f(1,1,1); //putih
segiEmpat(180,-100,-30,-30);

glFlush();
}

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


glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE |GLUT_RGBA);
glutInitWindowPosition(100,200);
glutInitWindowSize(320,240);
glutCreateWindow("Belah Ketupat");
gluOrtho2D(-320,320,-240,240);
glutDisplayFunc(renderScene);
glutMainLoop();
}

Output program:

PRIMITIVE OBJECTS DAN OBJEK 2 DIMENSI Page 19


Praktikum Grafika Komputer
February 4, 2015

Penjelasan:
Program ini menampilkan 3 belah ketupat yang memiliki ukuran,posisi serta
warna yang berbeda. Untuk membuat belah ketupat program ini menggunakan
QUADS untuk menghubungkan 4 titik agar saling terhubung.
- Tugas Asistensi 2:
Source code:

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

void segiEmpat(int posx,int posy,int w, int h){


glBegin(GL_QUADS);
glVertex2i(posx,posy);// posisi a
glVertex2i(posx+w,posy-h);// posisi b
glVertex2i(posx,posy-3*h);// posisi c
glVertex2i(posx-w,posy-h);// posisi d

glEnd();
}

void renderScene(void){
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1,1,0); //kuning
segiEmpat(-180,100,90,90);
glColor3f(0,0,1); //biru
segiEmpat(0,100,60,60);
glColor3f(1,1,1); //putih
segiEmpat(90,100,30,30);
glFlush();
}

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


glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE |GLUT_RGBA);
glutInitWindowPosition(100,200);
glutInitWindowSize(320,240);
glutCreateWindow("Layang-Layang");
gluOrtho2D(-320,320,-240,240);
glutDisplayFunc(renderScene);
glutMainLoop();
}

PRIMITIVE OBJECTS DAN OBJEK 2 DIMENSI Page 20


Praktikum Grafika Komputer
February 4, 2015

Output program:

Penjelasan:
Hampir sama dengan program sebelumnya,program kali ini menampilkan objek
2D segi empat yaitu layang-layang menggunakan QUADS juga agar 4 titik yang
dibuat dapat saling terhubung. Deklarasi tiap-tiap posisi titik adalah sebagai
berikut

glVertex2i(posx,posy);// posisi a
glVertex2i(posx+w,posy-h);// posisi b
glVertex2i(posx,posy-3*h);// posisi c
glVertex2i(posx-w,posy-h);// posisi d

- Tugas Asistensi 3:
Source code:

#include "stdlib.h"
#include "glut.h"
#include "math.h"

const double PI = 3.141592653589793;


int i;

void back(){
glBegin(GL_QUADS);
glColor3f(1,1,1);
glVertex2d (-150,150);
glVertex2d(150,150);
glVertex2d(150,-150);
glVertex2d (-150,-150);
glEnd();
}

void lingkaran(int radius, int jumlah_titik, int x_tengah, int y_tengah)


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

PRIMITIVE OBJECTS DAN OBJEK 2 DIMENSI Page 21


Praktikum Grafika Komputer
February 4, 2015

glEnd();
}

void Draw() {
glClear(GL_COLOR_BUFFER_BIT);
back();
glColor3f(1.0, 0.0, 0.0);
lingkaran(30,70,0,0);
glColor3f(1.0, 0.0, 1.0);
lingkaran(20,70,-40,-40);
glColor3f(0.0, 1.0, 0.0);
lingkaran(40,70,60,60);
glFlush();
}

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


glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(300, 300);
glutInitWindowPosition(200, 200);
glutCreateWindow("Lingkaran");
gluOrtho2D(-150., 150., -150., 150.);
glutDisplayFunc(Draw);
glutMainLoop();
return 0;
}

Output program:

Penjelasan:

Program ini menampilkan 3 lingkaran yang memliki ukuran dan warna yang
berbeda. Untuk merubah backgroundnya menjadi putih menggunakan
glColor3f(1,1,1);

- Tugas Asistensi 4:
Source code:

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

void segiEmpat(int posx,int posy,int w, int h){


glBegin(GL_QUADS);
glVertex2i(posx,posy);// posisi a
glVertex2i(posx+w,posy+h);// posisi b

PRIMITIVE OBJECTS DAN OBJEK 2 DIMENSI Page 22


Praktikum Grafika Komputer
February 4, 2015

glVertex2i(posx,posy-h);// posisi c
glVertex2i(posx-w,posy+h);// posisi d

glEnd();
}

void renderScene(void){
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1,1,0); //kuning
segiEmpat(-180,100,90,90);
glColor3f(1,1,0); //kuning
segiEmpat(-180,-50,-90,-90);

glColor3f(0,0,1); //biru
segiEmpat(0,170,60,60);
glColor3f(0,0,1); //biru
segiEmpat(0,80,-60,-60);

glColor3f(1,1,1); //putih
segiEmpat(180,100,30,30);
glColor3f(1,1,1); //putih
segiEmpat(180,70,-30,-30);

glFlush();
}

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


glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE |GLUT_RGBA);
glutInitWindowPosition(100,200);
glutInitWindowSize(320,240);
glutCreateWindow("OBJEK BEBAS");
gluOrtho2D(-320,320,-240,240);
glutDisplayFunc(renderScene);
glutMainLoop();
}

Output program:

Penjelasan:

Program ini hampir sama dengan program layang-layang,namun posisi dari


titiknya diubah sehingga bagian layang-layang bagian bawah berubah menjadi
diatas dan membentuk onjek 2D seperti huruf X. Posisi tiap titiknya sebagai
berikut

PRIMITIVE OBJECTS DAN OBJEK 2 DIMENSI Page 23


Praktikum Grafika Komputer
February 4, 2015

glVertex2i(posx,posy);// posisi a
glVertex2i(posx+w,posy+h);// posisi b
glVertex2i(posx,posy-h);// posisi c
glVertex2i(posx-w,posy+h);// posisi d

D. KESIMPULAN
- Untuk membuat objek 2D pertama-tama harus menentukan terlebih dahulu posisi
dari tiap-tiap titik agar pada saat terhubung dapat benar-benar membentuk objek
yang diinginkan.
- Jika ingin membuat objek segi empat tambahkan glBegin(GL_QUADS); pada awal
program sebagai deklarasi.
- Primitif objek terdiri atas titik,garis,dan bangun 2D
- Primitif objek yang digunakan dalam pembuatan objek, - GL_POINTS,
GL_LINES,GL_LINE_LOOP,GL_LINE_STRIP,GL_TRIANGLES_STRIP,GL_
TRIANGLE_FAN,GL_QUADS,GL_QUADS_STRIP,GL_POLYGON
E. DAFTAR PUSTAKA
- Team Asisten Praktikum.2015.Modul 2.Universitas Negri Malang.Malang

PRIMITIVE OBJECTS DAN OBJEK 2 DIMENSI Page 24

Anda mungkin juga menyukai