Pathfinding.AstarSplines.CatmullRom C# (CSharp) Method

CatmullRom() public static method

public static CatmullRom ( Vector3 previous, Vector3 start, Vector3 end, Vector3 next, float elapsedTime ) : Vector3
previous Vector3
start Vector3
end Vector3
next Vector3
elapsedTime float
return Vector3
		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);
		}
		

Usage Example

Ejemplo n.º 1
0
 public static Vector3 CatmullRomOLD(Vector3 previous, Vector3 start, Vector3 end, Vector3 next, float elapsedTime)
 {
     return(AstarSplines.CatmullRom(previous, start, end, next, elapsedTime));
 }