#!/usr/bin/python from __future__ import print_function import signal signal.signal(signal.SIGINT, signal.SIG_DFL) from moebius import * from scad import * nomsize = 50; wire = 3.0; # number of wires kv = 5 kw = 5 # resolution nv = 20 nw = 20 ns = 3 # around tube nv += -nv % kv nw += -nw % kw each_v = nv / kv each_w = nw / kw m = Moebius(nv, nw) def dpr(v): return '%4f %4f %4f' % tuple(v) def round_wire(p, vec_surfacenormal, vec_acrosswire, sigma): return r def make_moebius(objname): print('module %s(){' % objname) # wires: extents = [ ScadObject() for v in range(0,nv) ] # along extents travers = [ ScadObject() for w in range(0,nw) ] # along traverses def qc(v, w, sigmas, is_trav): print(' QCv,w,T',v,w,is_trav, file=sys.stderr) for ab in 0,1: p, norm, extt, trav = m.details(v + ab*is_trav, w + ab*(not is_trav)) for sx in 0,1: sigma = sigmas[sx] if is_trav: acrs = extt else: acrs = trav delta = norm * sin(sigma) + acrs * cos(sigma) r = p + wire/nomsize * delta print(' RW,ab,sx',ab,sx, 'r=',dpr(r), 'p=',dpr(p), 'norm=',dpr(norm), 'extt=',dpr(extt), 'acrs=',dpr(acrs), 'delta=',dpr(delta), 's=','%4f' % sigma, file=sys.stderr) yield r for v in range(0, nv): for w in range(0, nw): for s in range(0, ns): sigmas = [ (s + sx + 1.0)/ns * tau for sx in 0,1 ] print('VWS',v,w,s, sigmas, file=sys.stderr) if not w % each_w: extents[w].quad([ cnr for cnr in qc(v,w,sigmas,False) ]) if False and not v % each_v: travers[v].quad([ round_wire(p, norm, extt, sigmas[sx]) for b in 0,1 for p, norm, extt, trav in (m.details(v, w+b),) for sx in 0,1 ]) for v in range(0, nv): print('// extent v=', v) extents[v].writeout_core(nomsize) for w in range(0, nw): print('// travers w=', w) travers[w].writeout_core(nomsize) print('}') make_moebius('MoebiusMesh') print('moebiuscore_nomsize=%s;' % repr(nomsize))