mirror of
https://github.com/wahyd4/three.js.git
synced 2026-08-09 13:06:01 +10:00
Forgotted Spline.js
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
/**
|
||||
* Spline from Tween.js, slightly optimized
|
||||
* http://sole.github.com/tween.js/examples/05_spline.html
|
||||
*
|
||||
* @author mrdoob / http://mrdoob.com/
|
||||
*/
|
||||
|
||||
THREE.Spline = function () {
|
||||
|
||||
var c = [], v3 = { x: 0, y: 0, z: 0 },
|
||||
point, intPoint, weight, w2, w3,
|
||||
pa, pb, pc, pd;
|
||||
|
||||
this.get2DPoint = function ( points, k ) {
|
||||
|
||||
point = ( points.length - 1 ) * k;
|
||||
intPoint = Math.floor( point );
|
||||
weight = point - intPoint;
|
||||
|
||||
c[ 0 ] = intPoint == 0 ? intPoint : intPoint - 1;
|
||||
c[ 1 ] = intPoint;
|
||||
c[ 2 ] = intPoint > points.length - 2 ? intPoint : intPoint + 1;
|
||||
c[ 3 ] = intPoint > points.length - 3 ? intPoint : intPoint + 2;
|
||||
|
||||
pa = points[ c[ 0 ] ];
|
||||
pb = points[ c[ 1 ] ];
|
||||
pc = points[ c[ 2 ] ];
|
||||
pd = points[ c[ 3 ] ];
|
||||
|
||||
w2 = weight * weight;
|
||||
w3 = weight * w2;
|
||||
|
||||
v3.x = interpolate( pa.x, pb.x, pc.x, pd.x, weight, w2, w3 );
|
||||
v3.y = interpolate( pa.y, pb.y, pc.y, pd.y, weight, w2, w3 );
|
||||
v3.z = interpolate( pa.z, pb.z, pc.z, pd.z, weight, w2, w3 );
|
||||
|
||||
return v3;
|
||||
|
||||
}
|
||||
|
||||
// Catmull-Rom
|
||||
|
||||
function interpolate( p0, p1, p2, p3, t, t2, t3 ) {
|
||||
|
||||
var v0 = ( p2 - p0 ) * 0.5,
|
||||
v1 = ( p3 - p1 ) * 0.5;
|
||||
|
||||
return ( 2 * ( p1 - p2 ) + v0 + v1 ) * t3 + ( - 3 * ( p1 - p2 ) - 2 * v0 - v1 ) * t2 + v0 * t + p1;
|
||||
|
||||
}
|
||||
|
||||
};
|
||||
Reference in New Issue
Block a user