Clazz.declarePackage ("J.export"); Clazz.load (null, "J.export.MeshData", ["JU.AU", "$.P3", "$.V3", "JU.MeshSurface"], function () { c$ = Clazz.declareType (J["export"], "MeshData"); c$.getCircleData = Clazz.defineMethod (c$, "getCircleData", function () { var ndeg = 10; var n = Clazz.doubleToInt (360 / ndeg); var vertexCount = n + 1; var faces = JU.AU.newInt2 (n); for (var i = 0; i < n; i++) { faces[i] = Clazz.newIntArray (-1, [i, (i + 1) % n, n]); } var vertexes = new Array (vertexCount); var normals = new Array (vertexCount); for (var i = 0; i < n; i++) { var x = (Math.cos (i * ndeg / 180. * 3.141592653589793)); var y = (Math.sin (i * ndeg / 180. * 3.141592653589793)); vertexes[i] = JU.P3.new3 (x, y, 0); normals[i] = JU.P3.new3 (0, 0, 1); } vertexes[n] = JU.P3.new3 (0, 0, 0); normals[n] = JU.P3.new3 (0, 0, 1); return JU.MeshSurface.newMesh (false, vertexes, 0, faces, normals, 0); }); c$.getTriangleData = Clazz.defineMethod (c$, "getTriangleData", function (pt1, pt2, pt3) { var vertexes = Clazz.newArray (-1, [pt1, pt2, pt3]); var v1 = JU.V3.newVsub (pt3, pt1); var v2 = JU.V3.newVsub (pt2, pt1); v2.cross (v2, v1); v2.normalize (); var normals = Clazz.newArray (-1, [v2, v2, v2]); var faces = Clazz.newArray (-1, [ Clazz.newIntArray (-1, [0, 1, 2])]); return JU.MeshSurface.newMesh (false, vertexes, 0, faces, normals, 0); }, "JU.T3,JU.T3,JU.T3"); c$.getConeData = Clazz.defineMethod (c$, "getConeData", function () { var ndeg = 10; var n = Clazz.doubleToInt (360 / ndeg); var vertices = new Array (n + 1); var faces = JU.AU.newInt2 (n); for (var i = 0; i < n; i++) faces[i] = Clazz.newIntArray (-1, [i, (i + 1) % n, n]); var d = ndeg / 180. * 3.141592653589793; for (var i = 0; i < n; i++) { var x = (Math.cos (i * d)); var y = (Math.sin (i * d)); vertices[i] = JU.P3.new3 (x, y, 0); } vertices[n] = JU.P3.new3 (0, 0, 1); return JU.MeshSurface.newMesh (false, vertices, 0, faces, vertices, 0); }); c$.getCylinderData = Clazz.defineMethod (c$, "getCylinderData", function (inSide) { var ndeg = 10; var vertexCount = Clazz.doubleToInt (360 / ndeg) * 2; var n = Clazz.doubleToInt (vertexCount / 2); var faces = JU.AU.newInt2 (vertexCount); var fpt = -1; for (var i = 0; i < n; i++) { if (inSide) { faces[++fpt] = Clazz.newIntArray (-1, [i + n, (i + 1) % n, i]); faces[++fpt] = Clazz.newIntArray (-1, [i + n, (i + 1) % n + n, (i + 1) % n]); } else { faces[++fpt] = Clazz.newIntArray (-1, [i, (i + 1) % n, i + n]); faces[++fpt] = Clazz.newIntArray (-1, [(i + 1) % n, (i + 1) % n + n, i + n]); }} var vertexes = new Array (vertexCount); var normals = new Array (vertexCount); for (var i = 0; i < n; i++) { var x = (Math.cos (i * ndeg / 180. * 3.141592653589793)); var y = (Math.sin (i * ndeg / 180. * 3.141592653589793)); vertexes[i] = JU.P3.new3 (x, y, 0); normals[i] = JU.P3.new3 (x, y, 0); } for (var i = 0; i < n; i++) { var x = (Math.cos ((i + 0.5) * ndeg / 180 * 3.141592653589793)); var y = (Math.sin ((i + 0.5) * ndeg / 180 * 3.141592653589793)); vertexes[i + n] = JU.P3.new3 (x, y, 1); normals[i + n] = normals[i]; } if (inSide) for (var i = 0; i < n; i++) normals[i].scale (-1); return JU.MeshSurface.newMesh (false, vertexes, 0, faces, normals, 0); }, "~B"); });