Generate Spirograph dots without numpy using yield.

def give_dots_yield(R, r, r_, resolution=2*PI/1000, spins=50):
    '''Generate Spirograph dots without numpy using yield.
    '''
    def x(theta):
        return (R-r) * math.cos(theta) + r_*math.cos((R-r) / r * theta)

    def y(theta):
        return (R-r) * math.sin(theta) - r_*math.sin((R-r) / r * theta)

    theta = 0.0
    while theta < 2*PI*spins:
        yield (x(theta), y(theta))
        theta += resolution