• Tidak ada hasil yang ditemukan

Rangkuman

Dalam dokumen MODUL PROGRAM KEAHLIAN GANDA (Halaman 27-163)

16

pemakaian grafis vektor akan lebih irit dari segi volume file, tetapi dari segi pemakaian prosessor akan memakan banyak memori.

Pada saat ini grafika komputer digunakan secara rutin dibidang ilmu pengetahuan, teknik, kedokteran, bisnis, industri, pemerintahan, seni, hiburan, pendidikan, periklanan, dan lain sebagainya.

IPK Hasil Yang Dicapai Rencana Tindak Lanjut Peserta diklat mampu

menganalisis konsep grafis dalam grafika komputer dan berapa proses pencapaian kompetensinya

Peserta diklat mampu membedakan desain grafis bitmap dan vector dan berapa besar proses pencapaian kompetensinya

Peserta diklat mampu menjelaskan penerapan grafika komputer dalam berbagai bidang dan berapa besar proses pencapaian kompetensinya 1. Grafika Komputer 2. a

H. Kunci Jawaban

G. Umpan Balik

19

OpenGL dan LWJGL

Setelah mengikuti kegiatan belajar 2 ini peserta diklat diharapkan dapat :

1. Melalui diskusi peserta diklat dapat menggambarkan fungsi-fungsi OpenGL yang digunakan untuk membuat objek

2. Melalui praktikum peserta diklat dapat mengintegrasikan LWJGL ke dalam Integrated Development Environment IDE NetBeans

3. Melalui praktikum peserta diklat dapat menulis kode program dengan perintah-perintah dasar OpenGL

1. Peserta diklat mampu menggunakan fungsi-fungsi dasar OpenGL untuk membuat objek

2. Peserta diklat mampu memodifikasikan fungsi-fungsi dasar OpenGL untuk membuat objek

3. Peserta diklat mampu menerapkan LWJGL ke dalam IDE NetBeans

4. Peserta diklat mampu membuat kode program dengan perintah-perintah OpenGL

1. OpenGL

OpenGL (Open Graphics Library) adalah sebuah program aplikasi antar muka yang digunakan untuk mendefinisikan komputer grafis 2D dan 3D. Program lintas-platform API ini umumnya dianggap ketetapan standar dalam industri komputer dalam interaksi dengan komputer grafis 2D dan juga telah menjadi alat yang biasa untuk digunakan dengan grafis 3D. Singkatnya, OpenGL menghilangkan kebutuhan pemrograman untuk menulis ulang bagian grafis dari sistem operasi setiap kali sebuah bisnis akan diupgrade ke versi baru dari sistem. Fungsi dasar dari OpenGL adalah untuk

A. Tujuan Pembelajaran

B. Indikator Pencapaian Kompetensi

20

mengeluarkan koleksi perintah khusus atau executable ke sistem operasi. Dengan demikian, program ini bekerja dengan perangkat keras grafis yang ada yang berada pada hard drive atau sumber tertentu lainnya. Setiap perintah dirancang untuk melakukan tindakan tertentu, atau memulai efek khusus tertentu yang terkait dengan grafis.

