def measure_derivs(x, ys): dx, dy = tocubic.bz_eval(dbz, x) ds = hypot(dx, dy) s = ys[0] * arclen_ratio dscore = ds * (tocubic.mod_2pi(atan2(dy, dx) - seg.th(s)) ** 2) #print s, atan2(dy, dx), seg.th(s) return [ds, dscore]
def measure_derivs(x, ys): dx, dy = tocubic.bz_eval(dbz, x) ds = hypot(dx, dy) s = ys[0] * arclen_ratio dscore = ds * (tocubic.mod_2pi(atan2(dy, dx) - seg.th(s))**2) #print s, atan2(dy, dx), seg.th(s) return [ds, dscore]
def plot_k_of_bz(bz): dbz = tocubic.bz_deriv(bz) ddbz = tocubic.bz_deriv(dbz) cmd = 'moveto' ss = [0] def arclength_deriv(x, ss): dx, dy = tocubic.bz_eval(dbz, x) return [hypot(dx, dy)] dt = 0.01 t = 0 for i in range(101): dx, dy = tocubic.bz_eval(dbz, t) ddx, ddy = tocubic.bz_eval(ddbz, t) k = (ddy * dx - dy * ddx) / (dx * dx + dy * dy) ** 1.5 print 100 + 500 * ss[0], 100 + 200 * k, cmd cmd = 'lineto' dsdx = arclength_deriv(t, ss) tocubic.rk4(ss, dsdx, t, .01, arclength_deriv) t += dt print 'stroke'
def plot_k_of_bz(bz): dbz = tocubic.bz_deriv(bz) ddbz = tocubic.bz_deriv(dbz) cmd = 'moveto' ss = [0] def arclength_deriv(x, ss): dx, dy = tocubic.bz_eval(dbz, x) return [hypot(dx, dy)] dt = 0.01 t = 0 for i in range(101): dx, dy = tocubic.bz_eval(dbz, t) ddx, ddy = tocubic.bz_eval(ddbz, t) k = (ddy * dx - dy * ddx) / (dx * dx + dy * dy)**1.5 print(100 + 500 * ss[0], 100 + 200 * k, cmd) cmd = 'lineto' dsdx = arclength_deriv(t, ss) tocubic.rk4(ss, dsdx, t, .01, arclength_deriv) t += dt print('stroke')
def arclength_deriv(x, ss): dx, dy = tocubic.bz_eval(dbz, x) return [hypot(dx, dy)]