Latihan Tugas Rangkuman Tujuan Pembelajaran Indikator Pencapaian Kompetensi Aktivitas Pembelajaran

65 Display.setFullscreenfalse; Display.setTitleTugas 2 Dimensi; Display.create; OpenGL initGL; resizeGL; } void initGL { glClearColor0.0f, 1.0f, 1.0f, 1.0f; glDisableGL_DEPTH_TEST; glDisableGL_LIGHTING; } public void resizeGL { glViewport0, 0, DISPLAY_WIDTH, DISPLAY_HEIGHT; glMatrixModeGL_PROJECTION; glLoadIdentity; gluOrtho2D0.0f, DISPLAY_WIDTH, 0.0f, DISPLAY_HEIGHT; glPushMatrix; glMatrixModeGL_MODELVIEW; glLoadIdentity; glPushMatrix; } public void run { while Display.isCloseRequested Keyboard.isKeyDownKeyboard.KEY_ESCAPE { if Display.isVisible { update; render; } else { if Display.isDirty { render; } try { Thread.sleep100; } catch InterruptedException ex { } } 66 Display.update; Display.sync60; } } private void update { } public void destroy { Mouse.destroy; Keyboard.destroy; Display.destroy; } public static void mainString[] args { Tugas2D b1 = new Tugas2D; try { b1.create; b1.run; } catch LWJGLException ex { Logger.getLoggerTugas2D.class.getName.logLevel.SEVERE, null, ex; } } } 67 68 69 PEMODELAN OBJEK 3 DIMENSI Pembuatan Objek 3 Dimensi Setelah mengikuti kegiatan belajar 5 ini peserta diklat diharapkan dapat : 1. Melalui diskusi peserta diklat dapat menganalisis sistem koordinat 3 dimensi dan pembuatan objek 3 dimensi 2. Melalui praktikum peserta diklat dapat membuat kode program untuk melakukakan operasi transformasi pada objek 3 dimensi. 1. Memahami sistem koordinat dan struktur objek 3 dimensi 2. Menulis kode program untuk memodelkan objek 3 dimensi melalui proses translasi, penskalaan, dan rotasi. Pembeda objek 2 dimensi dan 3 dimensi adalah kedalaman. Kedalaman didefinisikan sebagai jarak antara viewer terhadap benda yang dia lihat. Ini berarti berbeda dengan 2 dimensi yang hanya menggunakan 2 ukuran, yaitu panjang dan lebar, maka 3 dimensi menggunakan 3 ukuran, yaitu panjang, lebar dan kedalaman. Secara geometri ketiga ukuran tersebut disimbolkan dengan sumbu x, y, dan z.

1. Sistem Koordinat

Salah satu sistem koordinat yang dikenal adalah sistem koordinat kartesian yang digunakan untuk membedakan lokasi atau posisi sembarang titik atau objek dengan titik atau objek yang lain. Sistem koordinat kartesian terdiri atas sistem koordinat kartesian 2 dimensi dan sistem koordinat kartesian 3 dimensi.Dalam sistem koordinat 3 dimensi terdapat satu sumbu lain selain sumbu x dan sumbu y, yaitu sumbu z yang arahnya tegak lurus terhadap sumbu x dan sumbu y. Hadirnya sumbu z

A. Tujuan Pembelajaran

B. Indikator Pencapaian Kompetensi

C. Uraian Materi

70 menyebabkan sistem koordinat ini menjadi lebih hidup karena efek jauh dekat. Untuk lebih jelasnya, lihat pada gambar di bawah ini : Gambar 6 Koordinat

2. Pemodelan Objek 3 Dimensi

Benda tiga dimensi disusun dari sekumpulan surface. Gambar di bawah memberikan contoh bagaimana surface digunakan untuk menyusun benda tiga dimensi. Gambar 7 Surface Surface dapat dibuat dari rangkaian Polygon. Polygon adalah bentuk yang disusun dari serangkaian garis yang terhubung satu dengan yang lain dan berbentuk kurva tertutup sehingga membentuk sebuah objek gambar. Titik sudut dari Polygon disebut vertex sedangkan garis penyusun Polygon disebut edge. Gambar 8 Vertex dan Edge 71 Polygon digambar dengan menggambar masing-masing edge dengan setiap edge merupakan pasangan dari vertex – vertex kecuali untuk edge terakhir merupakan pasangan dari vertex – vertex . Bentuk polygon yang paling tepat digunakan untuk membuat permukaan benda tiga dimensii adalah polygon segitiga triangle. Hal ini disebabkan polygon segitiga akan selalu berada dalam keadaan planar datar sementara polygon dengan vertex lebih dari 3 dapat berada dalam kondisi non-planar karena salah satu vertex tidak berada di lokasi yang sejajar. Satu hal yang harus diperhatikan pada saat menggunakan polygon segitiga adalah winding. Winding adalah urutan dan arah vertex-vertex penyusun polygon. Winding menganggap bahwa arah vertex berlawanan jarum jam sebagai tampak depan sedangkan arah vertex searah jarum jam dianggap sebagai bagian belakang benda. Pembuatan kode program untuk pembuatan objek 3 dimensi dirancang dengan melibatkan beberapa file java untuk memudahkan dalam pengaturan dan operasi transformasi geometri. Beberapa file pendukung akan disertakan dalam lampiran. Kegiatan Praktikum 5.1 Keluaran Program

