##
 
import math
import time

g.norefresh()  
 
def lerp(x,y,step):
	return x*(1.0-step)+y*step

def drawPoly(points):
	for n in range(len(points)-1):
		g.line(points[n][0],points[n][1],points[n+1][0],points[n+1][1])

def initPoly(x,y,radius):
	poly = []
	for n in range(0,360,36):
		x1 = int(0.5+x+radius*math.cos(n*2*math.pi/360))
		y1 = int(0.5+y+radius*math.sin(n*2*math.pi/360))
		poly.append([x1,y1])
	poly.append(poly[0])
	return poly
  

def lerpPoly(p1,p2,step):
	#for now, assume equal number of points
	p3 = []	
	for n in range(len(p1)):
		x = int(lerp(p1[n][0],p2[n][0],step))
		y = int(lerp(p1[n][1],p2[n][1],step))
		p3.append((x,y))
	return p3
 
 	
p = initPoly(g.getMouse(1),g.getMouse(2),17)
while 1:
		g.refresh()
		g.paper(0)	
		time.sleep(2)
		p2 = initPoly(g.getMouse(1),g.getMouse(2),17)
		p2.reverse()
		for n in range(101):
			g.paper(0)
			g.pen(20)
			for m in range(0,n,10):
				drawPoly(lerpPoly(p,p2,m/100.0))
			g.pen(100)
	 		drawPoly(lerpPoly(p,p2,n/100.0))
			g.refresh()
		p2.reverse()
		p = p2