//Ham hoan vi
Code:
void Hoan_vi(int &a,int &b)
{
int Temp;
Temp=a;
a=b;
b=Temp;
}
//Ham hoan vi 2 diem
Code:
void Hoan_vi_2_diem(int &X1,int &Y1,int &X2,int &Y2)
{
Hoan_vi(X1,X2);
Hoan_vi(Y1,Y2);
}
//Ham lam tron
Code:
int Round (float x)
{
return (int)(x+0.5);
}
/*------------------ Thuat toan DDA ----------------------*/
// Truong hop 1 & 3: X1<X2
Code:
void DrawLine1 (int X1,int Y1,int X2,int Y2,int color)
{
float m,y;
int x;
m = (float)(Y2-Y1)/(X2-X1);
x = X1;
y = Y1;
putpixel (x,y,color);
while ( x < X2 )
{
x++;
y += m;
putpixel(x,Round(y),color);
}
}
// Truong hop 2 & 4: Y1<Y2
Code:
void DrawLine2 (int X1,int Y1,int X2,int Y2,int color)
{
float k,x;
int y;
k = (float)(X2-X1)/(Y2-Y1);
x = X1;
y = Y1;
putpixel (x,y,color);
while ( y < Y2 )
{
y++;
x += k;
putpixel(Round(x),y,color);
}
}
Code:
void DrawLine (int X1,int Y1,int X2,int Y2,int color)
{
if(X1 == X2 && Y1 == Y2)
{
putpixel(X1,Y1,color);
return;
}
if( abs(X2-X1) >= abs(Y2-Y1) )
{
if ( X1>X2 )
Hoan_vi_2_diem(X1,Y1,X2,Y2);
DrawLine1(X1,Y1,X2,Y2,color);
}
else
{
if ( Y1>Y2 )
Hoan_vi_2_diem(X1,Y1,X2,Y2);
DrawLine2(X1,Y1,X2,Y2,color);
}
}
/*----------------------------------------------------------------*/
Code:
void Sap_xep_1(int &Left,int &Top,int &Right,int &Bottom)
{
if(Top<Bottom)
Hoan_vi(Top,Bottom);
if(Left>Right)
Hoan_vi(Left,Right);
}
/*-------------- TO HINH CHU NHAT ---------------------------*/
Code:
void FillRectangle (int Left,int Top,int Right,int Bottom,int fColor)
{
int y;
Sap_xep_1(Left,Top,Right,Bottom);
for(y=Bottom;y<=Top;y++)
{
DrawLine(Left,y,Right,y,fColor);
delay (DELAY);
}
}