Example #1
0
 SimpleMesh.prototype.addFaceByVertLoop = function addFaceByVertLoop( verts ) {
     if ( verts.length < 3 || verts.size < 3 ) {
         throw new TypeError('Degenerate vert-loop!');
     }
     var list = [ ...verts ];
     var edges = [];
     var previous = list[0];
     var current;
     var commonEdge;
     for ( var i = 1; i < list.length; i++ ) {
         current = list[i];
         commonEdge = setalg.n( previous.edges, current.edges );
         if ( commonEdge.size < 1 ) {
             throw new TypeError('Degenerate vert-loop!');
         }
         edges.push( [ ...commonEdge ][0] );
         previous = current;
     }
     commonEdge = setalg.n( list[list.length-1].edges, list[0].edges );
     if ( commonEdge.size < 1 ) {
         throw new TypeError('Degenerate vert-loop!');
     }
     edges.push( [ ...commonEdge ][0] );
     return this.addFaceByEdgeLoop( edges, false );
 };
Example #2
0
 SimpleMesh.prototype.addEdgeByVertPair = function addEdgeByVertPair( vert1, vert2, validate ) {
     if ( ( validate || validate === undefined ) && vert1 === vert2 ) {
         throw new TypeError('Degenerate edge!');
     }
     if ( !this.verts.has( vert1.id ) || !this.verts.has( vert2.id ) ) {
         throw new ReferenceError('Vert not in mesh!');
     }
     if ( ( validate || validate === undefined )  && setalg.n(vert1.edges, vert2.edges).size ) {
         throw new ReferenceError('Vert pair already has edge in common!');
     }
     var edge = new Edge();
     edge.vert1 = vert1;
     edge.vert2 = vert2;
     vert1.edges.add( edge );
     vert2.edges.add( edge );
     return Mesh.prototype.addEdge.call( this, edge );
 };