OpenGL adalah suatu spefikasi grafik pada level rendah yang menyediakan fungsi untuk pembuatan grafik dasar termasuk titik, garis, dan lingkaran. OpenGL digunakan untuk keperluan-keperluan pemrograman grafis.OpenGL bersifat Open-Source, multi-platform dan multi-language serta digunakan mendefinisikan suatu objek, baik objek 2 dimensi maupun objek 3 dimensi. OpenGL juga merupakan suatu antarmuka pemrograman aplikasi (application programming interface (API) yang tidak tergantung pada piranti dan platform yang digunakan, sehingga OpenGL dapat berjalan pada sistem operasi Windows, UNIX dan sistem operasi lainnya.

OpenGL pada awalnya didesain untuk digunakan pada bahasa pemrograman C/C++, namun dalam perkembangannya OpenGL dapat juga digunakan dalam bahasa pemrograman yang lain seperti Java, Tcl, Ada, Visual Basic, Delphi, maupun Fortran. Namun OpenGL di-package secara berbeda-beda sesuai dengan bahasa pemrograman yang digunakan. Oleh karena itu, package OpenGL tersebut dapat di-download pada situs http://www.opengl.org sesuai dengan bahasa pemrograman yang akan digunakan.

OpenGl melayani dua tujuan :

 Untuk menyembunyikan kompleksitas dari interfacing dengan menggunakan berbagai 3D accelerators dan menggunakan satu standar API.

 Untuk menyembunyikan kemampuan yang berbeda dari hardware platform yang mendukung implementasi penuh fitur opengl (menggunakan software emulation jika diperlukan).

LWJGL

Lightweight Java Game Library (LWJGL) merupakan salah satu jenis game engine yang berjalan dengan dasar bahasa java (open source dan free). Game engine sendiri merupakan perangkat lunak yang digunakan khusus

21 dalam pembuatan video game. Inti LWJGL adalah untuk menyisipkan tampilan level yang lebih rendah dan tidak perlu memasukkan kode.

Sintax Perintah OpenGL

Sintaks perintah OpenGL mengikuti aturan penulisan dari library dimana fungsi tersebut berasal, format penulisan fungsi OpenGL adalah :

<awalan library><perintah><optional jumlah argumen><optional tipe argumen>

Semua perintah OpenGL menggunakan awalan gl diikuti dengan huruf kapital pada setiap kata membentuk nama perintah (sebagai contoh glClearColor). Untuk mendefinisikan konstanta diawali dengan GL_, dengan menggunakan huruf kapital dan garis bawah untuk memisahkan kata (seperti GL_POLY_STIPPLE). Terkadang beberapa huruf dan angka ditambahkan pada akhir perintah (seperti 3f pada glVertex3f). Dalam hal ini angka 3 menunjukkan berapa banyak argumen yang harus ada pada perintah tersebut dan akhiran huruf f menunjukkan jenis datanya yaitu floating. Sebagai contoh pada dua perintah berikut ini :

glVertex3i(1,0,-2);

glVertex3f(1.0, 0.0, -2.0);

adalah sama yaitu meletakkan titik di layar pada koordinat x = 1, y = 0 dan z = -2, perbedaannya yaitu pada perintah pertama menspesifikasikan titik dengan tipe data integer 32-bit, sedangkan yang kedua dengan tipe data single precision floating point.

Beberapa perintah OpenGL menambahkan perintah huruf akhir v yang menunjukkan bahwa perintah tersebut menggunakan pointer ke array/vektor. Di bawah ini contoh perbedaannya.

float color_array[]={1.0,0.0,0.0} glColor3f (1.0,0.0,0.0);

22

Kegiatan Praktikum 2.1

Langkah-langkah instalasi LWJGL ke dalam IDE NetBeans

1. Pilih Lwjgl-X.X.zip yang tersedia dengan men-download file LWJGL http://lwjgl.org/download.php

2. Unduh Lwjgl-docs-X.X.zip, Javadoc lwjgl untuk di Netbeans (Direkomendasikan)

3. Unduh Lwjgl-source-X.X.zip, source code lwjgl untuk di Netbeans (Direkomendasikan)

4. Unduh Lwjgl-applet-X.X.zip jika ingin menggunakan Java Applet dengan Lwjgl

5. Ekstrak File Lwjgl-X.X.zip dan Lwjgl-source-X.X.zip kecuali Lwjgl-docs-X.X.zip.

a) Cara Instalasi LWJGL di NetBeans

Berikut tahap-tahap instalasi LWJGL di NetBeans: 1. Buka Netbeans

2. Klik New Project, pilih Java Application > Next

Tulis Project Name dengan nama “TutorialLWJGL” Klik Tools > Libraries di main menu

23 3. Klik Tombol New Library

24

5. Pastikan Library sudah dipilih. Sekarang pilih tab Classpath untuk menambahkan library terbaru dan kemudian klik tombol Add JAR/Folder.