D. Aktivitas Pembelajaran

72 Perancangan class diagram 73 CfgApplication.java import static org.lwjgl.opengl.GL11.; import static org.lwjgl.util.glu.GLU.; import java.awt.Font; import org.lwjgl.LWJGLException; import org.lwjgl.Sys; import org.lwjgl.input.Keyboard; import org.lwjgl.opengl.Display; import org.lwjgl.opengl.DisplayMode; public abstract class CfgApplication { protected long lastFrame; protected int fps; protected long last; protected String windowTitle = ; protected int width; protected int height; protected boolean fullscreen; protected boolean vsync; public final int DEFAULT_FONT_SIZE = 14; protected boolean showFPS; protected int oldfps; protected int activeFontTextureId; public void startint width, int height, boolean fullscreen, boolean vsync, boolean showFPS, String windowTitle { this.windowTitle = windowTitle; this.height = height; this.width = width; this.fullscreen = fullscreen; this.vsync = vsync; this.showFPS = showFPS; try { 74 createWindow; init; while Display.isCloseRequested Keyboard.isKeyDownKeyboard.KEY_ESCAPE { render; Display.update; } deinit; Display.destroy; } catch Exception e { e.printStackTrace; System.exit0; } } public abstract void render; public abstract void deinit; private void createWindow throws LWJGLException { Display.setTitlewindowTitle; Display.setFullscreenfullscreen; Display.setVSyncEnabledvsync; DisplayMode displayMode = null; DisplayMode d[] = Display.getAvailableDisplayModes; for int i = 0; i d.length; i++ { if d[i].getWidth == width d[i].getHeight == height d[i].getBitsPerPixel == 32 { displayMode = d[i]; break; } } Display.setDisplayModedisplayMode; Display.create; } private void setOrthoMode { glViewport0, 0, width, height; glMatrixModeGL_PROJECTION; glPushMatrix; glLoadIdentity; gluOrtho2D0, width, height, 0; glMatrixModeGL_MODELVIEW; glPushMatrix; glLoadIdentity; } private void unsetOrthoMode { glPopMatrix; glMatrixModeGL_PROJECTION; glPopMatrix; glMatrixModeGL_MODELVIEW; } public abstract void init; } PrimitiveDrawing3D.java import static org.lwjgl.opengl.GL11.; import static org.lwjgl.util.glu.GLU.; import org.lwjgl.input.Keyboard; 75 import setting.CGApplication; public class PrimitiveDrawing3D extends CGApplication { private boolean wireframe = false; private boolean pressed = false; Override public void init { } Override public void updateint delta { toggleWireframe; } public void toggleWireframe { if Keyboard.isKeyDownKeyboard.KEY_R { if pressed { wireframe = wireframe; pressed = true; } } else { pressed = false; } } Override public void render { glViewport0, 0, width, height; glMatrixModeGL_PROJECTION; glLoadIdentity; gluPerspective45.0f, width height, 1.0f, 100.0f; glClearGL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT; glClearColor0.0f, 0.0f, 0.0f, 0.0f; if wireframe { glPolygonModeGL_FRONT_AND_BACK, GL_LINE; } else { glPolygonModeGL_FRONT_AND_BACK, GL_FILL; } glBeginGL_TRIANGLES; 4-side of pyramid glColor3f0.0f, 1.0f, 0.0f; glVertex3f-2, -2, -10; glVertex3f2, -2, -10; glVertex3f0, 4, -12; glColor3f0.0f, 1.0f, 1.0f; glVertex3f2, -2, -10; glVertex3f2, -2, -14; glVertex3f0, 4, -12; glColor3f1.0f, 1.0f, 0.0f; glVertex3f2, -2, -14; glVertex3f-2, -2, -14; glVertex3f0, 4, -12; glColor3f0.0f, 0.0f, 1.0f; 76 glVertex3f-2, -2, -10; glVertex3f-2, -2, -14; glVertex3f0, 4, -12; Bottom of pyramid glColor3f1.0f, 0.0f, 0.0f; glVertex3f-2, -2, -10; glVertex3f2, -2, -10; glVertex3f-2, -2, -14; glColor3f1.0f, 0.0f, 0.5f; glVertex3f2, -2, -10; glVertex3f2, -2, -14; glVertex3f-2, -2, -14; glEnd; renderText; } private void renderText { drawString180, height - 25 , Primitive Drawing : 4-Sisi Piramid Triangles.; drawString200,height-35 getDefaultFont.getLineHeight, Tekann R untuk Gambar Rangka; } Override public void deinit { } public static void mainString[] args { PrimitiveDrawing3D app = new PrimitiveDrawing3D; app.start800, 600, false, false, true, 3D Primitives; } } 1. Untuk menggambarkan translasi suatu objek berupa segitiga dengan koordinat A3,4 B2,1 dan C4,1 dengan tx,ty2,5, tentukan koordinat yang barunya ?

