cascade / static /j2s /J /export /MeshData.js
bobbypaton
Initial CASCADE HF Space deployment
233f6d4
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");
});