Buckets:
ktongue/docker_container / simsite /frontend /node_modules /three /src /geometries /PlaneGeometry.js
| import { BufferGeometry } from '../core/BufferGeometry.js'; | |
| import { Float32BufferAttribute } from '../core/BufferAttribute.js'; | |
| class PlaneGeometry extends BufferGeometry { | |
| constructor( width = 1, height = 1, widthSegments = 1, heightSegments = 1 ) { | |
| super(); | |
| this.type = 'PlaneGeometry'; | |
| this.parameters = { | |
| width: width, | |
| height: height, | |
| widthSegments: widthSegments, | |
| heightSegments: heightSegments | |
| }; | |
| const width_half = width / 2; | |
| const height_half = height / 2; | |
| const gridX = Math.floor( widthSegments ); | |
| const gridY = Math.floor( heightSegments ); | |
| const gridX1 = gridX + 1; | |
| const gridY1 = gridY + 1; | |
| const segment_width = width / gridX; | |
| const segment_height = height / gridY; | |
| // | |
| const indices = []; | |
| const vertices = []; | |
| const normals = []; | |
| const uvs = []; | |
| for ( let iy = 0; iy < gridY1; iy ++ ) { | |
| const y = iy * segment_height - height_half; | |
| for ( let ix = 0; ix < gridX1; ix ++ ) { | |
| const x = ix * segment_width - width_half; | |
| vertices.push( x, - y, 0 ); | |
| normals.push( 0, 0, 1 ); | |
| uvs.push( ix / gridX ); | |
| uvs.push( 1 - ( iy / gridY ) ); | |
| } | |
| } | |
| for ( let iy = 0; iy < gridY; iy ++ ) { | |
| for ( let ix = 0; ix < gridX; ix ++ ) { | |
| const a = ix + gridX1 * iy; | |
| const b = ix + gridX1 * ( iy + 1 ); | |
| const c = ( ix + 1 ) + gridX1 * ( iy + 1 ); | |
| const d = ( ix + 1 ) + gridX1 * iy; | |
| indices.push( a, b, d ); | |
| indices.push( b, c, d ); | |
| } | |
| } | |
| this.setIndex( indices ); | |
| this.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); | |
| this.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); | |
| this.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); | |
| } | |
| copy( source ) { | |
| super.copy( source ); | |
| this.parameters = Object.assign( {}, source.parameters ); | |
| return this; | |
| } | |
| static fromJSON( data ) { | |
| return new PlaneGeometry( data.width, data.height, data.widthSegments, data.heightSegments ); | |
| } | |
| } | |
| export { PlaneGeometry }; | |
Xet Storage Details
- Size:
- 2 kB
- Xet hash:
- 9e043d5a56981cc4249d69ecd49e1ee4990ad6ac1812ec4953fffafc083aa082
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.