6. Pergi ke folder ekstrak LWJGL-X.X.zip dan folder Jar. lwjgl.jar, lwjgl_util.jar, dan jinput.jar merupakan file jar yang harus Anda pilih. Anda dapat memilih lebih dari 1 file dengan menahan tombol Ctrl pada Keyboard.

7. Pilih Tab Sources, kemudian klik Add JAR/Folder. Pergi ke folder ekstrak Lwjgl-source-X.X.zip dan klik folder src, kemudian pilih folder generated dan java.

25 8. Pilih Tab Javadoc dan klik Add JAR/Folder. Kemudian pilih file

Lwjgl-docs-X.X.zip

9. Klik OK. Selesai. Library sudah ditambahkan ke dalam Netbeans.

b) Menambahkan library LWJGL ke dalam library di aplikasi Berikut ini tahap-tahap menambah library LWJGL: 1. Buka Netbeans.

26

3. Pilih LWJGL > Klik Add Library.

4. Konfigurasi VM dengan cara klik kanan pada Tutorial lwjgl dan pilih Properties

27 Kemudian Pilih Run, dan tambahkan script berikut ke dalam kolom VM Options:

-Djava.library.path="Directory\lwjgl-2.9.1\native\windows"

28

Kegiatan Praktikum 2.3

Kegiatan Praktikum ini adalah kegiatan praktikum menggunakan struktur dasar OpenGL dan LWJGL dalam IDE NetBeans.

1. Bagian awal dari program adalah bagian untuk mengimport library-library yang diperlukan untuk mengintegrasikan LWJGL ke dalam IDE Netbeans

import java.util.logging.Level; import java.util.logging.Logger;

import static komgraf01.KomGraf01.DISPLAY_HEIGHT; import static komgraf01.KomGraf01.DISPLAY_WIDTH; import org.lwjgl.LWJGLException;

import org.lwjgl.input.Keyboard; import org.lwjgl.input.Mouse; import org.lwjgl.opengl.Display; import org.lwjgl.opengl.DisplayMode; import static org.lwjgl.opengl.GL11.*;

import static org.lwjgl.util.glu.GLU.gluOrtho2D;

2. Bagian kedua dari program adalah bagian yang digunakan untuk menentukan koordinat dari bidang dua dimensi dalam bentuk garis dimana nilai satuan berupa double.

