Hi,

I have the following working Bresenham's algorithm,which finds intermediate points between two vertices. But this is for a pixel(which has the intermediate point as its center) of size 1.

So,since,in Bresenhams algorithm,I cant control the number of intermediate points, I tried using Linear Interpolation in x and y directions.

So,the above code gets the intermediate points between any two vertices.

Now,the length of the pixel,which is to be created at every intermediate point two vertices is calculated by : length(segment) divided by (No. of IntermediatePoints+1).

But,if I use this for a triangle(with 3 vertices), then if distance between vertex1 and vertex2(connecting edge1); vertex2 and vertex 3(connecting edge2) is different, then even the length of Pieces(or pixels like square) drawn between along edge 1 and edge 2 is different right? if thats the case,how would I apply filling algorithm?

Thanks in Advance

I have the following working Bresenham's algorithm,which finds intermediate points between two vertices. But this is for a pixel(which has the intermediate point as its center) of size 1.

**Code:**```
void Bresenham(int x1,
```

int y1,

int const x2,

int const y2)

{

int delta_x(x2 - x1);

// if x1 == x2, then it does not matter what we set here

signed char const ix((delta_x > 0) - (delta_x < 0));

delta_x = std::abs(delta_x) << 1;

int delta_y(y2 - y1);

// if y1 == y2, then it does not matter what we set here

signed char const iy((delta_y > 0) - (delta_y < 0));

delta_y = std::abs(delta_y) << 1;

cout << "(" << x1 << "," << y1 << ")\n";

//plot(x1, y1);

if (delta_x >= delta_y)

{

// error may go below zero

int error(delta_y - (delta_x >> 1));

while (x1 != x2)

{

// reduce error, while taking into account the corner case of error == 0

if ((error > 0) || (!error && (ix > 0)))

{

error -= delta_x;

y1 += iy;

}

// else do nothing

error += delta_y;

x1 += ix;

cout << "(" << x1 << "," << y1 << ")\n";

//plot(x1, y1);

}

}

else

{

// error may go below zero

int error(delta_x - (delta_y >> 1));

while (y1 != y2)

{

// reduce error, while taking into account the corner case of error == 0

if ((error > 0) || (!error && (iy > 0)))

{

error -= delta_y;

x1 += ix;

}

// else do nothing

error += delta_x;

y1 += iy;

cout << "(" << x1 << "," << y1 << ")\n";

//plot(x1, y1);

}

}

}

So,since,in Bresenhams algorithm,I cant control the number of intermediate points, I tried using Linear Interpolation in x and y directions.

**Code:**```
void LinearInterpolation(double x0, double x1, double y0, double y1, int Div)
```

{

double x [Div+1];

double y [Div+1];

for(int i=1; i<=Div; i++)

{

x[i] = x0 + (x1-x0) * i / (Div + 1);

if(x[i] > x1)

break;

y[i] = y0 + (y1-y0) * i / (Div + 1);

if(y[i] > y1)

break;

cout << "(" << x[i] << "," << y[i] << ")\n";

}

}

So,the above code gets the intermediate points between any two vertices.

Now,the length of the pixel,which is to be created at every intermediate point two vertices is calculated by : length(segment) divided by (No. of IntermediatePoints+1).

But,if I use this for a triangle(with 3 vertices), then if distance between vertex1 and vertex2(connecting edge1); vertex2 and vertex 3(connecting edge2) is different, then even the length of Pieces(or pixels like square) drawn between along edge 1 and edge 2 is different right? if thats the case,how would I apply filling algorithm?

Thanks in Advance