wire = 3.0;
# number of wires
-kv = 10
-kw = 10
+kv = 5
+kw = 5
# resolution
-nv = 40
-nw = 40
-ns = 10 # around tube
+nv = 20
+nw = 20
+ns = 3 # around tube
nv += -nv % kv
nw += -nw % kw
m = Moebius(nv, nw)
+def dpr(v): return '%4f %4f %4f' % tuple(v)
+
def round_wire(p, vec_surfacenormal, vec_acrosswire, sigma):
- r = (p +
- wire/nomsize * (vec_surfacenormal * sin(sigma) +
- vec_acrosswire * cos(sigma)))
- #print(' round_wire',p,vec_surfacenormal, vec_acrosswire, sigma, r,
- # file=sys.stderr)
return r
def make_moebius(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):
- print('VWS',v,w,s, file=sys.stderr)
- sigmas = [ (s + sx)/ns * tau for sx in 0,1 ]
+ 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([ round_wire(p, norm, trav, sigmas[sx])
- for a in 0,1
- for p, norm, extt, trav in (m.details(v+a, w),)
- for sx in 0,1 ])
- if not v % each_v:
+ 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),)