Minggu, 30 Oktober 2016

Algoritma Bresenham

Apa itu Algoritma Bresenham ?

       Algoritma garis Bresenhem adalah algoritma konversi penambahan nilai integer.Langkah-langkah untuk membentuk garis menurut algoritma ini adalah :

1. Tentukan Titik Awal dan Akhir ;
    Titik Awal  (x1 , y1)
    Titik Akhir (x2 , y2)

2. Nilai Pengubahan posisi (P)
    P Awal = (2 * Dy) - Dx
    a. Kondisi 1 : Jika P< 0, Maka x = x + 1,Y tetap P selanjutnya adalah P = P + (2 * Dy)
    b. Kondisi 2 : Jika  P> 0 Maka x = x + 1,Y = Y + 1 P selanjutnya adalah P = P + 2* (Dy - Dx)
Contoh Codingan :

Main.java
package dda;

import java.awt.*;
import javax.swing.*;
/**
 *
 * @author AGUSBUDIM
 */
public class Main {
    
    /**
     * @param args the command line arguments
     */
    
    public Main() {
    }
    
    public static void main(String[] args) {
        // TODO code application logic here
                     
        JFrame frame = new JFrame("algoritma garis dda");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        garis grs = new garis();
        grs.setx1(200);
        grs.sety1(250);
        grs.setx2(10);
        grs.sety2(10);
        grs.setBackground(Color.WHITE);
        frame.add(grs);
        frame.setSize(600,480);
        frame.setVisible(true);
    }
}

garis.java
package dda;
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JPanel;

/**
 *
 * @author CHHANNZ
 */
public class garis extends JPanel {
    private int x1;
    private int y1;
    private int x2;
    private int y2;
    
   
    
    public int getx1() {
        return x1;
    }
    
    public int getx2() {
        return x2;
    }
    
    public int gety1() {
        return y1;
    }
    
    public int gety2() {
        return y2;
    }
    
    public void setx1(int xa) {
        x1 = xa;
    }
    
    public void setx2(int xb) {
        x2 = xb;
    }
    
    public void sety1(int ya) {
        y1 = ya;
    }
    
    public void sety2(int yb) {
        y2 = yb;
    }
    
       
    public void paint(Graphics g) {
        int dx = x2-x1;
        int dy = y2-y1;
        int steps,k; 

        float x=x1;
        float y=y1;
        float x_inc,y_inc;
        

        super.paint(g);
        this.setBackground(Color.WHITE);
        g.setColor(Color.RED);

        if(Math.abs(dx)>Math.abs(dy)) steps = Math.abs(dx);
        else steps = Math.abs(dy);

        x_inc = dx/(float)steps;
        y_inc = dy/(float)steps;

        g.drawRect(Math.round(x), Math.round(y), 1, 1);
        for(k=0;k<steps;k++) {
            x+=x_inc;
            y+=y_inc;
            g.drawRect(Math.round(x), Math.round(y), 1, 1);
        }

      
        
    }
    
    public garis() {
    
    }
}

Hasil Jadi program :

Tidak ada komentar:

Posting Komentar