public class OpenGL1 { public void draw() {

glBegin(GL_LINE_LOOP);//Objek garis

glVertex2d(200, 200); // koordinat x dan y glVertex2d(600, 200); glVertex2d(200, 325); glVertex2d(600, 325); glVertex2d(200, 450); glVertex2d(600, 450); glEnd(); }

3. Bagian ketiga dari program adalah bagian yang digunakan untuk inisialisasi OpenGL

public void render() {

glClear(GL_COLOR_BUFFER_BIT);//menghapus layar glLoadIdentity();

29 glColor3d(1, 0, 0);

draw(); glFlush(); }

public void create() throws LWJGLException {

Display.setDisplayMode(new DisplayMode(800, 600)); Display.setFullscreen(false); Display.setTitle("GAMBAR Primitives-Geometric : POLYGON"); Display.create(); initGL(); resizeGL(); } void initGL() { glClearColor(0.0f, 1.0f, 1.0f, 1.0f); glDisable(GL_DEPTH_TEST); glDisable(GL_LIGHTING); }

public void resizeGL() { //2D Scene

glViewport(0, 0, DISPLAY_WIDTH, DISPLAY_HEIGHT); glMatrixMode(GL_PROJECTION);

glLoadIdentity();

gluOrtho2D(0.0f, DISPLAY_WIDTH, 0.0f, DISPLAY_HEIGHT); glPushMatrix();

glMatrixMode(GL_MODELVIEW); glLoadIdentity();

glPushMatrix(); }

public void run() {

while (!Display.isCloseRequested() &&

!Keyboard.isKeyDown(Keyboard.KEY_ESCAPE)) { if (Display.isVisible()) { update(); render(); } else { if (Display.isDirty()) {

30

render(); }

try {

Thread.sleep(100);

} catch (InterruptedException ex) { } } Display.update(); Display.sync(60); } }

private void update() { }

public void destroy() { Mouse.destroy(); Keyboard.destroy(); Display.destroy(); }

public static void main(String[] args) { OpenGL1 b1 = new OpenGL1();

try {

b1.create(); b1.run();

} catch (LWJGLException ex) { Logger.getLogger(Belajar1.class.getName()).log(Level.SEVERE, null, ex); } } }

31

Latihan

1. OpenGL (Open Graphics Library) bersifat Open-Source, multi-platform dan multi-language adalah sebuah program aplikasi interface untuk mendifinisikan suatu objek yaitu ....

2.

Fungsi dasar dari OpenGL adalah ....

OpenGL (Open Graphics Library) adalah sebuah program aplikasi interface yang digunakan untuk mendefinisikan komputer grafis 2D dan 3D. Program lintas-platform API ini umumnya dianggap ketetapan standar dalam industri komputer dalam interaksi dengan komputer grafis 2D dan juga telah menjadi alat yang biasa untuk digunakan dengan grafis 3D.OpenGL adalah suatu spefikasi grafik yang low-level yang menyediakan fungsi untuk pembuatan grafik primitif termasuk titik, garis, dan lingkaran. OpenGL digunakan untuk keperluan-keperluan pemrograman grfis.OpenGL bersifat Open-Source, multi-platform dan multi-language serta digunakan mendefinisikan suatu objek, baik objek 2 dimensi maupun objek 3 dimensi.

Lightweight Java Game Library (LWJGL) merupakan salah satu jenis game engine yang berjalan dengan dasar bahasa java (open source dan free). Game engine sendiri merupakan perangkat lunak yang digunakan khusus dalam pembuatan video game.

Sintaks perintah OpenGL mengikuti aturan penulisan dari library dimana fungsi tersebut berasal, format penulisan fungsi OpenGL adalah :

<awalan library><perintah><optional jumlah argumen><optional tipe argumen>

Semua perintah OpenGL menggunakan awalan gl diikuti dengan huruf kapital pada setiap kata membentuk nama perintah (sebagai contoh glClearColor).

E. Latihan / Tugas

32

IPK Hasil Yang Dicapai Rencana Tindak Lanjut Peserta diklat mampu

menggunakan fungsi-fungsi dasar OpenGL untuk membuat objek dan berapa proses pencapaian kompetensinya Peserta diklat mampu memodifikasikan fungsi-fungsi dasar OpenGL untuk membuat objek dan berapa besar proses pencapaian kompetensinya Peserta diklat mampu menerapkan LWJGL ke dalam IDE NetBeans dan berapa besar proses pencapaian kompetensinya

Peserta diklat mampu membuat kode program dengan perintah-perintah OpenGL dan berapa besar proses pencapaian kompetensinya

1. Objek 2 dimensi dan objek 3 dimensi

2. Mengeluarkan koleksi perintah khusus(grafik) atau executable ke sistem operasi

H. Kunci Jawaban

G. Umpan Balik

35

PEMODELAN OBJEK 2 DIMENSI

Primitif Objek

Setelah mengikuti kegiatan belajar 3 ini peserta diklat diharapkan dapat :

1. Melalui diskusi peserta diklat mengemukakan output primitif grafika komputer untuk membuat objek.

2. Melalui praktikum peserta diklat membuat kode program berdasarkan algoritma pembentukan garis dan lingkaran.

1. Peserta diklat mampu menerapkan konsep konsep dasar grafika computer untuk menggambar primitif objek

2. Peserta diklat mampu menggunakan perintah-perintah dasar OpenGL untuk menggambar primiif objek

3. Peserta diklat mampu menulis kode program sesuai algoritma pembentukan garis dan lingkaran

1. Primitif Objek

Objek primitif merupakan bentuk geometri sederhana seperti titik (points), garis (lines) dan bangunan dua dimensi. Dalam grafika computer, representasi citra menggunakan primitive grafik dasar memudahkan untur dirender atau digambar pada layar monitor sebagaimana penggunaan persamaan geometri sederhana. Contoh objek primitif grafika dasar antara lain : titik, garis, kurva, fill area dan text. Objek kompleks dapat dibuat dengan menggunakan kombinasi dari objek primitif ini. Misalkan, Poligaris atau yang dapat didefinisikan sebagai urutan garis lurus yang saling terhubung. Secara umum algoritma grafis memiliki persamaan

A. Tujuan Pembelajaran

B. Indikator Pencapaian Kompetensi

36

tujuan yaitu bagaimana menampilkan hasil citra yang diinginkan berdasarkan koordinat yang telah ditentukan.

2. Titik dan Garis

Pembentukan titik dilakukan dengan mengkonversi posisi titik koordinat dengan program aplikasi ke dalam suatu operasi tertentu menggunakan output. Random-scan (vektor). Sistem menyimpan instruksi pembentukan titik pada display list dan nilai koordinat untuk menentukan posisi pancaran electron ke arah lapisan fosfor pada layer. Garis dibuat dengan menentukan posisi titik diantara titik awal dan akhir dari suatu garis. Untuk menggambar titik (point) digunakan perintah point(x,y) dimana nilai x dan y adalah koordinat dua dimensi pada layar.

3. Membuat Titik dan Garis

Untuk menggambar titik (point) digunakan perintah point(x,y) dimana nilai x dan y adalah koordinat pada layar. Sedangkan untuk membuat garis digunakan perintah lines(x1,y1,x2,y2).

Persamaan garis menurut koordinat Cartesian adalah:

y = m.x + b

dimana m adalah slope (kemiringan) dari garis yang dibentuk oleh dua titik yaitu (x1,y1) dan (x2, y2). Untuk penambahan x sepanjang garis yaitu dx akan mendapatkan penambahan y sebesar Δy = m. Δx

Algoritma DDA (Digital Differential Analyzer)

DDA adalah algoritma pembentukan garis berdasarkan perhitungan Δx dan Δy, menggunakan rumus y = m. Δ x. Garis dibuat dengan menentukan dua endpoint yaitu titik awal dan titik akhir. Setiap koordinat titik yang membentuk garis diperoleh dari perhitungan, kemudian dikonversikan menjadi nilai integer. Langkah-langkah pembentukan menurut algoritma DDA, yaitu :

1) Tentukan dua titik yang akan dihubungkan.

