From 04d78bc0438602dcbb4ad70c444d40546338e202 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Tue, 7 Nov 2017 15:34:35 +0000 Subject: [PATCH] mesh: generates somethinng visible, but it is wrong Signed-off-by: Ian Jackson --- meshscad | 50 +++++++++++++++++++++++++++++++++----------------- 1 file changed, 33 insertions(+), 17 deletions(-) diff --git a/meshscad b/meshscad index c1c81fc..6281a0b 100755 --- a/meshscad +++ b/meshscad @@ -12,13 +12,13 @@ nomsize = 50; 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 @@ -28,12 +28,9 @@ 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): - 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): @@ -41,17 +38,36 @@ 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),) -- 2.30.2