void brezenhamL(int x1,int y1,int x2,int y2,int *buf){
double m,fx,fy;
int x,y,i,dx,dy,sx=1,sy=1;
// dx,dyの初期化
dx = x2-x1;
if(dx < 0){
dx = -dx;
int t;
t = x1; x1 = x2;x2 = t;
t = y1; y1 = y2;y2 = t;
}
dy = y2-y1;
if(dy < 0){
dy = -dy;
sy = -1;
}
int e,dx2,dy2;
int mx,my;
dx2 = dx*2;
dy2 = dy*2;
if( dx > dy){
e = -dx;
x = x1;y=y1;
mx = x2; my =y2;
for( i=0 ; i < (dx/2)+1 ; i++){
drawPixel(x,y);
drawPixel(mx,my);
x ++;
mx--;
e+=dy2;
if( e < =0 ) {
y += sy;
my-= sy;
e -= dx2;
}
}
}else{
e = -dy;
x = x1;y=y1;
mx = x2;my=y2;
for( i=0 ; i < (dy/2)+1 ; i++){
drawPixel(x,y);
drawPixel(mx,my);
buf[y] = x;
buf[my] = mx;
y += sy;
my -= sy;
e += dx2;
if( e < =0 ){
x += sx;
mx -= sx;
e -= dy2;
}
}
}
}
|