2) Tentukan salah satu titik sebagai titik awal (x0, y0) dan titik akhir (x1, y1). 3) Hitung Δx = x1 – x0 dan Δ y = y1 – y0.

4) Tentukan step, yaitu jarak maksimum jumlah penambahan nilai x maupun nilai y dengan cara :

37

bila tidak maka step = |Δx|.

5) Hitung penambahan koordinat pixel yaitu x_increment = Δx / step dan y_increment = Δy / step.

6) Koordinat selanjutnya (x+x_incerement, y+y_increment).

7) Posisi pixel pada layer ditentukan dengan pembulatan nilai koordinasi tersebut.

8) Ulangi step 6 dan 7 untuk menentukan posisi pixel selanjutnya, sampai x = x1 dan y = y1

Contoh:

Untuk menggambarkan algoritma DDA dalam pembentukan suatu garis yang menghubungkan titik (5,5) dan (10,9), pertama-tama ditentukan dx dan dy, kemudian dicari step untuk mendapatkan x_increment dan y_increment.

Δx = x1 – x 0 = 10-5 = 5 Δy = y1 – y0 = 9 -5 = 4

selanjutnya hitung dan bandingkan nilai absolutnya. |Δx| = 5

|Δy| = 4

karena |Δx| > |Δy|, maka step = |Δx| = 5, maka diperoleh : x_inc = 5/5 = 1

y_inc = 4/5 = 0.8

Tabel 2 Data algoritma DDA

K X Y Round(x), round(y) (5,5) 0 6 5.8 (6,6) 1 7 6.6 (7,7) 2 8 7.4 (8,7) 3 9 8.2 (9,8) 4 10 9 (10,9) 10 9 8 7

38

6 5

5 6 7 8 9 10

Algoritma Bressenham

