Buckets:
ktongue/docker_container / simsite /frontend /node_modules /three /examples /jsm /geometries /ConvexGeometry.js
| import { | |
| BufferGeometry, | |
| Float32BufferAttribute | |
| } from 'three'; | |
| import { ConvexHull } from '../math/ConvexHull.js'; | |
| class ConvexGeometry extends BufferGeometry { | |
| constructor( points = [] ) { | |
| super(); | |
| // buffers | |
| const vertices = []; | |
| const normals = []; | |
| const convexHull = new ConvexHull().setFromPoints( points ); | |
| // generate vertices and normals | |
| const faces = convexHull.faces; | |
| for ( let i = 0; i < faces.length; i ++ ) { | |
| const face = faces[ i ]; | |
| let edge = face.edge; | |
| // we move along a doubly-connected edge list to access all face points (see HalfEdge docs) | |
| do { | |
| const point = edge.head().point; | |
| vertices.push( point.x, point.y, point.z ); | |
| normals.push( face.normal.x, face.normal.y, face.normal.z ); | |
| edge = edge.next; | |
| } while ( edge !== face.edge ); | |
| } | |
| // build geometry | |
| this.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); | |
| this.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); | |
| } | |
| } | |
| export { ConvexGeometry }; | |
Xet Storage Details
- Size:
- 1.04 kB
- Xet hash:
- 7ffa4c657c4492fd576b55495e24ec52b2bed76f75b00d9eea92e833b87a1db6
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.