#include<stdio.h>
main()
{
BresLine(0, 9, 14, 1);
}
BresLine(int x1, int y1, int x2, int y2)
{
int x, y, dx, dy, dx1, dy1, p, temp, k;
float slope;
dx1 = x2 - x1; dy1 = y2 - y1;
dx = abs(dx1); dy = abs(dy1);
if(dx == 0) verline(x1, y1, x2, y2);
else if(dy == 0) horline(x1, y1, x2, y2);
else if(dx1 == dy1) diagline(x1, y1, x2, y2);
else
{
x = x1; y = y1;
slope = (float)dy/dx;
if(slope > 1)
{
swap(&x1, &y1); swap(&x2, &y2);
temp = dx; dx = dy; dy = temp;
temp = x; x = y; y = temp;
}
p = 2 * dy - dx;
if(slope > 1) printf("k = 0, x = %d, y = %d\n", y, x);
else printf("k = 0, x = %d, y = %d\n", x, y);
for(k=0; k < dx; k++)
{
if(p < 0)
{
if(x < x2) x++; else x--;
p = p + 2 * dy;
}
else
{
if(y < y2) y++; else y--;
if(x < x2) x++; else x--;
p = p + 2 * (dy - dx);
}
if(slope > 1) printf("k = %d, x = %d, y = %d\n",k, y, x);
else printf("k = 0, x = %d, y = %d\n", x, y);
}
}
}
swap(int *a, int *b)
{
int tmp;
tmp = *a; *a = *b; *b = tmp;
}
horline(int x1, int y1, int x2, int y2)
{
int i,j;
if(x1 < x2)
for(i = x1; i <= x2; i++)
printf("x = %d, y = %d\n",i, y1);
else
for(i = x2; i <= x1; i++)
printf("x = %d, y = %d\n",i, y1);
}
verline(int x1, int y1, int x2, int y2)
{
int i,j;
if(y1 < y2)
for(j = y1; j <= y2; j++)
printf("x = %d, y = %d\n",x1, j);
else
for(j = y2; j <= y1; j++)
printf("x = %d, y = %d\n",x1, j);
}
diagline(int x1, int y1, int x2, int y2)
{
int i,j;
if(x1 < x2)
for(i = x1; i <= x2; i++)
printf("x = %d, y = %d\n",i, i);
else
for(i = x2; i <= x1; i++)
printf("x = %d, y = %d\n",i, i);
}
No comments:
Post a Comment