# 0000000 00000000 0000000 00 00 # 000 000 000 000 000 000 # 000 0000 0000000 000 000 000000000 # 000 000 000 000 000 000 0 000 # 0000000 00000000 0000000 000 000 log = require '/Users/kodi/s/ko/js/tools/log' Vector = require './lib/vector' class Geom @generator: -> quads = 22+4*8+8*4 triangles = quads*2 positions = new Float32Array triangles*9 normals = new Float32Array triangles*9 pi = -1 pi = @quadList positions, normals, pi, @generatorQuads pi = @quadStrip positions, normals, pi, @generatorQuadStrip1 pi = @quadStrip positions, normals, pi, @generatorQuadStrip2 pi = @quadStrip positions, normals, pi, @generatorQuadStrip3 pi = @quadStrip positions, normals, pi, @generatorQuadStrip4 pi = @quadStrip positions, normals, pi, @generatorQuadStrip5 pi = @quadStrip positions, normals, pi, @generatorQuadStrip6 pi = @quadStrip positions, normals, pi, @generatorQuadStrip7 pi = @quadStrip positions, normals, pi, @generatorQuadStrip8 pi = @quadStrip positions, normals, pi, @generatorQuadStrip9 pi = @quadStrip positions, normals, pi, @generatorQuadStrip10 pi = @quadStrip positions, normals, pi, @generatorQuadStrip11 pi = @quadStrip positions, normals, pi, @generatorQuadStrip12 geom = new THREE.BufferGeometry geom.addAttribute 'position', new THREE.BufferAttribute positions, 3 geom.addAttribute 'normal', new THREE.BufferAttribute normals, 3 geom @valve: -> quads = 6+5*8 triangles = quads*2 positions = new Float32Array triangles*9 normals = new Float32Array triangles*9 pi = -1 pi = @quadList positions, normals, pi, @valveQuads pi = @quadStrip positions, normals, pi, @valveQuadStrip1 pi = @quadStrip positions, normals, pi, @valveQuadStrip2 pi = @quadStrip positions, normals, pi, @valveQuadStrip3 pi = @quadStrip positions, normals, pi, @valveQuadStrip4 pi = @quadStrip positions, normals, pi, @valveQuadStrip5 geom = new THREE.BufferGeometry geom.addAttribute 'position', new THREE.BufferAttribute positions, 3 geom.addAttribute 'normal', new THREE.BufferAttribute normals, 3 geom @gear: -> quads = 48+16*3 triangles = quads*2 positions = new Float32Array triangles*9 normals = new Float32Array triangles*9 pi = -1 pi = @quadList positions, normals, pi, @gearQuads pi = @quadStrip positions, normals, pi, @gearQuadStrip1 pi = @quadStrip positions, normals, pi, @gearQuadStrip2 pi = @quadStrip positions, normals, pi, @gearQuadStrip3 geom = new THREE.BufferGeometry geom.addAttribute 'position', new THREE.BufferAttribute positions, 3 geom.addAttribute 'normal', new THREE.BufferAttribute normals, 3 geom.translate 0,0,0.4 geom @quadList: (positions, normals, pi, quads) -> numQuads = quads.length/24 log "quads #{numQuads}" for q in [0...numQuads] qi = q * 24 for j in [0,1,2,0,2,3] jj = j * 6 for i in [0...3] positions[pi+=1] = quads[qi+jj+i+3] normals[pi] = quads[qi+jj+i] pi @quadStrip: (positions, normals, pi, strip) -> numQuads = strip.length/12-1 log "strip #{numQuads}" for q in [0...numQuads] qi = q * 12 p0 = new Vector strip[qi+0+3], strip[qi+1+3], strip[qi+2+3] p1 = new Vector strip[qi+6+0+3], strip[qi+6+1+3], strip[qi+6+2+3] p2 = new Vector strip[qi+12+0+3], strip[qi+12+1+3], strip[qi+12+2+3] nv = p1.minus(p0).cross(p2.minus(p0)).normal() n = [nv.x, nv.y, nv.z] for j in [0,1,2,2,1,3] jj = j*6 for i in [0...3] positions[pi+=1] = strip[qi+jj+i+3] normals[pi] = n[i] pi # 0000000 00000000 000 000 00000000 00000000 0000000 000000000 0000000 00000000 # 000 000 0000 000 000 000 000 000 000 000 000 000 000 000 # 000 0000 0000000 000 0 000 0000000 0000000 000000000 000 000 000 0000000 # 000 000 000 000 0000 000 000 000 000 000 000 000 000 000 000 # 0000000 00000000 000 000 00000000 000 000 000 000 000 0000000 000 000 @generatorQuads = [ 0.92, 0.39, 0, 0.39, 0.330, 0.155, 0.92, 0.39, 0, 0.5, 0.05, 0.155, 0.92, 0.39, 0, 0.5, 0.05, -0.155, 0.92, 0.39, 0, 0.39, 0.330, -0.155, -0.92, -0.39, 0,-0.39, -0.33, 0.155, -0.92, -0.39, 0,-0.5, -0.038, 0.155, -0.92, -0.39, 0,-0.5, -0.038, -0.155, -0.92, -0.39, 0,-0.39, -0.33, -0.155, 0.92, -0.39, 0, 0.5, -0.038, 0.155, 0.92, -0.39, 0, 0.39, -0.33, 0.155, 0.92, -0.39, 0, 0.39, -0.33, -0.155, 0.92, -0.39, 0, 0.5, -0.038, -0.155, -0.39, 0.92, 0,-0.33, 0.39, 0.155, -0.39, 0.92, 0,-0.05, 0.5, 0.155, -0.39, 0.92, 0,-0.05, 0.5, -0.155, -0.39, 0.92, 0,-0.33, 0.39, -0.155, 0.39, -0.92, 0, 0.33, -0.380, 0.155, 0.39, -0.92, 0, 0.05, -0.5, 0.155, 0.39, -0.92, 0, 0.05, -0.5, -0.155, 0.39, -0.92, 0, 0.33, -0.380, -0.155, 0.39, 0.92, 0, 0.05, 0.5, 0.155, 0.39, 0.92, 0, 0.33, 0.39, 0.155, 0.39, 0.92, 0, 0.33, 0.39, -0.155, 0.39, 0.92, 0, 0.05, 0.5, -0.155, -0.92, 0.39, 0,-0.5, 0.05, 0.155, -0.92, 0.39, 0,-0.39, 0.330, 0.155, -0.92, 0.39, 0,-0.39, 0.330, -0.155, -0.92, 0.39, 0,-0.5, 0.05, -0.155, -0.39, -0.92, 0,-0.05, -0.5, 0.155, -0.39, -0.92, 0,-0.33, -0.380, 0.155, -0.39, -0.92, 0,-0.33, -0.380, -0.155, -0.39, -0.92, 0,-0.05, -0.5, -0.155, -0.92, -0.39, 0, 0.33, 0.05, 0.077, -0.92, -0.39, 0, 0.27, 0.2, 0.077, -0.92, -0.39, 0, 0.27, 0.2, -0.077, -0.92, -0.39, 0, 0.33, 0.05, -0.077, 0.92, 0.39, 0, -0.33, -0.05, 0.077, 0.92, 0.39, 0, -0.27, -0.2, 0.077, 0.92, 0.39, 0, -0.27, -0.2, -0.077, 0.92, 0.39, 0, -0.33, -0.05, -0.077, -0.92, 0.39, 0, 0.27, -0.2, 0.077, -0.92, 0.39, 0, 0.33, -0.05, 0.077, -0.92, 0.39, 0, 0.33, -0.05, -0.077, -0.92, 0.39, 0, 0.27, -0.2, -0.077, 0.39, -0.92, 0, -0.05, 0.33, 0.077, 0.39, -0.92, 0, -0.2, 0.27, 0.077, 0.39, -0.92, 0, -0.2, 0.27, -0.077, 0.39, -0.92, 0, -0.05, 0.33, -0.077, -0.39, 0.92, 0, 0.05, -0.33, 0.077, -0.39, 0.92, 0, 0.2, -0.27, 0.077, -0.39, 0.92, 0, 0.2, -0.27, -0.077, -0.39, 0.92, 0, 0.05, -0.33, -0.077, -0.39, -0.92, 0, 0.2, 0.27, 0.077, -0.39, -0.92, 0, 0.05, 0.33, 0.077, -0.39, -0.92, 0, 0.05, 0.33, -0.077, -0.39, -0.92, 0, 0.2, 0.27, -0.077, 0.92, -0.39, 0, -0.27, 0.2, 0.077, 0.92, -0.39, 0, -0.33, 0.05, 0.077, 0.92, -0.39, 0, -0.33, 0.05, -0.077, 0.92, -0.39, 0, -0.27, 0.2, -0.077, 0.39, 0.92, 0, -0.2, -0.27, 0.077, 0.39, 0.92, 0, -0.05, -0.33, 0.077, 0.39, 0.92, 0, -0.05, -0.33, -0.077, 0.39, 0.92, 0, -0.2, -0.27, -0.077, 0, 0, 1, 0.100, 0, 0.5, 0, 0, 1, 0.071, 0.071, 0.5, 0, 0, 1, 0, 0.100, 0.5, 0, 0, 1, 0.071, -0.071, 0.5, 0, 0, 1,-0.100, 0, 0.5, 0, 0, 1,-0.071, -0.071, 0.5, 0, 0, 1, 0, -0.100, 0.5, 0, 0, 1,-0.071, 0.071, 0.5, 0, 0, 1, 0.071, -0.071, 0.5, 0, 0, 1, 0, 0.100, 0.5, 0, 0, 1,-0.071, 0.071, 0.5, 0, 0, 1, 0, -0.100, 0.5, 0, 0, -1, 0.2, 0, -0.077, 0, 0, -1, 0.141, -0.141, -0.077, 0, 0, -1, 0, -0.2, -0.077, 0, 0, -1, 0.141, 0.141, -0.077, 0, 0, -1,-0.2, 0, -0.077, 0, 0, -1,-0.141, 0.141, -0.077, 0, 0, -1, 0, 0.2, -0.077, 0, 0, -1,-0.141, -0.141, -0.077, 0, 0, -1, 0.141, 0.141, -0.077, 0, 0, -1, 0, -0.2, -0.077, 0, 0, -1,-0.141, -0.141, -0.077, 0, 0, -1, 0, 0.2, -0.077, ] @generatorQuadStrip1 = [ 0.707, 0.707, 0, 0.141, 0.141, -0.077, 0.707, 0.707, 0, 0.141, 0.141, 0.077, 1, 0, 0, 0.200, 0, -0.077, 1, 0, 0, 0.200, 0, 0.077, 0.707, -0.707, 0, 0.141, -0.141, -0.077, 0.707, -0.707, 0, 0.141, -0.141, 0.077, 0, -1, 0, 0, -0.200, -0.077, 0, -1, 0, 0, -0.200, 0.077, -0.707, -0.707, 0, -0.141, -0.141, -0.077, -0.707, -0.707, 0, -0.141, -0.141, 0.077, -1, 0, 0, -0.200, 0, -0.077, -1, 0, 0, -0.200, 0, 0.077, -0.707, 0.707, 0, -0.141, 0.141, -0.077, -0.707, 0.707, 0, -0.141, 0.141, 0.077, 0, 1, 0, 0, 0.200, -0.077, 0, 1, 0, 0, 0.200, 0.077, 0.707, 0.707, 0, 0.141, 0.141, -0.077, 0.707, 0.707, 0, 0.141, 0.141, 0.077, ] @generatorQuadStrip2 = [ 0, 0.710, 0.704, 0, 0.200, 0.077, 0, 0.710, 0.704, 0, 0.059, 0.220, 0.502, 0.502, 0.704, 0.141, 0.141, 0.077, 0.502, 0.502, 0.704, 0.042, 0.042, 0.220, 0.710, 0, 0.704, 0.200, 0, 0.077, 0.710, 0, 0.704, 0.059, 0, 0.220, 0.502, -0.502, 0.704, 0.141, -0.141, 0.077, 0.502, -0.502, 0.704, 0.042, -0.042, 0.220, 0, -0.710, 0.704, 0, -0.200, 0.077, 0, -0.710, 0.704, 0, -0.059, 0.220, -0.502, -0.502, 0.704, -0.141, -0.141, 0.077, -0.502, -0.502, 0.704, -0.042, -0.042, 0.220, -0.710, 0, 0.704, -0.200, 0, 0.077, -0.710, 0, 0.704, -0.059, 0, 0.220, -0.502, 0.502, 0.704, -0.141, 0.141, 0.077, -0.502, 0.502, 0.704, -0.042, 0.042, 0.220, 0, 0.710, 0.704, 0, 0.200, 0.077, 0, 0.710, 0.704, 0, 0.059, 0.220, ] @generatorQuadStrip3 = [ 0, 1, 0, 0, 0.100, 0.354, 0, 1, 0, 0, 0.100, 0.5, 0.707, 0.707, 0, 0.071, 0.071, 0.354, 0.707, 0.707, 0, 0.071, 0.071, 0.5, 1, 0, 0, 0.100, 0, 0.354, 1, 0, 0, 0.100, 0, 0.5, 0.707, -0.707, 0, 0.071, -0.071, 0.354, 0.707, -0.707, 0, 0.071, -0.071, 0.5, 0, -1, 0, 0, -0.100, 0.354, 0, -1, 0, 0, -0.100, 0.5, -0.707, -0.707, 0, -0.071, -0.071, 0.354, -0.707, -0.707, 0, -0.071, -0.071, 0.5, -1, 0, 0, -0.100, 0, 0.354, -1, 0, 0, -0.100, 0, 0.5, -0.707, 0.707, 0, -0.071, 0.071, 0.354, -0.707, 0.707, 0, -0.071, 0.071, 0.5, 0, 1, 0, 0, 0.100, 0.354, 0, 1, 0, 0, 0.100, 0.5, ] @generatorQuadStrip4 = [ 0.676, 0.676, -0.291, 0.042, 0.042, 0.220, 0.676, 0.676, -0.291, 0.071, 0.071, 0.354, 0.957, 0, -0.291, 0.059, 0, 0.220, 0.957, 0, -0.291, 0.100, 0, 0.354, 0.676, -0.676, -0.291, 0.042, -0.042, 0.220, 0.676, -0.676, -0.291, 0.071, -0.071, 0.354, 0, -0.957, -0.291, 0, -0.059, 0.220, 0, -0.957, -0.291, 0, -0.100, 0.354, -0.676, -0.676, -0.291, -0.042, -0.042, 0.220, -0.676, -0.676, -0.291, -0.071, -0.071, 0.354, -0.957, 0, -0.291, -0.059, 0, 0.220, -0.957, 0, -0.291, -0.100, 0, 0.354, -0.676, 0.676, -0.291, -0.042, 0.042, 0.220, -0.676, 0.676, -0.291, -0.071, 0.071, 0.354, 0, 0.957, -0.291, 0, 0.059, 0.220, 0, 0.957, -0.291, 0, 0.100, 0.354, 0.676, 0.676, -0.291, 0.042, 0.042, 0.220, 0.676, 0.676, -0.291, 0.071, 0.071, 0.354, ] @generatorQuadStrip5 = [ 0.756, 0.295, 0.585, -0.05, -0.5, 0.155, 0.756, 0.295, 0.585, -0.05, -0.33, 0.077, -0.326, 0.743, 0.585, -0.33, -0.380, 0.155, -0.326, 0.743, 0.585, -0.2, -0.27, 0.077, -0.326, 0.743, -0.585, -0.33, -0.380, -0.155, -0.326, 0.743, -0.585, -0.2, -0.27, -0.077, 0.756, 0.295, -0.585, -0.05, -0.5, -0.155, 0.756, 0.295, -0.585, -0.05, -0.33, -0.077, 0.756, 0.295, 0.585, -0.05, -0.5, 0.155, 0.756, 0.295, 0.585, -0.05, -0.33, 0.077, ] @generatorQuadStrip6 = [ 0.295, -0.756, 0.585, -0.5, 0.05, 0.155, 0.295, -0.756, 0.585, -0.33, 0.05, 0.077, 0.743, 0.326, 0.585, -0.39, 0.330, 0.155, 0.743, 0.326, 0.585, -0.27, 0.2, 0.077, 0.743, 0.326, -0.585, -0.39, 0.330, -0.155, 0.743, 0.326, -0.585, -0.27, 0.2, -0.077, 0.295, -0.756, -0.585, -0.5, 0.05, -0.155, 0.295, -0.756, -0.585, -0.33, 0.05, -0.077, 0.295, -0.756, 0.585, -0.5, 0.05, 0.155, 0.295, -0.756, 0.585, -0.33, 0.05, 0.077, ] # @generatorQuadStrip7 = [ -0.756, -0.295, 0.585, 0.05, 0.5, 0.155, -0.756, -0.295, 0.585, 0.05, 0.33, 0.077, 0.326, -0.743, 0.585, 0.33, 0.39, 0.155, 0.326, -0.743, 0.585, 0.2, 0.27, 0.077, 0.326, -0.743, -0.585, 0.33, 0.39, -0.155, 0.326, -0.743, -0.585, 0.2, 0.27, -0.077, -0.756, -0.295, -0.585, 0.05, 0.5, -0.155, -0.756, -0.295, -0.585, 0.05, 0.33, -0.077, -0.756, -0.295, 0.585, 0.05, 0.5, 0.155, -0.756, -0.295, 0.585, 0.05, 0.33, 0.077, ] @generatorQuadStrip8 = [ 0.326, 0.743, 0.585, 0.33, -0.380, 0.155, 0.326, 0.743, 0.585, 0.2, -0.27, 0.077, -0.756, 0.295, 0.585, 0.05, -0.5, 0.155, -0.756, 0.295, 0.585, 0.05, -0.33, 0.077, -0.756, 0.295, -0.585, 0.05, -0.5, -0.155, -0.756, 0.295, -0.585, 0.05, -0.33, -0.077, 0.326, 0.743, -0.585, 0.33, -0.380, -0.155, 0.326, 0.743, -0.585, 0.2, -0.27, -0.077, 0.326, 0.743, 0.585, 0.33, -0.380, 0.155, 0.326, 0.743, 0.585, 0.2, -0.27, 0.077, ] @generatorQuadStrip9 = [ -0.326, -0.743, 0.585, -0.33, 0.39, 0.155, -0.326, -0.743, 0.585, -0.2, 0.27, 0.077, 0.756, -0.295, 0.585, -0.05, 0.5, 0.155, 0.756, -0.295, 0.585, -0.05, 0.33, 0.077, 0.756, -0.295, -0.585, -0.05, 0.5, -0.155, 0.756, -0.295, -0.585, -0.05, 0.33, -0.077, -0.326, -0.743, -0.585, -0.33, 0.39, -0.155, -0.326, -0.743, -0.585, -0.2, 0.27, -0.077, -0.326, -0.743, 0.585, -0.33, 0.39, 0.155, -0.326, -0.743, 0.585, -0.2, 0.27, 0.077, ] @generatorQuadStrip10 = [ -0.295, 0.756, 0.585, 0.5, -0.038, 0.155, -0.295, 0.756, 0.585, 0.33, -0.05, 0.077, -0.743, -0.326, 0.585, 0.39, -0.33, 0.155, -0.743, -0.326, 0.585, 0.27, -0.2, 0.077, -0.743, -0.326, -0.585, 0.39, -0.33, -0.155, -0.743, -0.326, -0.585, 0.27, -0.2, -0.077, -0.295, 0.756, -0.585, 0.5, -0.038, -0.155, -0.295, 0.756, -0.585, 0.33, -0.05, -0.077, -0.295, 0.756, 0.585, 0.5, -0.038, 0.155, -0.295, 0.756, 0.585, 0.33, -0.05, 0.077, ] @generatorQuadStrip11 = [ 0.743, -0.326, 0.585, -0.39, -0.33, 0.155, 0.743, -0.326, 0.585, -0.27, -0.2, 0.077, 0.295, 0.756, 0.585, -0.5, -0.038, 0.155, 0.295, 0.756, 0.585, -0.33, -0.05, 0.077, 0.295, 0.756, -0.585, -0.5, -0.038, -0.155, 0.295, 0.756, -0.585, -0.33, -0.05, -0.077, 0.743, -0.326, -0.585, -0.39, -0.33, -0.155, 0.743, -0.326, -0.585, -0.27, -0.2, -0.077, 0.743, -0.326, 0.585, -0.39, -0.33, 0.155, 0.743, -0.326, 0.585, -0.27, -0.2, 0.077, ] @generatorQuadStrip12 = [ -0.743, 0.326, 0.585, 0.39, 0.330, 0.155, -0.743, 0.326, 0.585, 0.27, 0.2, 0.077, -0.295, -0.756, 0.585, 0.5, 0.05, 0.155, -0.295, -0.756, 0.585, 0.33, 0.05, 0.077, -0.295, -0.756, -0.585, 0.5, 0.05, -0.155, -0.295, -0.756, -0.585, 0.33, 0.05, -0.077, -0.743, 0.326, -0.585, 0.39, 0.330, -0.155, -0.743, 0.326, -0.585, 0.27, 0.2, -0.077, -0.743, 0.326, 0.585, 0.39, 0.330, 0.155, -0.743, 0.326, 0.585, 0.27, 0.2, 0.077, ] # 000 000 0000000 000 000 000 00000000 # 000 000 000 000 000 000 000 000 # 000 000 000000000 000 000 000 0000000 # 000 000 000 000 000 000 # 0 000 000 0000000 0 00000000 @valveQuads = [ 0, 0, 1, 0.100, 0, 0.5, 0, 0, 1, 0.071, 0.071, 0.5, 0, 0, 1, 0, 0.100, 0.5, 0, 0, 1, 0.071, -0.071, 0.5, 0, 0, 1,-0.100, 0, 0.5, 0, 0, 1,-0.071, -0.071, 0.5, 0, 0, 1, 0, -0.100, 0.5, 0, 0, 1,-0.071, 0.071, 0.5, 0, 0, 1, 0.071, -0.071, 0.5, 0, 0, 1, 0, 0.100, 0.5, 0, 0, 1,-0.071, 0.071, 0.5, 0, 0, 1, 0, -0.100, 0.5, 0, 0, -1, 0.100, 0, -0.5, 0, 0, -1, 0.071, -0.071, -0.5, 0, 0, -1, 0, -0.100, -0.5, 0, 0, -1, 0.071, 0.071, -0.5, 0, 0, -1,-0.100, 0, -0.5, 0, 0, -1,-0.071, 0.071, -0.5, 0, 0, -1, 0, 0.100, -0.5, 0, 0, -1,-0.071, -0.071, -0.5, 0, 0, -1, 0.071, 0.071, -0.5, 0, 0, -1, 0, -0.100, -0.5, 0, 0, -1,-0.071, -0.071, -0.5, 0, 0, -1, 0, 0.100, -0.5, ] @valveQuadStrip1 = [ 0.673, 0.673, 0.308, 0.071, 0.071, -0.346, 0.673, 0.673, 0.308, 0.042, 0.042, -0.220, 0.951, 0, 0.308, 0.100, 0, -0.346, 0.951, 0, 0.308, 0.059, 0, -0.220, 0.673, -0.673, 0.308, 0.071, -0.071, -0.346, 0.673, -0.673, 0.308, 0.042, -0.042, -0.220, 0, -0.951, 0.308, 0, -0.100, -0.346, 0, -0.951, 0.308, 0, -0.059, -0.220, -0.673, -0.673, 0.308, -0.071, -0.071, -0.346, -0.673, -0.673, 0.308, -0.042, -0.042, -0.220, -0.951, 0, 0.308, -0.100, 0, -0.346, -0.951, 0, 0.308, -0.059, 0, -0.220, -0.673, 0.673, 0.308, -0.071, 0.071, -0.346, -0.673, 0.673, 0.308, -0.042, 0.042, -0.220, 0, 0.951, 0.308, 0, 0.100, -0.346, 0, 0.951, 0.308, 0, 0.059, -0.220, 0.673, 0.673, 0.308, 0.071, 0.071, -0.346, 0.673, 0.673, 0.308, 0.042, 0.042, -0.220 ] @valveQuadStrip2 = [ 0.707, 0.707, 0, 0.042, 0.042, -0.220, 0.707, 0.707, 0, 0.042, 0.042, 0.220, 1, 0, 0, 0.059, 0, -0.220, 1, 0, 0, 0.059, 0, 0.220, 0.707, -0.707, 0, 0.042, -0.042, -0.220, 0.707, -0.707, 0, 0.042, -0.042, 0.220, 0, -1, 0, 0, -0.059, -0.220, 0, -1, 0, 0, -0.059, 0.220, -0.707, -0.707, 0, -0.042, -0.042, -0.220, -0.707, -0.707, 0, -0.042, -0.042, 0.220, -1, 0, 0, -0.059, 0, -0.220, -1, 0, 0, -0.059, 0, 0.220, -0.707, 0.707, 0, -0.042, 0.042, -0.220, -0.707, 0.707, 0, -0.042, 0.042, 0.220, 0, 1, 0, 0, 0.059, -0.220, 0, 1, 0, 0, 0.059, 0.220, 0.707, 0.707, 0, 0.042, 0.042, -0.220, 0.707, 0.707, 0, 0.042, 0.042, 0.220 ] @valveQuadStrip3 = [ 0.707, 0.707, 0, 0.071, 0.071, -0.5, 0.707, 0.707, 0, 0.071, 0.071, -0.346, 1, 0, 0, 0.100, 0, -0.5, 1, 0, 0, 0.100, 0, -0.346, 0.707, -0.707, 0, 0.071, -0.071, -0.5, 0.707, -0.707, 0, 0.071, -0.071, -0.346, 0, -1, 0, 0, -0.100, -0.5, 0, -1, 0, 0, -0.100, -0.346, -0.707, -0.707, 0, -0.071, -0.071, -0.5, -0.707, -0.707, 0, -0.071, -0.071, -0.346, -1, 0, 0, -0.100, 0, -0.5, -1, 0, 0, -0.100, 0, -0.346, -0.707, 0.707, 0, -0.071, 0.071, -0.5, -0.707, 0.707, 0, -0.071, 0.071, -0.346, 0, 1, 0, 0, 0.100, -0.5, 0, 1, 0, 0, 0.100, -0.346, 0.707, 0.707, 0, 0.071, 0.071, -0.5, 0.707, 0.707, 0, 0.071, 0.071, -0.346, ] @valveQuadStrip4 = [ 0, 1, 0, 0, 0.100, 0.354, 0, 1, 0, 0, 0.100, 0.5, 0.707, 0.707, 0, 0.071, 0.071, 0.354, 0.707, 0.707, 0, 0.071, 0.071, 0.5, 1, 0, 0, 0.100, 0, 0.354, 1, 0, 0, 0.100, 0, 0.5, 0.707, -0.707, 0, 0.071, -0.071, 0.354, 0.707, -0.707, 0, 0.071, -0.071, 0.5, 0, -1, 0, 0, -0.100, 0.354, 0, -1, 0, 0, -0.100, 0.5, -0.707, -0.707, 0, -0.071, -0.071, 0.354, -0.707, -0.707, 0, -0.071, -0.071, 0.5, -1, 0, 0, -0.100, 0, 0.354, -1, 0, 0, -0.100, 0, 0.5, -0.707, 0.707, 0, -0.071, 0.071, 0.354, -0.707, 0.707, 0, -0.071, 0.071, 0.5, 0, 1, 0, 0, 0.100, 0.354, 0, 1, 0, 0, 0.100, 0.5, ] @valveQuadStrip5 = [ 0.676, 0.676, -0.291, 0.042, 0.042, 0.220, 0.676, 0.676, -0.291, 0.071, 0.071, 0.354, 0.957, 0, -0.291, 0.059, 0, 0.220, 0.957, 0, -0.291, 0.100, 0, 0.354, 0.676, -0.676, -0.291, 0.042, -0.042, 0.220, 0.676, -0.676, -0.291, 0.071, -0.071, 0.354, 0, -0.957, -0.291, 0, -0.059, 0.220, 0, -0.957, -0.291, 0, -0.100, 0.354, -0.676, -0.676, -0.291, -0.042, -0.042, 0.220, -0.676, -0.676, -0.291, -0.071, -0.071, 0.354, -0.957, 0, -0.291, -0.059, 0, 0.220, -0.957, 0, -0.291, -0.100, 0, 0.354, -0.676, 0.676, -0.291, -0.042, 0.042, 0.220, -0.676, 0.676, -0.291, -0.071, 0.071, 0.354, 0, 0.957, -0.291, 0, 0.059, 0.220, 0, 0.957, -0.291, 0, 0.100, 0.354, 0.676, 0.676, -0.291, 0.042, 0.042, 0.220, 0.676, 0.676, -0.291, 0.071, 0.071, 0.354, ] # 0000000 00000000 0000000 00000000 # 000 000 000 000 000 000 # 000 0000 0000000 000000000 0000000 # 000 000 000 000 000 000 000 # 0000000 00000000 000 000 000 000 @gearQuadStrip1 = [ 0.120, -0.05, 0.991, 0.208, -0.086, 0.111, 0.143, -0.046, 0.989, 0.375, -0.155, 0.087, 0.130, 0, 0.991, 0.226, 0, 0.111, 0.149, -0.012, 0.989, 0.406, 0, 0.087, 0.120, 0.05, 0.991, 0.208, 0.086, 0.111, 0.133, 0.069, 0.989, 0.375, 0.155, 0.087, 0.092, 0.092, 0.991, 0.160, 0.160, 0.111, 0.114, 0.097, 0.989, 0.287, 0.287, 0.087, 0.05, 0.120, 0.991, 0.086, 0.208, 0.111, 0.046, 0.143, 0.989, 0.155, 0.375, 0.087, 0, 0.130, 0.991, 0, 0.226, 0.111, 0.012, 0.149, 0.989, 0, 0.406, 0.087, -0.05, 0.120, 0.991, -0.086, 0.208, 0.111, -0.069, 0.133, 0.989, -0.155, 0.375, 0.087, -0.092, 0.092, 0.991, -0.160, 0.160, 0.111, -0.097, 0.114, 0.989, -0.287, 0.287, 0.087, -0.120, 0.05, 0.991, -0.208, 0.086, 0.111, -0.143, 0.046, 0.989, -0.375, 0.155, 0.087, -0.130, 0, 0.991, -0.226, 0, 0.111, -0.149, 0.012, 0.989, -0.406, 0, 0.087, -0.120, -0.05, 0.991, -0.208, -0.086, 0.111, -0.133, -0.069, 0.989, -0.375, -0.155, 0.087, -0.092, -0.092, 0.991, -0.160, -0.160, 0.111, -0.114, -0.097, 0.989, -0.287, -0.287, 0.087, -0.05, -0.120, 0.991, -0.086, -0.208, 0.111, -0.046, -0.143, 0.989, -0.155, -0.375, 0.087, 0, -0.130, 0.991, 0, -0.226, 0.111, -0.012, -0.149, 0.989, 0, -0.406, 0.087, 0.05, -0.120, 0.991, 0.086, -0.208, 0.111, 0.069, -0.133, 0.989, 0.155, -0.375, 0.087, 0.092, -0.092, 0.991, 0.160, -0.160, 0.111, 0.097, -0.114, 0.989, 0.287, -0.287, 0.087, 0.120, -0.05, 0.991, 0.208, -0.086, 0.111, 0.143, -0.046, 0.989, 0.375, -0.155, 0.087, ] @gearQuadStrip2 = [ -1, 0, 0, 0.226, 0, -0.111, -1, 0, 0, 0.226, 0, 0.111, -0.92, -0.39, 0, 0.208, 0.086, -0.111, -0.92, -0.39, 0, 0.208, 0.086, 0.111, -0.707, -0.707, 0, 0.160, 0.160, -0.111, -0.707, -0.707, 0, 0.160, 0.160, 0.111, -0.39, -0.92, 0, 0.086, 0.208, -0.111, -0.39, -0.92, 0, 0.086, 0.208, 0.111, 0, -1, 0, 0, 0.226, -0.111, 0, -1, 0, 0, 0.226, 0.111, 0.39, -0.92, 0, -0.086, 0.208, -0.111, 0.39, -0.92, 0, -0.086, 0.208, 0.111, 0.707, -0.707, 0, -0.160, 0.160, -0.111, 0.707, -0.707, 0, -0.160, 0.160, 0.111, 0.92, -0.39, 0, -0.208, 0.086, -0.111, 0.92, -0.39, 0, -0.208, 0.086, 0.111, 1, 0, 0, -0.226, 0, -0.111, 1, 0, 0, -0.226, 0, 0.111, 0.92, 0.39, 0, -0.208, -0.086, -0.111, 0.92, 0.39, 0, -0.208, -0.086, 0.111, 0.707, 0.707, 0, -0.160, -0.160, -0.111, 0.707, 0.707, 0, -0.160, -0.160, 0.111, 0.39, 0.92, 0, -0.086, -0.208, -0.111, 0.39, 0.92, 0, -0.086, -0.208, 0.111, 0, 1, 0, 0, -0.226, -0.111, 0, 1, 0, 0, -0.226, 0.111, -0.39, 0.92, 0, 0.086, -0.208, -0.111, -0.39, 0.92, 0, 0.086, -0.208, 0.111, -0.707, 0.707, 0, 0.160, -0.160, -0.111, -0.707, 0.707, 0, 0.160, -0.160, 0.111, -0.92, 0.39, 0, 0.208, -0.086, -0.111, -0.92, 0.39, 0, 0.208, -0.086, 0.111, -1, 0, 0, 0.226, 0, -0.111, -1, 0, 0, 0.226, 0, 0.111, ] @gearQuadStrip3 = [ 0.149, -0.012, -0.989, 0.406, 0, -0.087, 0.130, 0, -0.991, 0.226, 0, -0.111, 0.133, 0.069, -0.989, 0.375, 0.155, -0.087, 0.120, 0.05, -0.991, 0.208, 0.086, -0.111, 0.114, 0.097, -0.989, 0.287, 0.287, -0.087, 0.092, 0.092, -0.991, 0.160, 0.160, -0.111, 0.046, 0.143, -0.989, 0.155, 0.375, -0.087, 0.05, 0.120, -0.991, 0.086, 0.208, -0.111, 0.012, 0.149, -0.989, 0, 0.406, -0.087, 0, 0.130, -0.991, 0, 0.226, -0.111, -0.069, 0.133, -0.989, -0.155, 0.375, -0.087, -0.05, 0.120, -0.991, -0.086, 0.208, -0.111, -0.097, 0.114, -0.989, -0.287, 0.287, -0.087, -0.092, 0.092, -0.991, -0.160, 0.160, -0.111, -0.143, 0.046, -0.989, -0.375, 0.155, -0.087, -0.120, 0.05, -0.991, -0.208, 0.086, -0.111, -0.149, 0.012, -0.989, -0.406, 0, -0.087, -0.130, 0, -0.991, -0.226, 0, -0.111, -0.133, -0.069, -0.989, -0.375, -0.155, -0.087, -0.120, -0.05, -0.991, -0.208, -0.086, -0.111, -0.114, -0.097, -0.989, -0.287, -0.287, -0.087, -0.092, -0.092, -0.991, -0.160, -0.160, -0.111, -0.046, -0.143, -0.989, -0.155, -0.375, -0.087, -0.05, -0.120, -0.991, -0.086, -0.208, -0.111, -0.012, -0.149, -0.989, 0, -0.406, -0.087, 0, -0.130, -0.991, 0, -0.226, -0.111, 0.069, -0.133, -0.989, 0.155, -0.375, -0.087, 0.05, -0.120, -0.991, 0.086, -0.208, -0.111, 0.097, -0.114, -0.989, 0.287, -0.287, -0.087, 0.092, -0.092, -0.991, 0.160, -0.160, -0.111, 0.143, -0.046, -0.989, 0.375, -0.155, -0.087, 0.120, -0.05, -0.991, 0.208, -0.086, -0.111, 0.149, -0.012, -0.989, 0.406, 0, -0.087, 0.130, 0, -0.991, 0.226, 0, -0.111, ] @gearQuads = [ 0.981, 0.2, 0, 0.375, 0.155, 0.087, 0.981, 0.2, 0, 0.406, 0, 0.087, 0.981, 0.2, 0, 0.406, 0, -0.087, 0.981, 0.2, 0, 0.375, 0.155, -0.087, 0.556, 0.831, 0, 0.155, 0.375, 0.087, 0.556, 0.831, 0, 0.287, 0.287, 0.087, 0.556, 0.831, 0, 0.287, 0.287, -0.087, 0.556, 0.831, 0, 0.155, 0.375, -0.087, -0.2, 0.981, 0,-0.155, 0.375, 0.087, -0.2, 0.981, 0, 0, 0.406, 0.087, -0.2, 0.981, 0, 0, 0.406, -0.087, -0.2, 0.981, 0,-0.155, 0.375, -0.087, -0.831, 0.556, 0,-0.375, 0.155, 0.087, -0.831, 0.556, 0,-0.287, 0.287, 0.087, -0.831, 0.556, 0,-0.287, 0.287, -0.087, -0.831, 0.556, 0,-0.375, 0.155, -0.087, -0.981, -0.2, 0,-0.375, -0.155, 0.087, -0.981, -0.2, 0,-0.406, 0, 0.087, -0.981, -0.2, 0,-0.406, 0, -0.087, -0.981, -0.2, 0,-0.375, -0.155, -0.087, -0.556, -0.831, 0,-0.155, -0.375, 0.087, -0.556, -0.831, 0,-0.287, -0.287, 0.087, -0.556, -0.831, 0,-0.287, -0.287, -0.087, -0.556, -0.831, 0,-0.155, -0.375, -0.087, 0.2, -0.981, 0, 0.155, -0.375, 0.087, 0.2, -0.981, 0, 0, -0.406, 0.087, 0.2, -0.981, 0, 0, -0.406, -0.087, 0.2, -0.981, 0, 0.155, -0.375, -0.087, 0.831, -0.556, 0, 0.375, -0.155, 0.087, 0.831, -0.556, 0, 0.287, -0.287, 0.087, 0.831, -0.556, 0, 0.287, -0.287, -0.087, 0.831, -0.556, 0, 0.375, -0.155, -0.087, -0.021, -1, 0, 0.534, -0.159, -0.05, -0.021, -1, 0, 0.534, -0.159, 0.05, -0.021, -1, 0, 0.375, -0.155, 0.087, -0.021, -1, 0, 0.375, -0.155, -0.087, 0.187, -0.037, -0.982, 0.554, -0.058, -0.05, 0.187, -0.037, -0.982, 0.534, -0.159, -0.05, 0.143, -0.046, -0.989, 0.375, -0.155, -0.087, 0.149, -0.012, -0.989, 0.406, 0, -0.087, 0.363, 0.932, 0, 0.554, -0.058, 0.05, 0.363, 0.932, 0, 0.554, -0.058, -0.05, 0.363, 0.932, 0, 0.406, 0, -0.087, 0.363, 0.932, 0, 0.406, 0, 0.087, 0.981, -0.2, 0, 0.554, -0.058, 0.05, 0.981, -0.2, 0, 0.534, -0.159, 0.05, 0.981, -0.2, 0, 0.534, -0.159, -0.05, 0.981, -0.2, 0, 0.554, -0.058, -0.05, 0.187, -0.037, 0.982, 0.534, -0.159, 0.05, 0.187, -0.037, 0.982, 0.554, -0.058, 0.05, 0.149, -0.012, 0.989, 0.406, 0, 0.087, 0.143, -0.046, 0.989, 0.375, -0.155, 0.087, -0.722, -0.692, 0, 0.266, -0.490, -0.05, -0.722, -0.692, 0, 0.266, -0.490, 0.05, -0.722, -0.692, 0, 0.155, -0.375, 0.087, -0.722, -0.692, 0, 0.155, -0.375, -0.087, 0.106, -0.159, -0.982, 0.351, -0.433, -0.05, 0.106, -0.159, -0.982, 0.266, -0.490, -0.05, 0.069, -0.133, -0.989, 0.155, -0.375, -0.087, 0.097, -0.114, -0.989, 0.287, -0.287, -0.087, 0.916, 0.402, 0, 0.351, -0.433, 0.05, 0.916, 0.402, 0, 0.351, -0.433, -0.05, 0.916, 0.402, 0, 0.287, -0.287, -0.087, 0.916, 0.402, 0, 0.287, -0.287, 0.087, 0.556, -0.831, 0, 0.351, -0.433, 0.05, 0.556, -0.831, 0, 0.266, -0.490, 0.05, 0.556, -0.831, 0, 0.266, -0.490, -0.05, 0.556, -0.831, 0, 0.351, -0.433, -0.05, 0.106, -0.159, 0.982, 0.266, -0.490, 0.05, 0.106, -0.159, 0.982, 0.351, -0.433, 0.05, 0.097, -0.114, 0.989, 0.287, -0.287, 0.087, 0.069, -0.133, 0.989, 0.155, -0.375, 0.087, -1, 0.021, 0,-0.159, -0.534, -0.05, -1, 0.021, 0,-0.159, -0.534, 0.05, -1, 0.021, 0,-0.155, -0.375, 0.087, -1, 0.021, 0,-0.155, -0.375, -0.087, -0.037, -0.187, -0.982,-0.058, -0.554, -0.05, -0.037, -0.187, -0.982,-0.159, -0.534, -0.05, -0.046, -0.143, -0.989,-0.155, -0.375, -0.087, -0.012, -0.149, -0.989, 0, -0.406, -0.087, 0.932, -0.363, 0,-0.058, -0.554, 0.05, 0.932, -0.363, 0,-0.058, -0.554, -0.05, 0.932, -0.363, 0, 0, -0.406, -0.087, 0.932, -0.363, 0, 0, -0.406, 0.087, -0.2, -0.981, 0,-0.058, -0.554, 0.05, -0.2, -0.981, 0,-0.159, -0.534, 0.05, -0.2, -0.981, 0,-0.159, -0.534, -0.05, -0.2, -0.981, 0,-0.058, -0.554, -0.05, -0.037, -0.187, 0.982,-0.159, -0.534, 0.05, -0.037, -0.187, 0.982,-0.058, -0.554, 0.05, -0.012, -0.149, 0.989, 0, -0.406, 0.087, -0.046, -0.143, 0.989,-0.155, -0.375, 0.087, -0.692, 0.722, 0,-0.490, -0.266, -0.05, -0.692, 0.722, 0,-0.490, -0.266, 0.05, -0.692, 0.722, 0,-0.375, -0.155, 0.087, -0.692, 0.722, 0,-0.375, -0.155, -0.087, -0.159, -0.106, -0.982,-0.433, -0.351, -0.05, -0.159, -0.106, -0.982,-0.490, -0.266, -0.05, -0.133, -0.069, -0.989,-0.375, -0.155, -0.087, -0.114, -0.097, -0.989,-0.287, -0.287, -0.087, 0.402, -0.916, 0,-0.433, -0.351, 0.05, 0.402, -0.916, 0,-0.433, -0.351, -0.05, 0.402, -0.916, 0,-0.287, -0.287, -0.087, 0.402, -0.916, 0,-0.287, -0.287, 0.087, -0.831, -0.556, 0,-0.433, -0.351, 0.05, -0.831, -0.556, 0,-0.490, -0.266, 0.05, -0.831, -0.556, 0,-0.490, -0.266, -0.05, -0.831, -0.556, 0,-0.433, -0.351, -0.05, -0.159, -0.106, 0.982,-0.490, -0.266, 0.05, -0.159, -0.106, 0.982,-0.433, -0.351, 0.05, -0.114, -0.097, 0.989,-0.287, -0.287, 0.087, -0.133, -0.069, 0.989,-0.375, -0.155, 0.087, 0.021, 1, 0,-0.534, 0.159, -0.05, 0.021, 1, 0,-0.534, 0.159, 0.05, 0.021, 1, 0,-0.375, 0.155, 0.087, 0.021, 1, 0,-0.375, 0.155, -0.087, -0.187, 0.037, -0.982,-0.554, 0.058, -0.05, -0.187, 0.037, -0.982,-0.534, 0.159, -0.05, -0.143, 0.046, -0.989,-0.375, 0.155, -0.087, -0.149, 0.012, -0.989,-0.406, 0, -0.087, -0.363, -0.932, 0,-0.554, 0.058, 0.05, -0.363, -0.932, 0,-0.554, 0.058, -0.05, -0.363, -0.932, 0,-0.406, 0, -0.087, -0.363, -0.932, 0,-0.406, 0, 0.087, -0.981, 0.2, 0,-0.554, 0.058, 0.05, -0.981, 0.2, 0,-0.534, 0.159, 0.05, -0.981, 0.2, 0,-0.534, 0.159, -0.05, -0.981, 0.2, 0,-0.554, 0.058, -0.05, -0.187, 0.037, 0.982,-0.534, 0.159, 0.05, -0.187, 0.037, 0.982,-0.554, 0.058, 0.05, -0.149, 0.012, 0.989,-0.406, 0, 0.087, -0.143, 0.046, 0.989,-0.375, 0.155, 0.087, 0.722, 0.692, 0,-0.266, 0.490, -0.05, 0.722, 0.692, 0,-0.266, 0.490, 0.05, 0.722, 0.692, 0,-0.155, 0.375, 0.087, 0.722, 0.692, 0,-0.155, 0.375, -0.087, -0.106, 0.159, -0.982,-0.351, 0.433, -0.05, -0.106, 0.159, -0.982,-0.266, 0.490, -0.05, -0.069, 0.133, -0.989,-0.155, 0.375, -0.087, -0.097, 0.114, -0.989,-0.287, 0.287, -0.087, -0.916, -0.402, 0,-0.351, 0.433, 0.05, -0.916, -0.402, 0,-0.351, 0.433, -0.05, -0.916, -0.402, 0,-0.287, 0.287, -0.087, -0.916, -0.402, 0,-0.287, 0.287, 0.087, -0.556, 0.831, 0,-0.351, 0.433, 0.05, -0.556, 0.831, 0,-0.266, 0.490, 0.05, -0.556, 0.831, 0,-0.266, 0.490, -0.05, -0.556, 0.831, 0,-0.351, 0.433, -0.05, -0.106, 0.159, 0.982,-0.266, 0.490, 0.05, -0.106, 0.159, 0.982,-0.351, 0.433, 0.05, -0.097, 0.114, 0.989,-0.287, 0.287, 0.087, -0.069, 0.133, 0.989,-0.155, 0.375, 0.087, 1, -0.021, 0, 0.159, 0.534, -0.05, 1, -0.021, 0, 0.159, 0.534, 0.05, 1, -0.021, 0, 0.155, 0.375, 0.087, 1, -0.021, 0, 0.155, 0.375, -0.087, 0.037, 0.187, -0.982, 0.058, 0.554, -0.05, 0.037, 0.187, -0.982, 0.159, 0.534, -0.05, 0.046, 0.143, -0.989, 0.155, 0.375, -0.087, 0.012, 0.149, -0.989, 0, 0.406, -0.087, -0.932, 0.363, 0, 0.058, 0.554, 0.05, -0.932, 0.363, 0, 0.058, 0.554, -0.05, -0.932, 0.363, 0, 0, 0.406, -0.087, -0.932, 0.363, 0, 0, 0.406, 0.087, 0.2, 0.981, 0, 0.058, 0.554, 0.05, 0.2, 0.981, 0, 0.159, 0.534, 0.05, 0.2, 0.981, 0, 0.159, 0.534, -0.05, 0.2, 0.981, 0, 0.058, 0.554, -0.05, 0.037, 0.187, 0.982, 0.159, 0.534, 0.05, 0.037, 0.187, 0.982, 0.058, 0.554, 0.05, 0.012, 0.149, 0.989, 0, 0.406, 0.087, 0.046, 0.143, 0.989, 0.155, 0.375, 0.087, 0.692, -0.722, 0, 0.490, 0.266, -0.05, 0.692, -0.722, 0, 0.490, 0.266, 0.05, 0.692, -0.722, 0, 0.375, 0.155, 0.087, 0.692, -0.722, 0, 0.375, 0.155, -0.087, 0.159, 0.106, -0.982, 0.433, 0.351, -0.05, 0.159, 0.106, -0.982, 0.490, 0.266, -0.05, 0.133, 0.069, -0.989, 0.375, 0.155, -0.087, 0.114, 0.097, -0.989, 0.287, 0.287, -0.087, -0.402, 0.916, 0, 0.433, 0.351, 0.05, -0.402, 0.916, 0, 0.433, 0.351, -0.05, -0.402, 0.916, 0, 0.287, 0.287, -0.087, -0.402, 0.916, 0, 0.287, 0.287, 0.087, 0.831, 0.556, 0, 0.433, 0.351, 0.05, 0.831, 0.556, 0, 0.490, 0.266, 0.05, 0.831, 0.556, 0, 0.490, 0.266, -0.05, 0.831, 0.556, 0, 0.433, 0.351, -0.05, 0.159, 0.106, 0.982, 0.490, 0.266, 0.05, 0.159, 0.106, 0.982, 0.433, 0.351, 0.05, 0.114, 0.097, 0.989, 0.287, 0.287, 0.087, 0.133, 0.069, 0.989, 0.375, 0.155, 0.087 ] module.exports = Geom