# Tutorial Request: drawing multi sided polygons w/ Bezier Curves

• Hello!

I'm still a bit new to programmatic drawing and I was curious about writing scripts to make multi-sided polygons such as triangles, hexagons, etc. using the BezierPath() method.

My math skills are rather rusty at this point so I'd love some pointers.

Thanks!

• hello @micahmicah,

regular polygons can be described using vectors.

a vector has a length and an angle.

• all sides have the same length
• the sum of all external angles is 360°

here is a simple example in code:

``````# define polygon parameters
x, y = 300, 200
sides = 5
perimeter = 1640
angleStart = 0
angleTotal = 360
autoclose = True

# calculate side length & angle
side = perimeter / sides
angleStep = abs(angleTotal / sides)

# create the polygon shape
B = BezierPath()

angle = angleStart
for i in range(sides):
# this is the crucial part:
# use trigonometry to calculate point B
# from point A, angle, and distance
x += cos(angle) * side
y += sin(angle) * side

if i == 0:
B.moveTo((x, y))
else:
B.lineTo((x, y))

angle += angleStep

if autoclose:
B.closePath()

fill(0, 1, 1)
strokeWidth(30)
lineCap('round')
lineJoin('round')
stroke(1, 0, 1)
drawPath(B)
``````

• bonus: Turtle

``````from turtle import *

x, y = 300, 200
sides = 7
side = 100
angleTotal = 360

angleStep = abs(angleTotal / sides)

Screen()
t = Turtle()

for i in range(sides):
t.forward(side)
t.left(angleStep)

done()
``````

↳ run this script in Terminal or SublimeText

• Thank you so much!