def leapfrog(gradient_fx, x, u, epsilon):
    dU = gradient_fx(x)
    u_new = dict(map(lambda (k, v): (k, vec.sub(v, vec.scale(dU[k], epsilon*0.5))), u.items()))
    x = dict(map(lambda (k, v): (k, vec.add(x[k], vec.scale(v, epsilon))), u_new.items()))
    dU = gradient_fx(x)
    u_new = dict(map(lambda (k, v): (k, vec.sub(v, vec.scale(dU[k], epsilon*0.5))), u.items()))
    return x, u_new
def leapfrog(gradient_fx, x, u, epsilon):
    dU = gradient_fx(x)
    u_new = dict(
        map(lambda (k, v): (k, vec.sub(v, vec.scale(dU[k], epsilon * 0.5))),
            u.items()))
    x = dict(
        map(lambda (k, v): (k, vec.add(x[k], vec.scale(v, epsilon))),
            u_new.items()))
    dU = gradient_fx(x)
    u_new = dict(
        map(lambda (k, v): (k, vec.sub(v, vec.scale(dU[k], epsilon * 0.5))),
            u.items()))
    return x, u_new
Exemple #3
0
def curve_normal(xy1, xy2, xy3=None):
    if xy3 == None:
        xy3 = xy2
        xy2 = vec.scale(vec.add(xy1, xy2), 0.5)

    if vec.colinear(vec.sub(xy2, xy1), vec.sub(xy3, xy2)):
        xy2 = (xy2[0] + gauss(0, 0.001), xy2[1] + gauss(0, 0.001))

    vec12 = vec.norm((xy2[0] - xy1[0], xy2[1] - xy1[1]))
    vec32 = vec.norm((xy2[0] - xy3[0], xy2[1] - xy3[1]))

    return vec.norm(vec.add(vec12, vec32))
def curve_normal(xy1, xy2, xy3=None):
    if xy3 == None:
        xy3 = xy2
        xy2 = vec.scale(vec.add(xy1, xy2), 0.5)

    if vec.colinear(vec.sub(xy2, xy1), vec.sub(xy3, xy2)):
        xy2 = (xy2[0] + gauss(0, 0.001), xy2[1] + gauss(0, 0.001))

    vec12 = vec.norm((xy2[0] - xy1[0], xy2[1] - xy1[1]))
    vec32 = vec.norm((xy2[0] - xy3[0], xy2[1] - xy3[1]))

    return vec.norm(vec.add(vec12, vec32))
Exemple #5
0
def signed_curve_normal(xy1, xy2, xy3):
    fac = 1 if signed_straightness(xy1, xy2, xy3) > 0 else -1
    return vec.scale(curve_normal(xy1, xy2, xy3), fac)
def signed_curve_normal(xy1, xy2, xy3):
    fac = 1 if signed_straightness(xy1, xy2, xy3) > 0 else -1
    return vec.scale(curve_normal(xy1, xy2, xy3), fac)