3 from __future__ import print_function
6 signal.signal(signal.SIGINT, signal.SIG_DFL)
22 so._point_indices = {}
25 def writeout(so, objname, scalefactor=1):
26 print('module %s(){ scale(%s) polyhedron(points=[' %
27 (objname, scalefactor))
28 for p in so._points: print(p, ',')
30 for t in so._triangles: print(repr(t), ',')
31 print('],convexity=10); }')
38 ix = so._point_indices[s]
42 so._point_indices[s] = ix
45 def triangle(so, a,b,c):
46 ''' a b c are clockwise from inside '''
47 so._triangles.append([ so._point(p) for p in (a,b,c) ])
50 ''' cnrs[0] [1] [3] [2] are clockwise from inside '''
51 so.triangle(cnrs[0], cnrs[1], cnrs[3])
52 so.triangle(cnrs[0], cnrs[3], cnrs[2])
55 ''' cnrs[0] [1] [3] [2] are anticlockwise from inside '''
56 so.triangle(cnrs[0], cnrs[3], cnrs[1])
57 so.triangle(cnrs[0], cnrs[2], cnrs[3])
59 relthick = thick/(nomsize*2)
61 def make_moebius(objname):
63 for v in range(0, nv):
64 for w in range(0, nw):
65 so.quad([ m.point_offset(v+a, w+b, relthick)
68 so.rquad([ m.point_offset(v+a, w+b, -relthick)
71 for q, w in ((so.quad, 0), (so.rquad, nw)):
72 q([ m.point_offset(v+a, w, b*relthick)
75 so.writeout(objname, nomsize)
77 make_moebius('MoebiusCore')
79 print('moebiuscore_nomsize=%s;' % repr(nomsize))