#!/usr/bin/python from __future__ import print_function import signal signal.signal(signal.SIGINT, signal.SIG_DFL) from visual import * from bezier import BezierSegment import numpy as np import sys scene.width = 1200 scene.height = 1200 scene.fov = 1E-3 from moebius import * from moedebug import * nv = 10 nw = 14 class Visdebug(BaseVisdebug): def curve(vd, fn, color=color.yellow): # fn(t) => 3-tuple, 3-list, or similar, for t \elem [0,1] ps = [ fn(t) for t in np.linspace(0,1,11) ] #dbg('Visdebug', ps) curve(pos = ps, color=color) def circle(vd, c, axis, **kw): ring(pos=c, axis=axis, radius=np.linalg.norm(axis), thickness=0.005, **kw) def arrow(vd, p, d, **kw): print('arrow %s' % repr(kw), file=sys.stderr) bodge_color = kw.get('color', (1,0,0)) try: del kw['color'] except KeyError: pass vd.line(p, p+d, color=bodge_color, **kw) vd.circle(p, np.asarray(d) * 0.25, color=bodge_color, **kw) def crashing(vd, msg): print("CRASHING - VISDEBUG", msg, file=sys.stderr) rate(1E-8) dbg_file(sys.stderr) vdbg_enable(Visdebug()) m = Moebius(nv, nw) vs = range(0, nv+1) ws = range(0, nw+1) #ts = np.linspace(0, 1, 40) #thetas = np.linspace(0, tau, 40) #c0 = curve( color=color.red, pos = [ m.edge.point(th) for th in thetas ] ) #c1 = curve( color=color.blue, pos = [ m.midline.point(th) for th in thetas ] ) for v in vs: c2 = curve( color=color.green, pos = [ m.point(v,w) for w in ws ] ) for w in ws: c3 = curve( color=color.blue, pos = [ m.point(v,w) for v in vs ] ) #for v in vs: # c4 = curve( color=color.blue, # pos = [ m.point_offset(v,w, 0.1) for w in ws ] ) #for w in ws: # c3 = curve( color=(1,0,1), pos = [ m.point_offset(v,w, -0.1) for v in vs ] )