Algoritma Bresenham pembentuk Garis

Assalamualaikum sobat blogger. Ketemu lagi neh, setelah udah 4 hari ga berbagi informasi...
Kali ini aku mau posting tugas kuliahku,, yaa siapa tau aja bisa berguna buat adek-adek kelasku nanti yang ngambil pemrograman komputer grafis. Oke deh, langsung aja disimak Algoritma Bresenham pembentuk Garis.

Disini aku menggunakan netbean IDE 7.3.1 plus plugin openGL
Yang belum punya netbean atau udah punya netbean tapi ga punya pluginnya silahkan klik link dibawah ini
Untuk yang netbean klik disini netbean IDE 7.3.1
Untuk pluginnya klik disini Netbean OpenGL Pack

1. Oke langsung aja, jika kalian sudah punya netbean + pluginnya langsung dibuka aja. Kalo yang belum tau cara nginstal plugin openGL klik disini Cara Menginstal Plugin OpenGL di Netbean 7.3.1


2. Kalian buka File New project dan pilih JOGL Application




Kemudian kalian copy semua kode dibawah ini dan pastekan dinetbean kalian
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;

/**

 * Bressenham.java <BR>
 * author: Brian Paul (converted to Java by Ron Cemer and Sven Goethel) <P>
 *
 * This version is equal to Brian Paul's version 1.2 1999/10/21
 */

public class SimpleJOGLl implements GLEventListener {

    public static void main(String[] args) {
        Frame frame = new Frame("Bressenham");
        GLCanvas canvas = new GLCanvas();

        canvas.addGLEventListener(new SimpleJOGLl());
        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, 0.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(0, 0, width, height);
        gl.glMatrixMode(GL.GL_PROJECTION);
        gl.glLoadIdentity();
        glu.gluPerspective(11000.0f, h, 1.0, 20.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();

        // Menggambar Garis Putus Putus Bawah
        gl.glTranslatef(-1.5f, 0.0f, -6.0f);
        gl.glPointSize(4.0f);
        int p1x=0;
        int p1y=20;
        int p2x=45;
        int p2y=15;
         int dx=Math.abs(p2x-p1x);
  int dy=Math.abs(p2y-p1y);



  int pk=2*dy-dx;
  int k;
  for (int x=0;x<10;x++){  //function sendiri

    
  for (k=40;k<p2x;k++){
   if (pk<=0){
    pk=pk+6*dy;
    p1x-=1; 

   }else {
    pk=pk+(2*dy)-(2*dx);
    p1x-=1;
    p1y-=1;

     gl.glBegin(GL.GL_POINTS);
        gl.glFlush();
   }
  }
   p1x-=10;
  } // Menggambar Garis Putus Miring Kanan
        int p3x=5;
        int p3y=5;
        int p4x=10;
        int p4y=10;
         int dx2=Math.abs(p4x-p3x);
  int dy2=Math.abs(p4y-p3y);       
  int pk2=2*dy2-dx2;
  int k2;




  gl.glBegin(GL.GL_POINTS);
            gl.glColor3f(1.0f, 1.0f, 1.0f);   
            gl.glVertex2f(p3x+2, p3y+2);
            gl.glColor3f(1.0f, 10f, 1.0f);   
            gl.glVertex2f(p3x+2-10, p3y+2-10);
  for (k2=p3x;k2<p4x;k2++){
   if (pk2<=0){
    pk2=pk2+2*dy2;
    p3x-=1; 


   }else {

    pk2=pk2+(2*dy2)-(2*dx2);
    p3x-=1;
    p3y-=1;

   
     gl.glBegin(GL.GL_POINTS);
            gl.glColor3f(1.0f, 1.0f, 1.0f);   
            gl.glVertex2f(p3x, p3y);
            gl.glColor3f(1.0f, 1.0f, 1.0f);   
            gl.glVertex2f(p3x-10, p3y-10);

           

           


            gl.glEnd();
        gl.glFlush();
   }
  } 

        int p5x=-10;//menggambar garis putus putus miring ke kiri
        int p5y=-10;
        int p6x=-3;
        int p6y=-17;
         int dx3=Math.abs(p6x-p5x);
  int dy3=Math.abs(p6y-p5y);       
  int pk3=2*dy3-dx3;
  int k3;
  gl.glBegin(GL.GL_POINTS);
            gl.glColor3f(1.0f, 1.0f, 1.0f);   
            gl.glVertex2f(p5x, p5y);
            gl.glColor3f(1.0f, 1.0f, 1.0f);   
            gl.glVertex2f(p6x, p6y);
            gl.glColor3f(1.0f, 1.0f, 1.0f);   
            gl.glVertex2f(p6x+9, p6y-9);

  for (k3=-7;k3<p6x;k3++){
   if (pk3<=0){
    pk3=pk3+2*dy3;
    p5x+=1; 

     gl.glBegin(GL.GL_POINTS);
            gl.glColor3f(1.0f, 1.0f, 1.0f);   
            gl.glVertex2f(p3x, p3y);

             gl.glEnd();

        gl.glFlush();

   }else {
    pk3=pk3+(2*dy3)-(2*dx3);
    p5x+=1;
    p5y-=1;
     gl.glBegin(GL.GL_POINTS);
            gl.glColor3f(1.0f, 1.0f, 1.0f);   
            gl.glVertex2f(p5x, p5y);
            gl.glColor3f(1.0f, 1.0f, 1.0f);   
            gl.glVertex2f(p5x+9, p5y-9);

            gl.glEnd();

        gl.glFlush();

   }

  }}

    public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged) {

        throw new UnsupportedOperationException("Not supported yet.");
    }
}

3. Kalian Run Program kalian.

4. Begini penampakannya






Bagi yang ga mau repot-repot..
Silahkan kalian download project buatanku ===========> disini
Kemudian, buka project tsb dengan cara..
File Open Project, dan browse dimana project yang telah anda download


Demikian artikelku tentang Algoritma Bresenham pembentuk Garis. Semoga bermanfaat unutk kalian semua. Salam Quincy ^^
Previous
Next Post »

Tata Cara Berkomentar yang Baik dan Benar :

1. Gunakan Bahasa yang Sopan.
2. Biasakanlah berkomentar sebelum meninggalkan.
3. Usahakan jangan menggunakan anonymous
4. Saya sangat berterima kasih atas komentar yang kalian berikan
5. Admin selalu berusaha melakukan yang terbaik untuk para pengunjung ConversionConversion EmoticonEmoticon

Thanks for your comment