Author: Tim Cieplowski
Date: 30 November 2013

q = 15
t = -0.7 (slider from -2 to 2.5, step 0.01)
A: (0, t / (1 - t))
list1 = Sequence(CircleArc[A, Rotate[A + (0, ((t * (q - p)) + p) / ((q * (1 - t)))), ((π * t) * q^(2) / ((q * ((q * t) - (p * t) + p)))), A], Rotate[A + (0, ((t * (q - p)) + p) / ((q * (1 - t)))), (((-π) * t) * q^(2) / ((q * ((q * t) - (p * t) + p)))), A]], p, 1, q)
list2 = Sequence(Circle[(0, 0), p / q], p, 1, q)
list3 = Sequence(Segment[(((-π), -1) * p / q), ((π, -1) * p / q)], p, 1, q)
P2 = Element(list2, q)
P3 = Element(list3, q)
P1 = Element(list1, q)
a = Segment((0, 0), (0, -1))
w = 0
b: 1 - (2 * (Min[0.75, Max[0.25, abs(-0.25 - t)]] - 0.25))