So I did that maths of drawing a perfect octagon. Now, for a perfect hexagon!

**Maths:**

First, we must imagine a rectangle with width a and height **b**.

You must now choose which side, **a** or **b**, you want to specify.

If you specified **a**, to find **b** you must use this equation:

If you specified **b**, to find **a** you must use this equation:

Which can also be written as:

Remember to round to the nearest number!

**Drawing:**

Once you have **a** and **b**, we need to specify the 6 coordinates.

For this example, the frame of reference is the center of the rectangle.

The top and bottom two are **b/2** up or down and **a/2** to each side.

The two sides are **a** to the side.

Then you draw lines between the coordinates.

And there you have a perfect hexagon!

**Pseudo Code:**

**Initialize:**

*// Let’s say we specified the width, a*

width = (width of imaginary square)

height = 2 * width * sin(60)

**Loop:**

coord_1x = x – width/2

coord_1y = y + height/2

coord_2x = x + width/2

coord_2y = y + height/2

coord_3x = x + width

coord_3y = y

coord_4x = x + width/2

coord_4y = y – height/2

coord_5x = x – width/2

coord_5y = y – height/2

coord_6x = x – width

coord_6y = y

*//draw_line(from_x,from_y,to_x,to_y)*

draw_line(coord_1x,coord_1y,coord_2x,coord_2y)

draw_line(coord_2x,coord_2y,coord_3x,coord_3y)

draw_line(coord_3x,coord_3y,coord_4x,coord_4y)

draw_line(coord_4x,coord_4y,coord_5x,coord_5y)

draw_line(coord_5x,coord_5y,coord_6x,coord_6y)

draw_line(coord_6x,coord_6y,coord_1x,coord_1y)

And thatâ€™s how to draw a perfect hexagon!

**Coming soon: Hexagonal grids!**

And this is where OpenGL is good. In 5 lines of code one can write a function that can draw a triangle quadrangle (square) pentagon hexagon et cetera. One can Evan draw a ‘circle’. (40-side-agone looks like a circle). However, I find the math you did easear then what you have to do to split the x-sided figure into x triangles. OpenGL can be nice, but sometime more complex /more math seams more straight forward.