Warning, file /education/kstars/kstars/libtess/src/tessellate.js was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001 tessellate = (function() { 0002 0003 var c_tessellate = Module.cwrap('tessellate', 'void', ['number', 'number', 'number', 0004 'number', 'number', 'number']); 0005 var tessellate = function(loops) 0006 { 0007 var i; 0008 if (loops.length === 0) 0009 throw "Expected at least one loop"; 0010 0011 var vertices = []; 0012 var boundaries = [0]; 0013 0014 for (var l=0; l<loops.length; ++l) { 0015 var loop = loops[l]; 0016 if (loop.length % 2 !== 0) 0017 throw "Expected even number of coordinates"; 0018 vertices.push.apply(vertices, loop); 0019 boundaries.push(vertices.length); 0020 } 0021 0022 var p = Module._malloc(vertices.length * 8); 0023 0024 for (i=0; i<vertices.length; ++i) 0025 Module.setValue(p+i*8, vertices[i], "double"); 0026 0027 var contours = Module._malloc(boundaries.length * 4); 0028 for (i=0; i<boundaries.length; ++i) 0029 Module.setValue(contours + 4 * i, p + 8 * boundaries[i], 'i32'); 0030 0031 var ppcoordinates_out = Module._malloc(4); 0032 var pptris_out = Module._malloc(4); 0033 var pnverts = Module._malloc(4); 0034 var pntris = Module._malloc(4); 0035 0036 c_tessellate(ppcoordinates_out, pnverts, pptris_out, pntris, 0037 contours, contours+4*boundaries.length); 0038 0039 var pcoordinates_out = Module.getValue(ppcoordinates_out, 'i32'); 0040 var ptris_out = Module.getValue(pptris_out, 'i32'); 0041 0042 var nverts = Module.getValue(pnverts, 'i32'); 0043 var ntris = Module.getValue(pntris, 'i32'); 0044 0045 var result_vertices = new Float64Array(nverts * 2); 0046 var result_triangles = new Int32Array(ntris * 3); 0047 0048 for (i=0; i<2*nverts; ++i) { 0049 result_vertices[i] = Module.getValue(pcoordinates_out + i*8, 'double'); 0050 } 0051 for (i=0; i<3*ntris; ++i) { 0052 result_triangles[i] = Module.getValue(ptris_out + i*4, 'i32'); 0053 } 0054 Module._free(pnverts); 0055 Module._free(pntris); 0056 Module._free(ppcoordinates_out); 0057 Module._free(pptris_out); 0058 Module._free(pcoordinates_out); 0059 Module._free(ptris_out); 0060 Module._free(p); 0061 Module._free(contours); 0062 return { 0063 vertices: result_vertices, 0064 triangles: result_triangles 0065 }; 0066 }; 0067 0068 return tessellate; 0069 0070 })();