12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- (function() {
- THREE = Bench.THREE;
- // these vertices and triangles are those of a unit icosahedron centered at the origin
- var phi = 1.618;
- var verts = [
- [phi, 1, 0], [-phi, 1, 0], [phi, -1, 0], [-phi, -1, 0],
- [1, 0, phi], [1, 0, -phi], [-1, 0, phi], [-1, 0, -phi],
- [0, phi, 1], [0, -phi, 1], [0, phi, -1], [0, -phi, -1],
- ];
- var createVertex = function(c) {
- return new THREE.Vector3(c[0], c[1], c[2]);
- };
- var createTriangle = function(i0, i1, i2) {
- return new THREE.Triangle(createVertex(verts[i0]), createVertex(verts[i1]), createVertex(verts[i2]));
- };
- var triangles = [
- createTriangle(0, 8, 4),
- createTriangle(0, 5, 10),
- createTriangle(2, 4, 9),
- createTriangle(2, 11, 5),
- createTriangle(1, 6, 8),
- createTriangle(1, 10, 7),
- createTriangle(3, 9, 6),
- createTriangle(3, 7, 11),
- createTriangle(0, 10, 8),
- createTriangle(1, 8, 10),
- createTriangle(2, 9, 11),
- createTriangle(3, 9, 11),
- createTriangle(4, 2, 0),
- createTriangle(5, 0, 2),
- createTriangle(6, 1, 3),
- createTriangle(7, 3, 1),
- createTriangle(8, 6, 4),
- createTriangle(9, 4, 6),
- createTriangle(10, 5, 7),
- createTriangle(11, 7, 5),
- ];
- // test a variety of points all in and around the icosahedron
- var testPoints = [];
- for (var x = -2; x <= 2; x += 0.5) {
- for (var y = -2; y <= 2; y += 0.5) {
- for (var z = -2; z <= 2; z += 0.5) {
- testPoints.push(new THREE.Vector3(x, y, z));
- }
- }
- }
- var s = Bench.newSuite("Clamping point into triangles");
- s.add('9^3 points, 20 triangles', function() {
- var target = new THREE.Vector3();
- for (var tidx = 0; tidx < triangles.length; tidx++) {
- var triangle = triangles[tidx];
- for (var pidx = 0; pidx < testPoints.length; pidx++) {
- triangle.closestPointToPoint(testPoints[pidx], target);
- }
- }
- });
- })();
|