Hi All,
I have written code for draw a regular polygon for drawing rectangle, pentagon , hexagon etc.
Now i want to save the content of polygon to 2d char array buffer for storing pixels and save it into a bitmap image file.
But i am not able to do this.
can anyone help me?
Anuj
Comments
A hexigon, rectangle... can all be drawn as polygons so let's just implement a general polygon painting algorithm. The specific shapes can be painted by just picking different sequences of points for the polygon.
Painting a polygon can be easily decomposed into painting a bunch of triangles that make up the polygon. You can come up with this bunch of triangles by taking the first point in the polygon and going shifting the other 2 vertices over 1 by 1 in adjacency until one of them reaches the last vertex.
Now the problem is reduced to filling a triangle.
To fill a triangle, start by splitting the triangle along one of the axis. Let's assume you pick the y=constant axis or a horizontal axis. Find the vertex with highest y value. Let's call this H for highest.
Find the vertex with lowest y-value. Let's call this L for lowest.
Find the vertex with the remaining y-value. Let's call this point m for middle even though it may not be half way between H and L.
Fill the top triangle down to the horizontal line of y=m.y. The verticies of this triangle would include H, m, and a calculated point where y=m.y and forms a straight line leading to L. Fill it in using a loop through the pixels within the region. Use the bit of math involved in the equation of 2D lines like y=mx+b if you have trouble finding where to loop through pixels.
Fill the lower triangle from horizontal line down. You can guess the right vertices.
I've implemented this stuff 3 or 4 times so it should work.
: Hi All,
: I have written code for draw a regular polygon for drawing
: rectangle, pentagon , hexagon etc.
: Now i want to save the content of polygon to 2d char array buffer
: for storing pixels and save it into a bitmap image file.
:
: But i am not able to do this.
: can anyone help me?
:
: Anuj
: