Anda di halaman 1dari 16

Modul 2

Primitive Objects

A. Kompetensi Dasar
 Memahami jenis-jenis primitive objek
 Memahami dan dapat membuat objek primitive
 Memahami penerapan objek primitive menjadi bangun 2 dimensi dasar
 Memahami dan dapat membuat fungsi untuk bangun 2 dimensi dasar.
 Memahami dan dapat membuat fungsi untuk bangun 2 dimensi dasar

B. Petunjuk
 Awali setiap aktivitas dengan do’a, semoga berkah dan mendapatkan kemudahan.
 Pahami Tujuan, dasar teori, dan latihan-latihan praktikum dengan baik dan benar.
 Kerjakan tugas-tugas dengan baik, sabar, dan jujur.
 Tugas praktikum dikerjakan kelompok ( dalam satu kelompok 3 orang), dengan
format pdf, dan dikumpulka dalam satu folder di
email:putrinurrahayu.123@gmail.com.

C. Dasar Teori
1. Sistem Koordinat OpenGL

2. Fungsi gluOrtho2D (left,right,bottom,top) → gluOrtho2D (-320,320,-240,240)


3. Fungsi dasar menggambar titik adalah glVertex
a. glVertex2i(x,y)
Menggambar titik pada koordinat x dan y, dengan nilai satuan berupa integer.
Contoh glVertex2i (10,10);
b. glVertex2f(x,y)
Menggambar titik pada koordinat x dan y, dengan nilai satuan berupa float. Contoh
glVertex2f(10.0,10.0);
c. glVertex2d(x,y)
Menggambar titik pada koordinat x dan y, dengan nilai satuan berupa double.
Contoh glVertex2d (10.0,10.0);

4. Objek Primitif
a. Titik : GL_POINTS
b. Garis : GL_LINES
c. Poliline : GL_LINE_STRIP
d. Poligon (no fill) : GL_LINE_LOOP
e. Triangle : GL_TRIANGLES
Triangle atau segitiga adalah tiga buah titik yang terhubung menjadi suatu segitiga
dengan blok ditengahnya.
f. Quads : GL_QUADS
Quad atau segiempat adalah empat buah titik yang terhubung menjadi suatu
segiempat dengan blok di tengahnya.
g. Polygon : GL_POLYGON
Polygon merupakan suatu fungsi yang mirip dengan polyline, tetapi menghasilkan
kurva tertutup dengan blok warna (fill).
D. Aktifitas Kelas Praktikum
1) Berikut adalah script dasar pada fungsi main() untuk kegiatan praktikum primitive
objek

glutInitWindowPosition (100,100);
glutInitWindowSize (640,480);
dan
gluOrtho2D (-320., 320., -240., 240.);

2) Buatlah project baru pada visual studio dengan nama prak1 dan tambahkan callback
untuk glutDisplayFunc(drawDot) pada fungsi main. Tampilkan hasilnya berupa
screenshot. Jelaskan Proses Rendering.

void drawDot(){
glBegin(GL_POINTS);
glVertex2i(50,0);
glVertex2i(50,50);
glVertex2i(0,0);
glEnd();
glFlush();
}
glBegin(GL_POINTS); Fungsi ini untuk membentuk titik dalam window
glVertex2i(50,0);
glVertex2i(50,50); ketiga fungsi ini untuk menetukan koordinat titik
glVertex2i(0,0); yang akan dibentuk dalam window

3) Buatlah Project baru pada Visual Studio dengan nama prak1-PointSize. Dan
tambahkan fungsi glPointSize(int size) digunakan untuk mengubah ukuran objek
point. Sehingga fungsi menjadi glPointSize(5); Pindah-pindahkan glPointSize pada
posisi a, b, dan c. Sajikan Screen Shot hasil a, b, c dan simpulkan.
[a]
Void drawDot()
{
[b]
glBegin(GL_POINTS);
glVertex2i(50,0);
[c]
glVertex2i (50,50);
glVertex2i (0,0);
glEnd();
}
Gambar Output pada posisi a

Gambar Output pada posisi b


Gambar Output pada posisi c
Kesimmpulan:
 pada posisi a tejadi error karena letak glPointSize(5); diluar fungsi drawbot
sehingga menyebabkan progam gagal dijalaankan
 pada posis b ukuran titik berubah menjadi 5pixel,ini dikarena letak fungsi
glPointSize(5); didalam sehingga fungsi dapat dibaca dan dapat dijalankan
 pada posisi c ukuran titk kembali ke ukuran semula,menurut pendapat kami
