Code: Select all
void D3DGraphics::DrawLine ( int x1, int y1, int x2, int y2, int r, int g, int b )
{
int dx = x2 - x1;
int dy = y2 - y1;
if ( abs ( dy ) > abs ( dx ) )
{
if ( y1 > y2 )
{
int temp = y2;
y2 = y1;
y1 = temp;
temp = x2;
x2 = x1;
x1 = temp;
}
float m = (float)dx / (float)dy;
float b = x1 - m * y1; // <----- b = line equation
for ( int y = y1; y <= y2; y++ )
{
int x = m*y + b + 0.5f;
PutPixel ( x,y,r,g,b ); // <------ b = line equation
}
}
else
{
if ( x1 > x2 )
{
int temp = y2;
y2 = y1;
y1 = temp;
temp = x2;
x2 = x1;
x1 = temp;
}
float m =(float) dy / (float) dx;
float b1 = y1 - m*x1; // <------ here you at least renamed it
for ( int x = x1; x <= x2; x++ )
{
int y = m*x + b + 0.5f; // <------ but forgot to rename here
PutPixel ( x,y,r,g,b ); // <------ still not blue here
}
}
}
Code: Select all
void D3DGraphics::DrawLine ( int x1, int y1, int x2, int y2, int r, int g, int b )
{
int dx = x2 - x1;
int dy = y2 - y1;
if ( abs ( dy ) > abs ( dx ) )
{
if ( y1 > y2 )
{
int temp = y2;
y2 = y1;
y1 = temp;
temp = x2;
x2 = x1;
x1 = temp;
}
float m = (float)dx / (float)dy;
float k = x1 - m * y1; // "k" = line equation
for ( int y = y1; y <= y2; y++ )
{
int x = m*y + k + 0.5f; // and here we use "k"
PutPixel ( x,y,r,g,b ); // "b" is fine now since we didn't change it at all
}
}
else
{
if ( x1 > x2 )
{
int temp = y2;
y2 = y1;
y1 = temp;
temp = x2;
x2 = x1;
x1 = temp;
}
float m =(float) dy / (float) dx;
float k = y1 - m*x1; // Same stuff here
for ( int x = x1; x <= x2; x++ )
{
int y = m*x + k + 0.5f;
PutPixel ( x,y,r,g,b );
}
}
}