Transformasi Proyeksi Uraian Materi
108
Kegiatan Praktikum 7.1
Keluaran Program
Perancangan class diagram
Block.java
import java.util.Random; import static org.lwjgl.opengl.GL11.;
import static org.lwjgl.util.glu.GLU.; import java.io.IOException;
import java.util.logging.FileHandler; import java.util.logging.Level;
import java.util.logging.Logger; import org.lwjgl.LWJGLException;
import org.lwjgl.input.Keyboard;
109
import org.lwjgl.input.Mouse; import org.lwjgl.opengl.Display;
import org.lwjgl.opengl.DisplayMode; public class Block {
public float x, y, z, width, height, depth, shade; public Random rand;
public Blockfloat xx, float yy, float zz, float ww, float hh, float dd {
x = xx; y = yy;
z = zz; width = ww;
height = hh; depth = dd;
rand = new Random; shade = rand.nextFloat + 0.2f;
} public void tick {
} public void render {
glBeginGL_QUADS; glColor3f0, shade, 1;
Front glTexCoord2f0, 0;
glVertex3fx, y, z; glTexCoord2f1, 0;
glVertex3fx + width, y, z; glTexCoord2f1, 1;
glVertex3fx + width, y + height, z; glTexCoord2f0, 1;
glVertex3fx, y + height, z; Back
glVertex3fx, y, z + depth; glVertex3fx + width, y, z + depth;
glVertex3fx + width, y + height, z + depth; glVertex3fx, y + height, z + depth;
Left glVertex3fx, y, z;
glVertex3fx, y, z + depth; glVertex3fx, y + height, z + depth;
glVertex3fx, y + height, z; Right
glVertex3fx + width, y, z; glVertex3fx + width, y, z + depth;
glVertex3fx + width, y + height, z + depth; glVertex3fx + width, y + height, z;
Top glVertex3fx, y, z;
glVertex3fx + width, y, z; glVertex3fx + width, y, z + depth;
glVertex3fx, y, z + depth; Bottom
glVertex3fx, y + height, z;
110
glVertex3fx + width, y + height, z; glVertex3fx + width, y + height, z + depth;
glVertex3fx, y + height, z + depth; glEnd;
} }
UjiCamera.java
import java.util.Random; import static org.lwjgl.opengl.GL11.;
import static org.lwjgl.util.glu.GLU.; import java.io.IOException;
import java.util.ArrayList; import java.util.logging.FileHandler;
import java.util.logging.Level; import java.util.logging.Logger;
import org.lwjgl.LWJGLException; import org.lwjgl.Sys;
import org.lwjgl.input.Keyboard; import org.lwjgl.input.Mouse;
import org.lwjgl.opengl.Display; import org.lwjgl.opengl.DisplayMode;
public class UjiCamera { public static float camera_x, camera_y, camera_z, camera_rot;
public static ArrayListBlock blocks = new ArrayListBlock;
public UjiCamera { try {
Display.setDisplayModenew DisplayMode800, 600; Display.setTitleTransformai Proyeksi dengan
Kamera; Display.create;
} catch LWJGLException e { e.printStackTrace;
} glMatrixModeGL_PROJECTION;
glLoadIdentity; gluPerspectivefloat 45, 800f 600f, 0.1f, 1000.0f;
glMatrixModeGL_MODELVIEW; glLoadIdentity;
glShadeModelGL_SMOOTH; glEnableGL_DEPTH_TEST;
glEnableGL_TEXTURE_2D;
glDepthFuncGL_LEQUAL; glHintGL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST;
generateWorld; glTranslatef0, 15, 0;
float dt, time, lastTime = 0; Mouse.setGrabbedtrue;
while Display.isCloseRequested Keyboard.isKeyDownKeyboard.KEY_ESCAPE {
time = Sys.getTime; dt = time - lastTime 1000.0f;