selamat pagi pemirsa....
jumpa lagi nih...
sebenarnya yang saya share ini merupakan tugas saya di mata kuliah Pemrograman Komputer Grafis tentang membuat garis dengan algoritma DDA yang membuat saya dan teman teman pusing 20 keliling,hehehe
tugas ini saya buat dengan java netbeans dengan plugin JOGL.Udah ngerti belum JOGL ? kalau belum coba baca postingan saya sebelumnya tentang JOGL Di Sini
oke deh langsung aja saya tulis kodingnya ya....yang sabar kalau mau nyontek soalnya kodingnya lumayan panjang dan saya pakai algoritma DDA.Berikut kodenya :
package org.yourorghere;
import com.sun.opengl.util.Animator;
import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.media.opengl.GL;
import javax.media.opengl.GLAutoDrawable;
import javax.media.opengl.GLCanvas;
import javax.media.opengl.GLEventListener;
import javax.media.opengl.glu.GLU;
/**
* PKG.java <BR>
* author:Nur Hidayatullah
*
*
*/
public class DDA implements GLEventListener {
int steps;
int x0=1;
int x1=15;
int y0=1;
int y1=15;
int x_tambah;int y_tambah;
int x,y;
public static void main(String[] args) {
Frame frame = new Frame("DDA");
GLCanvas canvas = new GLCanvas();
canvas.addGLEventListener(new DDA());
frame.add(canvas);
frame.setSize(640, 480);
final Animator animator = new Animator(canvas);
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
// Run this on another thread than the AWT event queue to
// make sure the call to Animator.stop() completes before
// exiting
new Thread(new Runnable() {
public void run() {
animator.stop();
System.exit(0);
}
}).start();
}
});
// Center frame
frame.setLocationRelativeTo(null);
frame.setVisible(true);
animator.start();
}
public void init(GLAutoDrawable drawable) {
// Use debug pipeline
// drawable.setGL(new DebugGL(drawable.getGL()));
GL gl = drawable.getGL();
System.err.println("INIT GL IS: " + gl.getClass().getName());
// Enable VSync
gl.setSwapInterval(1);
// Setup the drawing area and shading mode
gl.glClearColor(0.0f, 0.0f, 0.0f, 8.0f);
gl.glShadeModel(GL.GL_SMOOTH); // try setting this to GL_FLAT and see what happens.
}
public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) {
GL gl = drawable.getGL();
GLU glu = new GLU();
if (height <= 0) { // avoid a divide by zero error!
height = 1;
}
final float h = (float) width / (float) height;
gl.glViewport(10, 10, width, height);
gl.glMatrixMode(GL.GL_PROJECTION);
gl.glLoadIdentity();
glu.gluPerspective(11000.0f, h, 1.0, 100.0);
gl.glMatrixMode(GL.GL_MODELVIEW);
gl.glLoadIdentity();
}
public void display(GLAutoDrawable drawable) {
GL gl = drawable.getGL();
// Clear the drawing area
gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);
// Reset the current matrix to the "identity"
gl.glLoadIdentity();
// Move the "drawing cursor" around
gl.glTranslatef(-1.5f, 0.0f, -6.0f);
gl.glPointSize(12.0f);
DDA p=new DDA();
int dx= x1-x0;
int dy= y1-y0;
if (Math.abs(dx) > Math.abs(dy)){
steps = Math.abs(dx);
}
else{
steps = Math.abs(dy);
}
x_tambah = dx / steps;
y_tambah = dy / steps;
x=x0;
y=y0;
gl.glBegin(GL.GL_POINTS);
gl.glColor3f(0.0f, 0.0f, 1.0f);
gl.glVertex2f(x0,y0);
gl.glColor3f(0.0f, 0.0f, 1.0f);
gl.glVertex2f(x1,y1);
for (int k=2; k<= steps ;k++){
x += x_tambah;
y += y_tambah;
gl.glBegin(GL.GL_POINTS);
gl.glColor3f(0.0f, 0.0f, 1.0f);
gl.glVertex2f(x,y);
gl.glColor3f(0.0f, 0.0f, 1.0f);
gl.glVertex2f(x0,y0+y);
gl.glColor3f(0.0f, 0.0f, 1.0f);
gl.glVertex2f(x0-x,y1-y);
gl.glColor3f(0.0f, 0.0f, 1.0f);
gl.glVertex2f(x1+1,y1+5);
gl.glColor3f(0.0f, 0.0f, 1.0f);
gl.glVertex2f(x1-x,y1+5);
gl.glColor3f(0.0f, 0.0f, 1.0f);
gl.glVertex2f(x0-3,y1+5);
gl.glColor3f(0.0f, 0.0f, 1.0f);
gl.glVertex2f(x0-4-x,y1+5);
gl.glEnd();
gl.glFlush();
}
}
public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged) {
}
}
Gimana ? pusing gak bacanya ?hehehe
kalau di running jadinya seperti ini
Kalau mau nyoba merubah source kodenya bisa di download Di Sini
sekian dulu ya....kalau ada uneg uneg bisa koment di bawah artikel ini.Terima Kasih
blogmu gak beres iki pak,, file gak iso didownload..
ReplyDeletemodem entek pulsane iku bos...iso ae nek ngeles
ReplyDelete