/** * @author mrdoob / http://mrdoob.com/ */ export class WireframeGeometry { // THREE.WireframeGeometry = function(geometry) { // THREE.BufferGeometry.call(this); // var edge = [0, 0], hash = {}; // function sortFunction(a, b) { // return a - b; // } // var keys = ['a', 'b', 'c']; // if (geometry instanceof THREE.Geometry) { // var vertices = geometry.vertices; // var faces = geometry.faces; // var numEdges = 0; // // allocate maximal size // var edges = new Uint32Array(6 * faces.length); // for (var i = 0, l = faces.length; i < l; i++) { // var face = faces[i]; // for (var j = 0; j < 3; j++) { // edge[0] = face[keys[j]]; // edge[1] = face[keys[(j + 1) % 3]]; // edge.sort(sortFunction); // var key = edge.toString(); // if (hash[key] === undefined) { // edges[2 * numEdges] = edge[0]; // edges[2 * numEdges + 1] = edge[1]; // hash[key] = true; // numEdges++; // } // } // } // var coords = new Float32Array(numEdges * 2 * 3); // for (var i = 0, l = numEdges; i < l; i++) { // for (var j = 0; j < 2; j++) { // var vertex = vertices[edges[2 * i + j]]; // var index = 6 * i + 3 * j; // coords[index + 0] = vertex.x; // coords[index + 1] = vertex.y; // coords[index + 2] = vertex.z; // } // } // this.addAttribute('position', new THREE.BufferAttribute(coords, 3)); // } else if (geometry instanceof THREE.BufferGeometry) { // if (geometry.index !== null) { // // Indexed BufferGeometry // var indices = geometry.index.array; // var vertices = geometry.attributes.position; // var groups = geometry.groups; // var numEdges = 0; // if (groups.length === 0) { // geometry.addGroup(0, indices.length); // } // // allocate maximal size // var edges = new Uint32Array(2 * indices.length); // for (var o = 0, ol = groups.length; o < ol; ++o) { // var group = groups[o]; // var start = group.start; // var count = group.count; // for (var i = start, il = start + count; i < il; i += 3) { // for (var j = 0; j < 3; j++) { // edge[0] = indices[i + j]; // edge[1] = indices[i + (j + 1) % 3]; // edge.sort(sortFunction); // var key = edge.toString(); // if (hash[key] === undefined) { // edges[2 * numEdges] = edge[0]; // edges[2 * numEdges + 1] = edge[1]; // hash[key] = true; // numEdges++; // } // } // } // } // var coords = new Float32Array(numEdges * 2 * 3); // for (var i = 0, l = numEdges; i < l; i++) { // for (var j = 0; j < 2; j++) { // var index = 6 * i + 3 * j; // var index2 = edges[2 * i + j]; // coords[index + 0] = vertices.getX(index2); // coords[index + 1] = vertices.getY(index2); // coords[index + 2] = vertices.getZ(index2); // } // } // this.addAttribute('position', new THREE.BufferAttribute(coords, 3)); // } else { // // non-indexed BufferGeometry // var vertices = geometry.attributes.position.array; // var numEdges = vertices.length / 3; // var numTris = numEdges / 3; // var coords = new Float32Array(numEdges * 2 * 3); // for (var i = 0, l = numTris; i < l; i++) { // for (var j = 0; j < 3; j++) { // var index = 18 * i + 6 * j; // var index1 = 9 * i + 3 * j; // coords[index + 0] = vertices[index1]; // coords[index + 1] = vertices[index1 + 1]; // coords[index + 2] = vertices[index1 + 2]; // var index2 = 9 * i + 3 * ((j + 1) % 3); // coords[index + 3] = vertices[index2]; // coords[index + 4] = vertices[index2 + 1]; // coords[index + 5] = vertices[index2 + 2]; // } // } // this.addAttribute('position', new THREE.BufferAttribute(coords, 3)); // } // } // }; // THREE.WireframeGeometry.prototype = Object.create(THREE.BufferGeometry.prototype); // THREE.WireframeGeometry.prototype.constructor = THREE.WireframeGeometry; }