Buckets:
ktongue/docker_container / simsite /frontend /node_modules /three /src /extras /curves /SplineCurve.js
| import { Curve } from '../core/Curve.js'; | |
| import { CatmullRom } from '../core/Interpolations.js'; | |
| import { Vector2 } from '../../math/Vector2.js'; | |
| class SplineCurve extends Curve { | |
| constructor( points = [] ) { | |
| super(); | |
| this.isSplineCurve = true; | |
| this.type = 'SplineCurve'; | |
| this.points = points; | |
| } | |
| getPoint( t, optionalTarget = new Vector2() ) { | |
| const point = optionalTarget; | |
| const points = this.points; | |
| const p = ( points.length - 1 ) * t; | |
| const intPoint = Math.floor( p ); | |
| const weight = p - intPoint; | |
| const p0 = points[ intPoint === 0 ? intPoint : intPoint - 1 ]; | |
| const p1 = points[ intPoint ]; | |
| const p2 = points[ intPoint > points.length - 2 ? points.length - 1 : intPoint + 1 ]; | |
| const p3 = points[ intPoint > points.length - 3 ? points.length - 1 : intPoint + 2 ]; | |
| point.set( | |
| CatmullRom( weight, p0.x, p1.x, p2.x, p3.x ), | |
| CatmullRom( weight, p0.y, p1.y, p2.y, p3.y ) | |
| ); | |
| return point; | |
| } | |
| copy( source ) { | |
| super.copy( source ); | |
| this.points = []; | |
| for ( let i = 0, l = source.points.length; i < l; i ++ ) { | |
| const point = source.points[ i ]; | |
| this.points.push( point.clone() ); | |
| } | |
| return this; | |
| } | |
| toJSON() { | |
| const data = super.toJSON(); | |
| data.points = []; | |
| for ( let i = 0, l = this.points.length; i < l; i ++ ) { | |
| const point = this.points[ i ]; | |
| data.points.push( point.toArray() ); | |
| } | |
| return data; | |
| } | |
| fromJSON( json ) { | |
| super.fromJSON( json ); | |
| this.points = []; | |
| for ( let i = 0, l = json.points.length; i < l; i ++ ) { | |
| const point = json.points[ i ]; | |
| this.points.push( new Vector2().fromArray( point ) ); | |
| } | |
| return this; | |
| } | |
| } | |
| export { SplineCurve }; | |
Xet Storage Details
- Size:
- 1.68 kB
- Xet hash:
- 824fe89339a002740831af529d12e1cb92cb4aff7c13978076ea70761ea09518
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.