E. Latihan Tugas

77 2. Untuk menggambarkan skala suatu objek berupa segempat dengan koordinat A5,2 B2,2 C2,4 dan D5,4 dengan skala faktor 1,2 tentukan koordinat yang barunya ? Pembeda objek 2 dimensi dan 3 dimensi adalah kedalaman. Kedalaman didefinisikan sebagai jarak antara viewer terhadap benda yang dia lihat. Ini berarti berbeda dengan 2 dimensi yang hanya menggunakan 2 ukuran, yaitu panjang dan lebar, maka 3 dimensi menggunakan 3 ukuran, yaitu panjang, lebar dan kedalaman. Secara geometri ketiga ukuran tersebut disimbolkan dengan sumbu x, y, dan z. Sebuah benda tiga dimensi dapat disusun dengan menghubungkan sejumlah vertex. Kumpulan vertex yang saling terhubung tersebut disebut sebagai wireframe atau kerangka, sedangkan benda yang disusun dari kumpulan titik dan permukaan tersebut disebut sebagai mesh. Transformasi pada dunia 3 dimensi, pada dasarnya sama dengan transformasi pada 2 dimensi, hanya pada 3 dimensi kita juga memperhitungkan sumbu

F. Rangkuman

78 Z. Sama seperti pada 2 dimensi, ada tiga transformasi dasar yang dapat dilakukan yaitu translasi, penskalaan, rotasi. Perbedaannya adalah pada objek 3 dimensi proses transformasinya dilakukan dengan mempertimbangkan koordinat yang merupakan besarnya kedalaman dari objek. Jawaban no 1 A = 3,4 B = 2,1 C = 2,5 Vektor V = 2,5 Rumus : x’ = x + tx ta y’ = y + ty A = 3,4 V = 2,5 X’ = x + tx = 3 + 2 = 5 Y’ = y + ty = 4 + 5 = 9 A’ = 5,9 B = 2,1 V = 2,5 X’ = x + tx = 2 + 2 = 4 Y’ = y + ty = 1 + 5 = 6 B’ = 4,6 C = 4,1 V = 2,5 X’ = x + tx = 4 + 2 = 6 Y’ = y + ty = 1 + 5 = 6 C’ = 6,6 Dengan demikian hasil translasi segitiga dengan koordinat A’5,9 B’4,6 C’6,6. Segitiga yang baru sama bentuknya dengan segitiga yang lama. Berikut gambar translasi setelah perhitungan

G. Kunci Jawaban

79 Jawaban no 2 A = 5,2 B = 2,2 C = 2,4 D = 5,4 Skala faktor = 1,2 Rumus: x’ = x . sx y’ = y . sy A = 5,2 Skala faktor = 1,2 X’ = X . Sx = 5 . 1 = 5 Y’ = Y. Sy = 2 . 2 = 4 A’ = 5,4 C = 2,4 Skala faktor = 1,2 X’ = X . Sx = 2 . 1 = 2 Y’ = Y. Sy = 4 . 2 = 8 C’ = 2,8 B = 2,2 Skala faktor = 1,2 X’ = X . Sx = 2 . 1 = 2 Y’ = Y. Sy = 2 . 2 = 4 B’ = 2,4 D = 5,4 Skala faktor = 1,2 X’ = X . Sx = 5 . 1 = 5 Y’ = Y. Sy = 4 . 2 = 8 D’ = 5,8 Dengan demikian hasil skala persegi panjang dengan koordinat A’ = 5,4, B’ = 2,4, C = 2,8, D = 5,8. Persegi panjang yang baru sama bentuknya dengan persegi panjang yang lama.Berikut gamabar koordinat setelah proses rotasi.