fungsi glPointSize(5); tidak terbaca atau tertimpah oleh fungsi lainnya jidak
berada pada posisi c,dalam percobaan kami fungsi glPointSize(5); hanya dapat
di baca pada posisi b

4) Buatlah project baru pada visual studio dengan nama prak1-Lines. Dan tambahkan
fungsi callback untuk glutDisplayFunc(drawLine). Tampilkan hasilnya berupa
screenshot dan jelaskan proses rendering untuk vertexnya.

void drawLine()
{
glBegin(GL_LINES);
glVertex2d(x0,y0);
glVertex2d(x1,x2);
glVertex2d(x2,y2);
glEnd();
glFlush();
}
Gambar Output

Source Code;
void drawLine()
{
glBegin(GL_LINES);
glVertex2d(200,0);
glVertex2d(-200,0);
glVertex2d(0,200);
glVertex2d(0,-200);
glEnd();
glFlush();
}
Penjelasan :
glBegin(GL_LINES); ,adalah fungsi untuk membentuk garis dengan dua titk
koordinat dalam window
glVertex2d(200,0); dua fungsi ini menentukan letak titik koordinat dari
glVertex2d(-200,0); glBegin(GL_LINES);
glVertex2d(0,200);
glVertex2d(0,-200);
5) Buatlah project baru pada visual studio dengan nama prak-LineWidth. Dan
tambahkan fungsi glLineWidth(int size), Untuk mengubah ukuran objek points.
Pindah-pindah glLineWidth pada a,b,dan c . Sajikan screen shot hasil a, b, c dan
simpulkan.
Void drawline()
{[a]
glBegin(GL_LINES);
glVertex2d(x0,y0);
glVertex2d(x1,y1);
[b]
glVertex2d(x2,y2);
[c]
glEnd();

Gambar Output pada posisi a

Gambar Output pada posisi b


Gambar Output pada posisi c
Kesimmpulan:
 pada posis a ukuran garis berubah menjadi 5pixel,ini dikarena letak fungsi
glLineWidth(5) didalam sehingga fungsi dapat dibaca dan dapat dijalankan
 pada posisi b ukuran garis kembali ke ukuran semula,menurut pendapat kami
fungsi glLineWidth(5); tidak terbaca atau tertimpah oleh fungsi lainnya jidak
berada pada posisi b,dalam percobaan kami fungsi glPointSize(5); hanya dapat
di baca pada posisi a
 pada posisi c juga sama ukuran garis sama seperti semula tanpa
glLineWidth(5)

6) Buatlah project baru pada visual studio nama prak1-Linestrip. Buatlah agar hasil
yang ditampilkan membentuk bangun simetris terbuka. Sajian screenshotnya. Dan
jelaskan proses rendering vertexnya.

Void drawPoliline()
{
glBegin(GL_LINE_STRIP);
glVertex2d(x0,y0);
glVertex2d(x1,y1);
glVertex2d(x2,y2);
glVertex2d(x3,y3);
glEnd();
}
Gambar Output

Source Code;{
glBegin(GL_LINE_STRIP);
glVertex2d(-100,150);
glVertex2d(-100,-150);
glVertex2d(100,150);
glVertex2d(100,-150);
glEnd();

}
Penjelasan :
glBegin(GL_LINE_STRIP); adalah fungsi untuk membentuk garis yang terhubung
dari titik koordinak pertama sampai terakhir
glVertex2d(-100,150);
glVertex2d(-100,-150); ini adalah fungsi untuk menetukan titik koordinat
glVertex2d(100,150); dari fungsi glBegin(GL_LINE_STRIP);
glVertex2d(100,-150);

7) Buatlah project baru pada visual studio dengan nama prak1-poligon. Buatlah agar
hasil yang ditampilkan membentuk bangun simetris. Sajikan screenshotnya. Dan
jelaskan proses rendering vertexnya.
glBegin(GL_LINE_LOOP);
glVertex2d(x0,y0);
glVertex2d(x1,y1);
glVertex2d(x2,y2);
glVertex2d(x3,y3);
glVertex2d(x4,y4);
glEnd();

Gambar Output

