3 from __future__ import print_function
6 signal.signal(signal.SIGINT, signal.SIG_DFL)
21 ns = 4 # around tube, should be even
31 def dpr(v): return '%+3f %+3f %+3f' % tuple(v)
33 def round_wire(p, vec_surfacenormal, vec_acrosswire, sigma):
36 def make_moebius(objname):
37 print('module %s(){' % objname)
39 extents = [ ScadObject() for w in range(0,nw) ] # along extents
40 travers = [ ScadObject() for v in range(0,nv) ] # along traverses
42 def qc(v, w, sigmas, is_extt, is_trav):
43 #print(' QCv,w,T',v,w,is_trav, file=sys.stderr)
45 p, norm, extt, trav = m.details(v + ab*is_extt, w + ab*is_trav)
48 if is_trav: acrs = extt
49 elif is_extt: acrs = trav
51 delta = norm * sin(sigma) + acrs * cos(sigma)
52 r = p + wire/nomsize * delta
53 #print(' RW,ab,sx',ab,sx,
59 # 'delta=',dpr(delta),
64 for v in range(0, nv):
65 for w in range(0, nw+1):
66 for s in range(0, ns):
67 sigmas = [ (s + sx + 0.5)/ns * tau for sx in 0,1 ]
68 #print('VWS',v,w,s, sigmas, file=sys.stderr)
70 extents[w % nw].quad([ cnr for cnr in qc(v,w,sigmas,True,False) ])
71 if not v % each_v and w < nw:
72 travers[v].quad([ cnr for cnr in qc(v,w,sigmas,False,True) ])
73 for w in range(0, nw):
74 print('// extent w=', w)
75 extents[w].writeout_core(nomsize)
76 for v in range(0, nv):
77 print('// travers v=', v)
78 travers[v].writeout_core(nomsize)
81 make_moebius('MoebiusMesh')
82 print('moebiuscore_nomsize=%s;' % repr(nomsize))