Prosedur untuk menggambar kembali garis dengan membulatkan nilai x atau y ke bilangan integer membutuhkan waktu, serta variable x,y dan m merupakan bilangan real karena kemiringan merupakan nilai pecahan. Bressenham mengembangkan algoritma klasik yang lebih menarik, karena hanya menggunakan perhitungan matematika dengan bilangan integer. Dengan demikian tidak perlu membulatkan nilai posisi setiap pixel setiap waktu. Algoritma garis Bressenhem disebut juga midpoint line algorithm adalah algoritma konversi penambahan nilai integer yang juga dapat diadaptasi untuk menggambar sebuah lingkaran.

Langkah-langkah untuk membentuk garis menurut algoritma ini adalah: 1) Tentukan dua titik yang akan dihubungkan dalam pembentukan garis. 2) Tetukan salah satu titik disebelah kiri sebagai titik awal (x0, y0) dan titik

lainnya sebagai titik akhir (x1, y1 ). 3) Hitung Δx, Δy, Δ2x, dan 2Δy – 2Δx. 4) Hitung parameter p0 = 2Δy – Δx.

5) Untuk setiap xk sepanjang jalur garis, dimulai dengan k = 0

 bila pk <0 maka titik selanjutnya (xk+1, yk) dan pk+1 = pk +2Δy

 bila tidak maka titik selanjutnya adalah (xk+1, yk+1) dan pk+1=pk+2Δ-y2Δx. 6) Ulangi langkah nomor 5 untuk menentukan posisi pixel selanjutnya, sampai

x=xn.

Kegiatan Praktikum 3.1

 Membuat Titik Create_Point.java

39 public class Create_Point {

public void render() {

glClear(GL_COLOR_BUFFER_BIT); glLoadIdentity(); glColor3f(0.0f, 1.0f, 0.0f); glPointSize(10); glBegin(GL_POINTS); glVertex2f(100, 100); glVertex2f(200, 100); glVertex2f(200, 300); glVertex2f(100, 300); glVertex2f(150, 375); glVertex2f(375, 375); glVertex2f(425, 300); glVertex2f(425, 100); glEnd(); }

public static void main(String[] args) { Create_Point main = null;

try {

System.out.println("Keys:");

System.out.println("esc - Exit"); main = new Create_Point();

main.create(); main.run();

} catch (Exception ex) {

LOGGER.log(Level.SEVERE, ex.toString(), ex); } finally { if (main != null) { main.destroy(); } } }

private void create() throws LWJGLException {

Display.setDisplayMode(new DisplayMode(DISPLAY_WIDTH, DISPLAY_HEIGHT)); Display.setFullscreen(false); Display.setTitle("Create Point"); Display.create(); //Keyboard Keyboard.create(); //Mouse Mouse.setGrabbed(false); Mouse.create(); //OpenGL initGL();

resizeGL(); //To change body of generated methods, choose Tools | Templates.

}

private void run() {

while (!Display.isCloseRequested() && !Keyboard.isKeyDown(Keyboard.KEY_ESCAPE)) {

40 if (Display.isVisible()) { render(); } else { if (Display.isDirty()) { render(); } try { Thread.sleep(100);

} catch (InterruptedException ex) { } } Display.update(); Display.sync(60); } }

private void destroy() { Mouse.destroy(); Keyboard.destroy(); Display.destroy(); }

private void initGL() { //2D Initialization

glClearColor(0.0f, 0.0f, 0.0f, 0.0f); glDisable(GL_DEPTH_TEST);

glDisable(GL_LIGHTING); }

private void resizeGL() { //2D Scene

glViewport(0, 0, DISPLAY_WIDTH, DISPLAY_HEIGHT); glMatrixMode(GL_PROJECTION);

glLoadIdentity();

gluOrtho2D(0.0f, DISPLAY_WIDTH, 0.0f, DISPLAY_HEIGHT); glPushMatrix(); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glPushMatrix(); } } Keluaran Program

41

Kegiatan Praktikum 3.2

 Membuat Garis Create_Line.java