Source Code;{
glBegin(GL_LINE_LOOP);
glVertex2d(-100,100);
glVertex2d(100,100);
glVertex2d(-100,-100);
glVertex2d(100,-100);
glEnd();
}
Penjelasan :
glBegin(GL_LINE_LOOP); adalah fungsi digunakan untuk membentuk garis
yang saling terhubung dan pada garis terakhir akan terhubung dengan garis
pertama
glVertex2d(-100,100);
glVertex2d(100,100); ini adalah fungsi untuk menetukan titik
glVertex2d(-100,-100); koordinat dari fungsi
glVertex2d(100,-100); glBegin(GL_LINE_LOOP);
8) Buatlah project baru pada visual studio dengan nama prak1-Triangle. Buatlah agar
hasil yang ditampilkan membentuk 2 sigitiga terpisah. Sajikan screenshotnya. Dan
jelaskan proses rendering vertexnya.
glBegin(GL_TRIANGLES);
glVertex2d(x0,y0);
glVertex2d(x1,y1);
glVertex2d(x2,y2);
glVertex2d(x3,y3);
glVertex2d(x4,y4);
glVertex2d(x5,y5);
glEnd();

Gambar Output

Source Code;{
glBegin(GL_TRIANGLES);
glVertex2d(-100,70);
glVertex2d(-10,70);
glVertex2d(-55,-70);
glVertex2d(100,-70);
glVertex2d(10,-70);
glVertex2d(55,70);
glEnd();

Penjelasan:
glBegin(GL_TRIANGLES); adalah fungsi untuk membentuk segitiga,yang artinya
adalah tiga buah titik yang terhubung menjadi suatu segitiga dengan blok
ditengahnya. Setelah itu menentukan koordinat titik untuk membentuk segitiga
dengan menggunakan fungsi glVertex2d.
1. glVertex2d(-100,70);koordinat akan terletak pada titik (-100,70)
2. glVertex2d(-10,70); koordinat akan terletak pada titik (-10,70)
3. glVertex2d(-55,-70); koordinat akan terletak pada titik (-55,-70)
Pada segita hanya terdapat tiga titik sehingga ketiga titik koordinat ini akan
terhubung menjadi suatu segitiga degan blok ditengahnya
4. glVertex2d(100,-70); koordinat akan terletak pada titik (100,-70)
5. glVertex2d(10,-70); koordinat akan terletak pada titik (10,-70)
6. glVertex2d(55,70); koordinat akan terletak pada titik (55,70)
ketiga titik koordinat ini juga akan terhubung menjadi suatu segitiga degan blok
ditengahnya
E. Tugas Praktikum
Contoh program membuat segi empat, Ubahlah program dibawah ini menjadi segi empat!

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

void userdraw()
{
static int tick=0;
glBegin(GL_LINE_STRIP);
glVertex3f(-90,90,0);
glVertex3f(-90,0,0);
glVertex3f(80,0,0);
glVertex3f(80,90,0);

glEnd();
}

void display(void)
{
glClear(GL_COLOR_BUFFER_BIT);
userdraw();
glutSwapBuffers();
}

void main(int argc, char **argv)


{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB);
glutInitWindowPosition(300,150);
glutInitWindowSize(640,480);
glutCreateWindow ("Pemrograman Grafis GLUT");
gluOrtho2D(-640.,640,-240.,240.);
glutIdleFunc(display);
glutDisplayFunc(display);
glutMainLoop();
}
 Penyelesaian:
Dari output gambar diatas dapat diketahui bahwa untuk menjadi segitiga kita hanya perlu
menghubungkan titik kordinat terakhir dengan titik koordinat pertama,jadi kami hanya
mengubah fungsi glBegin (GL_LINE_STRIP); menjadi glBegin (GL_LINE_LOOP);
karena fungsi ini digunakan untuk menghubungkan titik kordinat terakhir dengan titik
koordinat pertama pada program.
Jika kita tetap menggunakan fungsi glBegin (GL_LINE_STRIP); kita hanya
menambahkan satu fungsi glVertex3f,yaitu glVertex3f(-90,90,0); hasil
sama output akan terbentuk segiempat.

# include <glut.h>

void userdraw()
{
static int tick=0;
glBegin(GL_LINE_LOOP);
glVertex3f(-90,90,0);
glVertex3f(-90,0,0);
glVertex3f(80,0,0);
glVertex3f(80,90,0);

glEnd();
}

void display(void)
{
glClear(GL_COLOR_BUFFER_BIT);
userdraw();
glutSwapBuffers();
}
void main(int argc, char **argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB);
glutInitWindowPosition(300,150);
glutInitWindowSize(640,480);
glutCreateWindow ("Pemrograman Grafis GLUT");
gluOrtho2D(-640.,640,-240.,240.);
glutIdleFunc(display);
glutDisplayFunc(display);
glutMainLoop();
}

Gambar Output

Anda mungkin juga menyukai