class Geom @gear: -> # glInterleavedArrays (GL_N3F_V3F, 0, gearInterleavedQuads) # glDrawArrays (GL_QUADS, 0, gearNumQuads*4) # glInterleavedArrays (GL_N3F_V3F, 0, gearInterleavedQuadStrips) # for (int i = 0; i < gearNumQuadStrips; i++) # glDrawArrays (GL_QUAD_STRIP, gearQuadStripIndices[i]/6 # (gearQuadStripIndices[i+1] - gearQuadStripIndices[i])/6) quads = @gearInterleavedQuads numQuads = quads.length/24 triangles = numQuads * 2 positions = new Float32Array triangles * 3 * 3 normals = new Float32Array triangles * 3 * 3 pi = -1 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] geom = new THREE.BufferGeometry geom.addAttribute 'position', new THREE.BufferAttribute positions, 3 geom.addAttribute 'normal', new THREE.BufferAttribute normals, 3 geom @gearInterleavedQuads = [ # 1152 = 48 * 24 0.981, 0.195, -0.000, 0.375, 0.155, 0.087, 0.981, 0.195, -0.000, 0.406, -0.000, 0.087, 0.981, 0.195, -0.000, 0.406, -0.000, -0.087, 0.981, 0.195, -0.000, 0.375, 0.155, -0.087, 0.556, 0.831, -0.000, 0.155, 0.375, 0.087, 0.556, 0.831, -0.000, 0.287, 0.287, 0.087, 0.556, 0.831, -0.000, 0.287, 0.287, -0.087, 0.556, 0.831, -0.000, 0.155, 0.375, -0.087, -0.195, 0.981, -0.000,-0.155, 0.375, 0.087, -0.195, 0.981, -0.000, 0.000, 0.406, 0.087, -0.195, 0.981, -0.000, 0.000, 0.406, -0.087, -0.195, 0.981, -0.000,-0.155, 0.375, -0.087, -0.831, 0.556, -0.000,-0.375, 0.155, 0.087, -0.831, 0.556, -0.000,-0.287, 0.287, 0.087, -0.831, 0.556, -0.000,-0.287, 0.287, -0.087, -0.831, 0.556, -0.000,-0.375, 0.155, -0.087, -0.981, -0.195, 0.000,-0.375, -0.155, 0.087, -0.981, -0.195, 0.000,-0.406, 0.000, 0.087, -0.981, -0.195, 0.000,-0.406, 0.000, -0.087, -0.981, -0.195, 0.000,-0.375, -0.155, -0.087, -0.556, -0.831, 0.000,-0.155, -0.375, 0.087, -0.556, -0.831, 0.000,-0.287, -0.287, 0.087, -0.556, -0.831, 0.000,-0.287, -0.287, -0.087, -0.556, -0.831, 0.000,-0.155, -0.375, -0.087, 0.195, -0.981, 0.000, 0.155, -0.375, 0.087, 0.195, -0.981, 0.000,-0.000, -0.406, 0.087, 0.195, -0.981, 0.000,-0.000, -0.406, -0.087, 0.195, -0.981, 0.000, 0.155, -0.375, -0.087, 0.831, -0.556, 0.000, 0.375, -0.155, 0.087, 0.831, -0.556, 0.000, 0.287, -0.287, 0.087, 0.831, -0.556, 0.000, 0.287, -0.287, -0.087, 0.831, -0.556, 0.000, 0.375, -0.155, -0.087, -0.021, -1.000, 0.000, 0.534, -0.159, -0.056, -0.021, -1.000, 0.000, 0.534, -0.159, 0.056, -0.021, -1.000, 0.000, 0.375, -0.155, 0.087, -0.021, -1.000, 0.000, 0.375, -0.155, -0.087, 0.187, -0.037, -0.982, 0.554, -0.058, -0.056, 0.187, -0.037, -0.982, 0.534, -0.159, -0.056, 0.143, -0.046, -0.989, 0.375, -0.155, -0.087, 0.149, -0.012, -0.989, 0.406, -0.000, -0.087, 0.363, 0.932, -0.000, 0.554, -0.058, 0.056, 0.363, 0.932, -0.000, 0.554, -0.058, -0.056, 0.363, 0.932, -0.000, 0.406, -0.000, -0.087, 0.363, 0.932, -0.000, 0.406, -0.000, 0.087, 0.981, -0.195, 0.000, 0.554, -0.058, 0.056, 0.981, -0.195, 0.000, 0.534, -0.159, 0.056, 0.981, -0.195, 0.000, 0.534, -0.159, -0.056, 0.981, -0.195, 0.000, 0.554, -0.058, -0.056, 0.187, -0.037, 0.982, 0.534, -0.159, 0.056, 0.187, -0.037, 0.982, 0.554, -0.058, 0.056, 0.149, -0.012, 0.989, 0.406, -0.000, 0.087, 0.143, -0.046, 0.989, 0.375, -0.155, 0.087, -0.722, -0.692, 0.000, 0.266, -0.490, -0.056, -0.722, -0.692, 0.000, 0.266, -0.490, 0.056, -0.722, -0.692, 0.000, 0.155, -0.375, 0.087, -0.722, -0.692, 0.000, 0.155, -0.375, -0.087, 0.106, -0.159, -0.982, 0.351, -0.433, -0.056, 0.106, -0.159, -0.982, 0.266, -0.490, -0.056, 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.000, 0.351, -0.433, 0.056, 0.916, 0.402, -0.000, 0.351, -0.433, -0.056, 0.916, 0.402, -0.000, 0.287, -0.287, -0.087, 0.916, 0.402, -0.000, 0.287, -0.287, 0.087, 0.556, -0.831, 0.000, 0.351, -0.433, 0.056, 0.556, -0.831, 0.000, 0.266, -0.490, 0.056, 0.556, -0.831, 0.000, 0.266, -0.490, -0.056, 0.556, -0.831, 0.000, 0.351, -0.433, -0.056, 0.106, -0.159, 0.982, 0.266, -0.490, 0.056, 0.106, -0.159, 0.982, 0.351, -0.433, 0.056, 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.000, 0.021, -0.000,-0.159, -0.534, -0.056, -1.000, 0.021, -0.000,-0.159, -0.534, 0.056, -1.000, 0.021, -0.000,-0.155, -0.375, 0.087, -1.000, 0.021, -0.000,-0.155, -0.375, -0.087, -0.037, -0.187, -0.982,-0.058, -0.554, -0.056, -0.037, -0.187, -0.982,-0.159, -0.534, -0.056, -0.046, -0.143, -0.989,-0.155, -0.375, -0.087, -0.012, -0.149, -0.989,-0.000, -0.406, -0.087, 0.932, -0.363, 0.000,-0.058, -0.554, 0.056, 0.932, -0.363, 0.000,-0.058, -0.554, -0.056, 0.932, -0.363, 0.000,-0.000, -0.406, -0.087, 0.932, -0.363, 0.000,-0.000, -0.406, 0.087, -0.195, -0.981, 0.000,-0.058, -0.554, 0.056, -0.195, -0.981, 0.000,-0.159, -0.534, 0.056, -0.195, -0.981, 0.000,-0.159, -0.534, -0.056, -0.195, -0.981, 0.000,-0.058, -0.554, -0.056, -0.037, -0.187, 0.982,-0.159, -0.534, 0.056, -0.037, -0.187, 0.982,-0.058, -0.554, 0.056, -0.012, -0.149, 0.989,-0.000, -0.406, 0.087, -0.046, -0.143, 0.989,-0.155, -0.375, 0.087, -0.692, 0.722, -0.000,-0.490, -0.266, -0.056, -0.692, 0.722, -0.000,-0.490, -0.266, 0.056, -0.692, 0.722, -0.000,-0.375, -0.155, 0.087, -0.692, 0.722, -0.000,-0.375, -0.155, -0.087, -0.159, -0.106, -0.982,-0.433, -0.351, -0.056, -0.159, -0.106, -0.982,-0.490, -0.266, -0.056, -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.000,-0.433, -0.351, 0.056, 0.402, -0.916, 0.000,-0.433, -0.351, -0.056, 0.402, -0.916, 0.000,-0.287, -0.287, -0.087, 0.402, -0.916, 0.000,-0.287, -0.287, 0.087, -0.831, -0.556, 0.000,-0.433, -0.351, 0.056, -0.831, -0.556, 0.000,-0.490, -0.266, 0.056, -0.831, -0.556, 0.000,-0.490, -0.266, -0.056, -0.831, -0.556, 0.000,-0.433, -0.351, -0.056, -0.159, -0.106, 0.982,-0.490, -0.266, 0.056, -0.159, -0.106, 0.982,-0.433, -0.351, 0.056, -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.000, -0.000,-0.534, 0.159, -0.056, 0.021, 1.000, -0.000,-0.534, 0.159, 0.056, 0.021, 1.000, -0.000,-0.375, 0.155, 0.087, 0.021, 1.000, -0.000,-0.375, 0.155, -0.087, -0.187, 0.037, -0.982,-0.554, 0.058, -0.056, -0.187, 0.037, -0.982,-0.534, 0.159, -0.056, -0.143, 0.046, -0.989,-0.375, 0.155, -0.087, -0.149, 0.012, -0.989,-0.406, 0.000, -0.087, -0.363, -0.932, 0.000,-0.554, 0.058, 0.056, -0.363, -0.932, 0.000,-0.554, 0.058, -0.056, -0.363, -0.932, 0.000,-0.406, 0.000, -0.087, -0.363, -0.932, 0.000,-0.406, 0.000, 0.087, -0.981, 0.195, -0.000,-0.554, 0.058, 0.056, -0.981, 0.195, -0.000,-0.534, 0.159, 0.056, -0.981, 0.195, -0.000,-0.534, 0.159, -0.056, -0.981, 0.195, -0.000,-0.554, 0.058, -0.056, -0.187, 0.037, 0.982,-0.534, 0.159, 0.056, -0.187, 0.037, 0.982,-0.554, 0.058, 0.056, -0.149, 0.012, 0.989,-0.406, 0.000, 0.087, -0.143, 0.046, 0.989,-0.375, 0.155, 0.087, 0.722, 0.692, -0.000,-0.266, 0.490, -0.056, 0.722, 0.692, -0.000,-0.266, 0.490, 0.056, 0.722, 0.692, -0.000,-0.155, 0.375, 0.087, 0.722, 0.692, -0.000,-0.155, 0.375, -0.087, -0.106, 0.159, -0.982,-0.351, 0.433, -0.056, -0.106, 0.159, -0.982,-0.266, 0.490, -0.056, -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.000,-0.351, 0.433, 0.056, -0.916, -0.402, 0.000,-0.351, 0.433, -0.056, -0.916, -0.402, 0.000,-0.287, 0.287, -0.087, -0.916, -0.402, 0.000,-0.287, 0.287, 0.087, -0.556, 0.831, -0.000,-0.351, 0.433, 0.056, -0.556, 0.831, -0.000,-0.266, 0.490, 0.056, -0.556, 0.831, -0.000,-0.266, 0.490, -0.056, -0.556, 0.831, -0.000,-0.351, 0.433, -0.056, -0.106, 0.159, 0.982,-0.266, 0.490, 0.056, -0.106, 0.159, 0.982,-0.351, 0.433, 0.056, -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.000, -0.021, 0.000, 0.159, 0.534, -0.056, 1.000, -0.021, 0.000, 0.159, 0.534, 0.056, 1.000, -0.021, 0.000, 0.155, 0.375, 0.087, 1.000, -0.021, 0.000, 0.155, 0.375, -0.087, 0.037, 0.187, -0.982, 0.058, 0.554, -0.056, 0.037, 0.187, -0.982, 0.159, 0.534, -0.056, 0.046, 0.143, -0.989, 0.155, 0.375, -0.087, 0.012, 0.149, -0.989, 0.000, 0.406, -0.087, -0.932, 0.363, -0.000, 0.058, 0.554, 0.056, -0.932, 0.363, -0.000, 0.058, 0.554, -0.056, -0.932, 0.363, -0.000, 0.000, 0.406, -0.087, -0.932, 0.363, -0.000, 0.000, 0.406, 0.087, 0.195, 0.981, -0.000, 0.058, 0.554, 0.056, 0.195, 0.981, -0.000, 0.159, 0.534, 0.056, 0.195, 0.981, -0.000, 0.159, 0.534, -0.056, 0.195, 0.981, -0.000, 0.058, 0.554, -0.056, 0.037, 0.187, 0.982, 0.159, 0.534, 0.056, 0.037, 0.187, 0.982, 0.058, 0.554, 0.056, 0.012, 0.149, 0.989, 0.000, 0.406, 0.087, 0.046, 0.143, 0.989, 0.155, 0.375, 0.087, 0.692, -0.722, 0.000, 0.490, 0.266, -0.056, 0.692, -0.722, 0.000, 0.490, 0.266, 0.056, 0.692, -0.722, 0.000, 0.375, 0.155, 0.087, 0.692, -0.722, 0.000, 0.375, 0.155, -0.087, 0.159, 0.106, -0.982, 0.433, 0.351, -0.056, 0.159, 0.106, -0.982, 0.490, 0.266, -0.056, 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.000, 0.433, 0.351, 0.056, -0.402, 0.916, -0.000, 0.433, 0.351, -0.056, -0.402, 0.916, -0.000, 0.287, 0.287, -0.087, -0.402, 0.916, -0.000, 0.287, 0.287, 0.087, 0.831, 0.556, -0.000, 0.433, 0.351, 0.056, 0.831, 0.556, -0.000, 0.490, 0.266, 0.056, 0.831, 0.556, -0.000, 0.490, 0.266, -0.056, 0.831, 0.556, -0.000, 0.433, 0.351, -0.056, 0.159, 0.106, 0.982, 0.490, 0.266, 0.056, 0.159, 0.106, 0.982, 0.433, 0.351, 0.056, 0.114, 0.097, 0.989, 0.287, 0.287, 0.087, 0.133, 0.069, 0.989, 0.375, 0.155, 0.087] @gearNumQuadStrips = 3 @gearQuadStripIndices = [ 0, 216, 432, 648 ] @gearInterleavedQuadStrips = [ # 648 0.120, -0.050, 0.991, 0.208, -0.086, 0.111, 0.143, -0.046, 0.989, 0.375, -0.155, 0.087, 0.130, 0.000, 0.991, 0.226, 0.000, 0.111, 0.149, -0.012, 0.989, 0.406, -0.000, 0.087, 0.120, 0.050, 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.050, 0.120, 0.991, 0.086, 0.208, 0.111, 0.046, 0.143, 0.989, 0.155, 0.375, 0.087, -0.000, 0.130, 0.991, -0.000, 0.226, 0.111, 0.012, 0.149, 0.989, 0.000, 0.406, 0.087, -0.050, 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.050, 0.991, -0.208, 0.086, 0.111, -0.143, 0.046, 0.989, -0.375, 0.155, 0.087, -0.130, 0.000, 0.991, -0.226, 0.000, 0.111, -0.149, 0.012, 0.989, -0.406, 0.000, 0.087, -0.120, -0.050, 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.050, -0.120, 0.991, -0.086, -0.208, 0.111, -0.046, -0.143, 0.989, -0.155, -0.375, 0.087, 0.000, -0.130, 0.991, 0.000, -0.226, 0.111, -0.012, -0.149, 0.989, -0.000, -0.406, 0.087, 0.050, -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.050, 0.991, 0.208, -0.086, 0.111, 0.143, -0.046, 0.989, 0.375, -0.155, 0.087, 0.130, 0.000, 0.991, 0.226, 0.000, 0.111, 0.149, -0.012, 0.989, 0.406, -0.000, 0.087, -1.000, -0.000, -0.000, 0.226, -0.000, -0.111, -1.000, -0.000, -0.000, 0.226, 0.000, 0.111, -0.924, -0.383, 0.000, 0.208, 0.086, -0.111, -0.924, -0.383, 0.000, 0.208, 0.086, 0.111, -0.707, -0.707, 0.000, 0.160, 0.160, -0.111, -0.707, -0.707, 0.000, 0.160, 0.160, 0.111, -0.383, -0.924, 0.000, 0.086, 0.208, -0.111, -0.383, -0.924, 0.000, 0.086, 0.208, 0.111, 0.000, -1.000, 0.000, -0.000, 0.226, -0.111, 0.000, -1.000, 0.000, -0.000, 0.226, 0.111, 0.383, -0.924, 0.000, -0.086, 0.208, -0.111, 0.383, -0.924, 0.000, -0.086, 0.208, 0.111, 0.707, -0.707, 0.000, -0.160, 0.160, -0.111, 0.707, -0.707, 0.000, -0.160, 0.160, 0.111, 0.924, -0.383, 0.000, -0.208, 0.086, -0.111, 0.924, -0.383, 0.000, -0.208, 0.086, 0.111, 1.000, 0.000, 0.000, -0.226, -0.000, -0.111, 1.000, 0.000, 0.000, -0.226, 0.000, 0.111, 0.924, 0.383, -0.000, -0.208, -0.086, -0.111, 0.924, 0.383, -0.000, -0.208, -0.086, 0.111, 0.707, 0.707, -0.000, -0.160, -0.160, -0.111, 0.707, 0.707, -0.000, -0.160, -0.160, 0.111, 0.383, 0.924, -0.000, -0.086, -0.208, -0.111, 0.383, 0.924, -0.000, -0.086, -0.208, 0.111, -0.000, 1.000, -0.000, 0.000, -0.226, -0.111, -0.000, 1.000, -0.000, 0.000, -0.226, 0.111, -0.383, 0.924, -0.000, 0.086, -0.208, -0.111, -0.383, 0.924, -0.000, 0.086, -0.208, 0.111, -0.707, 0.707, -0.000, 0.160, -0.160, -0.111, -0.707, 0.707, -0.000, 0.160, -0.160, 0.111, -0.924, 0.383, -0.000, 0.208, -0.086, -0.111, -0.924, 0.383, -0.000, 0.208, -0.086, 0.111, -1.000, -0.000, -0.000, 0.226, -0.000, -0.111, -1.000, -0.000, -0.000, 0.226, 0.000, 0.111, -0.924, -0.383, 0.000, 0.208, 0.086, -0.111, -0.924, -0.383, 0.000, 0.208, 0.086, 0.111, 0.149, -0.012, -0.989, 0.406, -0.000, -0.087, 0.130, -0.000, -0.991, 0.226, -0.000, -0.111, 0.133, 0.069, -0.989, 0.375, 0.155, -0.087, 0.120, 0.050, -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.050, 0.120, -0.991, 0.086, 0.208, -0.111, 0.012, 0.149, -0.989, 0.000, 0.406, -0.087, -0.000, 0.130, -0.991, -0.000, 0.226, -0.111, -0.069, 0.133, -0.989, -0.155, 0.375, -0.087, -0.050, 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.050, -0.991, -0.208, 0.086, -0.111, -0.149, 0.012, -0.989, -0.406, 0.000, -0.087, -0.130, -0.000, -0.991, -0.226, -0.000, -0.111, -0.133, -0.069, -0.989, -0.375, -0.155, -0.087, -0.120, -0.050, -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.050, -0.120, -0.991, -0.086, -0.208, -0.111, -0.012, -0.149, -0.989, -0.000, -0.406, -0.087, 0.000, -0.130, -0.991, 0.000, -0.226, -0.111, 0.069, -0.133, -0.989, 0.155, -0.375, -0.087, 0.050, -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.050, -0.991, 0.208, -0.086, -0.111, 0.149, -0.012, -0.989, 0.406, -0.000, -0.087, 0.130, -0.000, -0.991, 0.226, -0.000, -0.111, 0.133, 0.069, -0.989, 0.375, 0.155, -0.087, 0.120, 0.050, -0.991, 0.208, 0.086, -0.111] module.exports = Geom