Apa itu algoritma DDA? DDA (Digital Differential Analyzer) adalah algoritma pembentukan garis berdasarkan perhitungan Dx dan Dy, Langkah-langkah pembuatan algoritma DDA yaitu:
1. Menentukan titik awal & akhir
2. Pengubahan posisi (menggunakan steps)
3. Perulangan
1. Menentukan titik awal & akhir
- Titik awal (x1,y1)
- Titik akhir (x2,y2)
2. Pengubahan posisi (step)
- Tentukan dx & dy
dx = x2 - x1
dy = y2 - y1
- Menentukan steps
Jika dx > dy, maka steps = dx, dan jika dy => dx maka steps = dy
- Menentukan perubahan nilai
x_inc = dx / steps
y_inc = dy / steps
3. Perulangan
- Perulangan akan berhenti jika perulangan sampai ke titik akhir
- Rumus perulangan
x = x + x_inc
y = y + y_inc
Contoh code:
// Nama File : DDA.java
public class DDA {
public static void main(String[] args) {
// TODO code application logic here
//Membuat Frame baru untuk menampilkan garis
JFrame Frame = new JFrame ("Algoritma Garis DDA");
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 (125);
GambarGaris.sety2 (125);
// Setting Frame dengan input GambarGaris
Frame.add(GambarGaris);
Frame.setSize(600,480);
Frame.setVisible(true);
}
// Nama File : Garis.java
// Algoritma Garis
package dda;
//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 setx2(int xb) {
x2 = xb;
}
public void sety1(int ya) {
y1 = ya;
}
public void sety2(int yb) {
y2 = yb;
}
//Metoda paint (Superclass)
public void paint(Graphics Grs) {
int dx = x2-x1,
dy = y2-y1,
steps,p;
float x=x1,
y=y1,
x_inc,
y_inc;
//Memanggil metoda paint dari superclass + ubah warna
super.paint(Grs);
this.setBackground(Color.BLACK);
Grs.setColor(Color.GREEN);
//Menentukan steps melalui penghitungan dx dan dy
if(Math.abs(dx)>Math.abs(dy))
{
steps = Math.abs(dx);
}
else steps = Math.abs(dy);
//Menentukan x & y increment
x_inc = dx/(float)steps;
y_inc = dy/(float)steps;
//Membuat garis menggunakan perulangan drawRect
Grs.drawRect(Math.round(x), Math.round(y), 1, 1);
for(p=0;p<steps;p++) {
x+=x_inc;
y+=y_inc;
Grs.drawRect(Math.round(x), Math.round(y), 1, 1);
}
}
}
Hasil penghitungan algoritma :
Tidak ada komentar:
Posting Komentar