public class Create_Line { public void render() {

glColor3f(1.0f, 0.0f, 1.0f); glLineWidth(5); glBegin(GL_LINES); glVertex2f(100, 100); glVertex2f(100, 350); glVertex2f(200, 100); glVertex2f(300, 350); glVertex2f(350, 225); glVertex2f(550, 225); glEnd(); glFlush(); }

public static void main(String[] args) { Create_Line main = null;

try {

System.out.println("Keys:");

System.out.println("esc - Exit"); main = new Create_Line();

main.create(); main.run();

} catch (Exception ex) {

42 } finally { if (main != null) { main.destroy(); } } }

private void create() throws LWJGLException {

Display.setDisplayMode(new DisplayMode(DISPLAY_WIDTH, DISPLAY_HEIGHT));

}

private void run() { ....

}

private void destroy() { ....

}

private void initGL() { ....

}

private void resizeGL() { ....

} }

43 Buatlah kode program agar dapat menampilkan seperti sreenshoot di atas dengan menggunakan fungsi-fungsi primitive drawing dengan ketentuan sebagai berikut :

Ukuran Window :DisplayMode(800, 600) Fungsi :glBegin(GL_LINE_LOOP); Titik awal :glVertex2d(200, 200);

Objek primitif merupakan bentuk geometri sederhana seperti titik (points), garis (lines) dan bangunan dua dimensi. Dalam grafika computer, representasi citra menggunakan primitive grafik dasar memudahkan untur dirender atau digambar pada layar monitor sebagaimana penggunaan persamaan geometri sederhana. Contoh objek primitif grafika dasar antara lain : titik, garis, kurva, fill area dan text. Objek kompleks dapat dibuat dengan menggunakan kombinasi dari objek primitif ini. Pembentukan titik dilakukan dengan mengkonversi suatu posisi titik koordinat dengan program aplikasi ke dalam suatu operasi tertentu menggunakan output. Garis dibuat dengan menentukan posisi titik diantara titik awal dan akhir dari suatu garis. Untuk menggambar titik (point) digunakan perintah point(x,y) dimana nilai x dan y adalah koordinat pada layar.

E. Latihan Soal

44

Untuk menggambar titik (point) digunakan perintah point(x,y) dimana nilai x dan y adalah koordinat pada layar. Sedangkan untuk membuat garis digunakan perintah lines(x1,y1,x2,y2).

Terdapat dua algoritma pembentukan titik dan garis yaitu Algoritma DDA (Digital Differential Analyzer) dan Algoritma Bressenham

IPK Hasil Yang Dicapai Rencana Tindak Lanjut Peserta diklat mampu Peserta

diklat mampu menerapkan konsep konsep dasar grafika computer untuk menggambar primitif objek dan berapa proses pencapaian kompetensinya

Peserta diklat mampu menggunakan perintah-perintah dasar OpenGL untuk menggambar satu bentuk gabungan dari beberapa primiif objek dan berapa besar proses pencapaian kompetensinya Peserta diklat mampu menulis kode program sesuai algoritma pembentukan garis dan lingkaran dan berapa besar proses pencapaian kompetensinya PrimitiveGaris.java import java.util.logging.Level;

H. Kunci Jawaban

G. Umpan Balik

45 import java.util.logging.Logger;

import static komgraf01.KomGraf01.DISPLAY_HEIGHT; import static komgraf01.KomGraf01.DISPLAY_WIDTH; import org.lwjgl.LWJGLException;

import org.lwjgl.input.Keyboard; import org.lwjgl.input.Mouse; import org.lwjgl.opengl.Display; import org.lwjgl.opengl.DisplayMode; import static org.lwjgl.opengl.GL11.*;

import static org.lwjgl.util.glu.GLU.gluOrtho2D;

