Algoritma DDA (Digital Differential Analyzer)
Algoritma DDA adalah salah satu algoritma sederhana untuk menggambar garis, garis dikelompokkan menjadi 3 bentuk : mendatar, cenderung tegak dan miring 45 derajat.
berukut ini adalah sourcode algoritma DDA dengan bahasa Java :
JFrame frame = new JFrame("algoritma garis dda");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
garis grs = new garis();
grs.setx1(10);
grs.sety1(20);
grs.setx2(300);
grs.sety2(350);
grs.setBackground(Color.WHITE);
frame.add(grs);
frame.setSize(600,480);
frame.setVisible(true);
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() {
}
berukut ini adalah sourcode algoritma DDA dengan bahasa Java :
JFrame frame = new JFrame("algoritma garis dda");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
garis grs = new garis();
grs.setx1(10);
grs.sety1(20);
grs.setx2(300);
grs.sety2(350);
grs.setBackground(Color.WHITE);
frame.add(grs);
frame.setSize(600,480);
frame.setVisible(true);
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() {
}
![]() |
| Ini adalah hasil ketika program dijalankan |

Tidak ada komentar:
Posting Komentar