chiark / gitweb /
mesh: much better, still not Valid
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Tue, 7 Nov 2017 16:01:30 +0000 (16:01 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Tue, 7 Nov 2017 16:01:30 +0000 (16:01 +0000)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
meshscad

index 57573ae4d7fd4ab84fe560153ed3403b46fab407..85b03a1f3b0d6804937bc2210031637148701eee 100755 (executable)
--- a/meshscad
+++ b/meshscad
@@ -12,13 +12,13 @@ nomsize = 50;
 wire = 3.0;
 
 # number of wires
-kv = 10
+kv = 20
 kw = 10
 
 # resolution
-nv = 20
-nw = 20
-ns = 8 # around tube, should be even
+nv = 40
+nw = 40
+ns = 32 # around tube, should be even
 
 nv += -nv % kv
 nw += -nw % kw
@@ -36,11 +36,11 @@ def round_wire(p, vec_surfacenormal, vec_acrosswire, sigma):
 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
+  extents = [ ScadObject() for w in range(0,nw) ] # along extents
+  travers = [ ScadObject() for v in range(0,nv) ] # along traverses
 
   def qc(v, w, sigmas, is_trav):
-    print(' QCv,w,T',v,w,is_trav, file=sys.stderr)
+    #print(' QCv,w,T',v,w,is_trav, file=sys.stderr)
     for ab in 0,1:
       p, norm, extt, trav = m.details(v + ab*(not is_trav), w + ab*is_trav)
       for sx in 0,1:
@@ -49,32 +49,32 @@ def make_moebius(objname):
         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)
+        #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 w in range(0, nw+1):
       for s in range(0, ns):
         sigmas = [ (s + sx + 0.)/ns * tau for sx in 0,1 ]
-        print('VWS',v,w,s, sigmas, file=sys.stderr)
+        #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 not v % each_v:
+          extents[w % nw].quad([ cnr for cnr in qc(v,w,sigmas,False) ])
+        if not v % each_v and w < nw:
           travers[v].quad([ cnr for cnr in qc(v,w,sigmas,True) ])
-  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('// extent w=', w)
+    extents[w].writeout_core(nomsize)
+  for v in range(0, nv):
+    print('// travers v=', v)
+    travers[v].writeout_core(nomsize)
   print('}')
 
 make_moebius('MoebiusMesh')