public class PrimitiveGaris {

public void draw() {

glBegin(GL_LINE_LOOP); glVertex2d(200, 200); glVertex2d(600, 200); glVertex2d(200, 325); glVertex2d(600, 325); glVertex2d(200, 450); glVertex2d(600, 450); glEnd(); }

public void render() {

glClear(GL_COLOR_BUFFER_BIT); glLoadIdentity(); glColor3d(1, 0, 0); draw(); glFlush(); }

public void create() throws LWJGLException {

Display.setDisplayMode(new DisplayMode(800, 600)); Display.setFullscreen(false);

Display.setTitle("GAMBAR Primitives-Geometric : GARIS"); Display.create();

46 //OpenGL initGL(); resizeGL(); } void initGL() { glClearColor(0.0f, 1.0f, 1.0f, 1.0f); glDisable(GL_DEPTH_TEST); glDisable(GL_LIGHTING); }

public void resizeGL() { //2D Scene

glViewport(0, 0, DISPLAY_WIDTH, DISPLAY_HEIGHT);

glMatrixMode(GL_PROJECTION); glLoadIdentity();

gluOrtho2D(0.0f, DISPLAY_WIDTH, 0.0f, DISPLAY_HEIGHT); glPushMatrix();

glMatrixMode(GL_MODELVIEW); glLoadIdentity();

glPushMatrix();

}

public void run() {

while (!Display.isCloseRequested() &&

!Keyboard.isKeyDown(Keyboard.KEY_ESCAPE)) { if (Display.isVisible()) { update(); render(); } else { if (Display.isDirty()) { render(); } try { Thread.sleep(100);

47 } } Display.update(); Display.sync(60); } }

private void update() { //

}

public void destroy() { Mouse.destroy(); Keyboard.destroy(); Display.destroy(); }

public static void main(String[] args) { PrimitiveGaris b1 = new PrimitiveGaris(); try {

b1.create(); b1.run();

} catch (LWJGLException ex) {

Logger.getLogger(PrimitiveGaris.class.getName()).log(Level .SEVERE, null, ex);

51

Pemodelan Objek 2 Dimensi

Setelah mengikuti kegiatan belajar 4 ini peserta diklat diharapkan dapat :

1. Melalui diskusi peserta diklat dapat menganalisa pemodelan objek 2 Dimensi melalui transformasi geometri.

2. Melalui praktikum peserta diklat dapat membuat kode program dengan menggunakan operasi transformasi geomentri translasi, penskalaan,dan rotasi.

1. Peserta diklat mampu menerapkan operasi transformasi geometri translasi, penskalaan, dan rotasi

2. Peserta diklat mampu menerapkan operasi-operasi dasar OpenGL untuk membangun objek 2 dimensi

3. Peserta diklat mampu menulis kode program untuk memodelkan objek 2 dimensi melalui proses translasi, penskalaan, dan rotasi

Grafika komputer merupakan bidang yang menarik minat banyak orang. Salah satu sub bagian dari grafika komputer adalah pemodelan objek (object modelling). Dalam pemodelan objek dua dimensi (2D), berbagai objek dapat dimodelkan menurut kondisi tertentu. Objek yang dimodelkan itu perlu dimodifikasi. Pemodifikasian objek ini dapat dilakukan dengan melakukan berbagai operasi fungsi atau operasi transformasi geometri. Transformasi yang dibuat dapat berupa transformasi dasar ataupun gabungan dari berbagai transformasi geometri. Contoh transformasi geometri adalah translasi, penskalaan, putaran (rotasi), potongan dan gabungan. Transformasi ini dikenal

A. Tujuan Pembelajaran

B. Indikator Pencapaian Kompetensi

52

dengan istilah transformasi affine. Pada dasarnya proses transformasi ini adalah proses memindahkan objek tanpa merusak bentuk dari objek itu sendiri. 1. Definisi Objek Grafik 2 Dimensi

Pada sub topik ini peserta akan mempelajari objek grafik 2 dimensi dan penerapannya dalam aplikasi sederhana.

 Titik 2D

Titik 2D mempunyai 2 nilai, yaitu x dan y yang menyatakan jarak horizontal dan vertikal dari titik pusat sumbu koordinat (0,0).

 Polyline

Polyline adalah suatu fungsi yang digunakan untuk menggambarkan objek 2D dimana setiap titik pada objek mulai titik ke 0, 1, 2,3,..., n dihubungkan

Dalam dokumen MODUL PROGRAM KEAHLIAN GANDA (Halaman 27-163)

Dokumen terkait