-#!/usr/bin/python
+#!/usr/bin/python3
from __future__ import print_function
from moebius import *
from scad import *
-nomsize = 50;
-wire = 3.0;
+nomsize = 30;
+wire = 1.500;
# number of wires
kv = 24
kw = 16
# resolution
-nv = 80
-nw = 80
+nv = 200
+nw = 200
ns = 4 # around tube, should be even
+from moedebug import *
+dbg_file(sys.stderr)
+
nv += -nv % kv
nw += -nw % kw
for v in range(0, nv):
for w in range(0, nw+1):
+ extw = w
+ if extw > nw/2: extw = nw-w
+ # each extent wire has to go round twice to meet itself
+ # (except the middle one, if there is one, where nw/2 = nw - nw/2
+ # and it gets to be by itself
for s in range(0, ns):
sigmas = calc_sigmas([s + sx for sx in (0,1)])
#print('VWS',v,w,s, sigmas, file=sys.stderr)
if not w % each_w:
- extents[w % nw].quad([ cnr for cnr in qc(v,w,sigmas,False) ])
+ extents[extw].quad([ cnr for cnr in qc(v,w,sigmas,False) ])
if not v % each_v and w < nw:
travers[v].rquad([ cnr for cnr in qc(v,w,sigmas,True) ])
+ if not v % each_v:
+ for w in 0, nw:
+ p, norm, extt, trav = m.details(v, w)
+ cnrs = points_round_wire(p, norm, extt, calc_sigmas(range(0,ns)))
+ cnrs = list(cnrs)
+ if w: cnrs.reverse()
+ for s in range(0, ns-1):
+ travers[v].triangle(cnrs[s],
+ cnrs[s+1],
+ cnrs[ns-1])
+
for w in range(0, nw):
print('// extent w=', w)
extents[w].writeout_core(nomsize)