def getPolygonBezierCurveList(poly):
	corners = _getPolygonCorners(poly)
	ncorns = len(corners)

	bcurves = []
	n = len(poly)

	if ncorns == 0:
		print "ZURKA2"
		tl = getLeftTangent(poly, 0)
		tl2 = getLeftTangent(poly, n/2)

		bcurves += bezier_fit.getBezierCurveListToFitPoints(poly[0: 1 + n/2], -tl, tl2)
		bcurves += bezier_fit.getBezierCurveListToFitPoints(poly[n/2 : n] + [poly[0]], -tl2, tl)
		return bcurves
		
	if ncorns ==1:
		print "ZURKA"

		endp = (corners[0] + n/2)%n

		tl = getLeftTangent(poly, endp)

		polyLine = getCyclicArrayRangeInclusive(corners[0], endp, poly)

		bcurves+= bezier_fit.getBezierCurveListToFitPoints(polyLine, None, tl)
		polyLine = getCyclicArrayRangeInclusive(endp, corners[0], poly)
		bcurves+= bezier_fit.getBezierCurveListToFitPoints(polyLine, -tl)
		return bcurves

	for i in xrange(0,ncorns):
		polyLine = getCyclicArrayRangeInclusive(corners[i], corners[(i+1)%ncorns], poly)
		bcurves += bezier_fit.getBezierCurveListToFitPoints(polyLine)

	return bcurves
def test_bezier_fit():

	points = [Vec2(0,0), Vec2(1,0), Vec2(2,0), Vec2(3,0)]
	b = getBezierCurveListToFitPoints(points)

	assert utils.areVecArrsClose(points, b[0])
r = 300
tuples = zip( 300 + r*np.cos(angles), 300 + r*np.sin(angles) )

# halfCircle = getVec2ListFromTupleList(tuples)
# halfCBez = bezier_fit.getBezierFit(Vec2(0,1), Vec2(0,1), halfCircle)
# halfCircle = getIntVec2List(halfCircle)

bez2 = [Vec2(0,0), Vec2(0,300), Vec2(400,300), Vec2(400,0)]

# pnum = 4
#
# bez2RefP = discretizeBezierCurve(bez2, pnum)
# beziers = bezier_fit.getBezierFit(Vec2(0,1), Vec2(0,1), bez2RefP)

# t1, t2 = bezier_fit._getPathEndpointTangents(points)
beziers = bezier_fit.getBezierCurveListToFitPoints(points)


while not done:

	clock.tick(100)

	for event in pygame.event.get():
		if event.type == pygame.QUIT:
			done=True 

	screen.fill(WHITE)

	# drawBezierCurve(bez2, pnum, BLUE)

	for bezCP in beziers: 
Example #4
0
r = 300
tuples = zip(300 + r * np.cos(angles), 300 + r * np.sin(angles))

# halfCircle = getVec2ListFromTupleList(tuples)
# halfCBez = bezier_fit.getBezierFit(Vec2(0,1), Vec2(0,1), halfCircle)
# halfCircle = getIntVec2List(halfCircle)

bez2 = [Vec2(0, 0), Vec2(0, 300), Vec2(400, 300), Vec2(400, 0)]

# pnum = 4
#
# bez2RefP = discretizeBezierCurve(bez2, pnum)
# beziers = bezier_fit.getBezierFit(Vec2(0,1), Vec2(0,1), bez2RefP)

# t1, t2 = bezier_fit._getPathEndpointTangents(points)
beziers = bezier_fit.getBezierCurveListToFitPoints(points)

while not done:

    clock.tick(100)

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            done = True

    screen.fill(WHITE)

    # drawBezierCurve(bez2, pnum, BLUE)

    for bezCP in beziers:
        pygame.gfxdraw.bezier(screen, getTupleListFromVec2List(bezCP), 30, RED)
def test_bezier_fit():

    points = [Vec2(0, 0), Vec2(1, 0), Vec2(2, 0), Vec2(3, 0)]
    b = getBezierCurveListToFitPoints(points)

    assert utils.areVecArrsClose(points, b[0])