Langkah-langkah untuk membentuk garis menurut algoritma ini adalah :
1. Menentukan titik awal & akhir
2. Pengubahan posisi
3. Perulangan
2. Pengubahan posisi
3. Perulangan
1. Menentukan titik awal & akhir
- Titik awal (x1,y1)
- Titik akhir (x2,y2)
- Titik awal (x1,y1)
- Titik akhir (x2,y2)
2. Pengubahan posisi
- Tentukan dx & dy
dx = x2 - x1
dy = y2 - y1
dx = x2 - x1
dy = y2 - y1
- Tentukan p awal
p = (2*dy)-dx
3. Perulangan
- Kondisi
Jika p > 0 maka, x = x + 1, y = y, dan nilai p berubah dengan p = p + (2*dy)
Jika tidak, maka x = x + 1, y = y +1 dan nilai p berubah dengan p p + 2(dy - dx)
Contoh code:
//Nama File : Bresenham.java
import java.awt.*;
import javax.swing.*;
public class Bresenham {
public static void main(String[] args) {
// TODO code application logic here
//Membuat Frame baru dengan nama Frame "Frame"
JFrame Frame = new JFrame("Algoritma Garis Bresenham");
Frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//Membuat Garis Baru dengan nama variabel "GambarGaris"
Garis GambarGaris = new Garis ();
GambarGaris.setx1 (10);
GambarGaris.sety1 (10);
GambarGaris.setx2 (500);
GambarGaris.sety2 (300);
// Setting Frame dengan input GambarGaris
Frame.add(GambarGaris);
Frame.setSize(600,480);
Frame.setVisible(true);
}
}
// Nama File : Garis.java
// Algoritma Garis
// Algoritma Garis
package bresenham;
//Mengimport Class
import java.awt.*;
import javax.swing.*;
//Membuat Garis.java
public class Garis extends JPanel{
private int x1,y1,x2,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 sety1(int ya) {
y1 = ya;
}
public void setx2(int xb) {
x2 = xb;
}
public void sety2(int yb) {
y2 = yb;
}
//Metoda paint (Superclass)
public void paint(Graphics Garis) {
int xEnd,i,x,y,
dx = Math.abs(x2-x1),
dy = Math.abs(y2-y1),
p = (2*dy)-dx;
if (x1>x2) {
x = x2;
y = y2;
xEnd = x1;
} else {
x = x1;
y = y1;
xEnd = x2;
}
//Memanggil metoda paint dari superclass + ubah warna
super.paint(Garis);
this.setBackground(Color.BLACK);
Garis.setColor(Color.GREEN);
//Membuat garis menggunakan perulangan drawRect
Garis.drawRect(x, y, 1, 1);
while(x<xEnd) {
x++;
if(p<0) {
p = p + (2*dy);
} else {
if (y1>y2) {
y--; }
else y++;
p = p + 2*(dy - dx);
}
Garis.drawRect(x, y, 1, 1);
}
}
}
Hasil penghitungan algoritma :
THANKS
BalasHapuserror
BalasHapus