public static Vector3 CatmullRom(Vector3 previous,Vector3 start, Vector3 end, Vector3 next, float elapsedTime) { // References used: // p.266 GemsV1 // // tension is often set to 0.5 but you can use any reasonable value: // http://www.cs.cmu.edu/~462/projects/assn2/assn2/catmullRom.pdf // // bias and tension controls: // http://local.wasp.uwa.edu.au/~pbourke/miscellaneous/interpolation/ float percentComplete = elapsedTime; float percentCompleteSquared = percentComplete * percentComplete; float percentCompleteCubed = percentCompleteSquared * percentComplete; /*return previous * (-0.5F*percentCompleteCubed + percentCompleteSquared - tension*percentComplete) + start * ((2-tension) *percentCompleteCubed + (tension - 3)*percentCompleteSquared + 1.0F) + end * ((tension - 2)*percentCompleteCubed + 2.0F *percentCompleteSquared + 0.5F*percentComplete) + next * (0.5F*percentCompleteCubed - tension*percentCompleteSquared);*/ return previous * (-0.5F*percentCompleteCubed + percentCompleteSquared - 0.5F*percentComplete) + start * (1.5F*percentCompleteCubed + -2.5F*percentCompleteSquared + 1.0F) + end * (-1.5F*percentCompleteCubed + 2.0F*percentCompleteSquared + 0.5F*percentComplete) + next * (0.5F*percentCompleteCubed - 0.5F*percentCompleteSquared); }
public static Vector3 CatmullRomOLD(Vector3 previous, Vector3 start, Vector3 end, Vector3 next, float elapsedTime) { return(AstarSplines.CatmullRom(previous, start, end, next, elapsedTime)); }