直線を描く

2007-06-24 2007-07-01

初級

strokeを使わずに直線を描いてください。


Bresenhamの線描画アルゴリズムを利用。


import processing.core.PApplet;

public class ProcessingApp extends PApplet {

private static final long serialVersionUID = 1L;

@Override
public void draw() {
myline(mouseX, mouseY, width / 2, height / 2);
}

@Override
public void init() {
super.init();
}

@Override
public void setup() {
size(200, 200);
line(0, 0, 200, 200);
}

void myline(int x0, int y0, int x1, int y1) {

int E, x, y;
int dx, dy, sx, sy, i;

sx = (x1 > x0) ? 1 : -1;
dx = (x1 > x0) ? x1 - x0 : x0 - x1;
sy = (y1 > y0) ? 1 : -1;
dy = (y1 > y0) ? y1 - y0 : y0 - y1;

x = x0;
y = y0;

if (dx >= dy) {
E = -dx;
for (i = 0; i <= dx; i++) {
point(x, y);
x += sx;
E += 2 * dy;
if (E >= 0) {
y += sy;
E -= 2 * dx;
}
}
} else {
E = -dy;
for (i = 0; i <= dy; i++) {
point(x, y);
y += sy;
E += 2 * dx;
if (E >= 0) {
x += sx;
E -= 2 * dy;
}
}
}

}
}



Bresenham's line algorithm - Wikipedia, the free encyclopedia
あとで、修整。