/// <summary> /// Returns the float value of the passed <paramref name="alpha"/>. /// </summary> /// <param name="alpha">The CatmullRomAlpha to interpret.</param> public static float CatmullRomAlphaToFloat(CatmullRomAlpha alpha) { switch (alpha) { default: case CatmullRomAlpha.Centripetal: return(0.5f); case CatmullRomAlpha.Chordal: return(1f); case CatmullRomAlpha.Uniform: return(0f); } }
/// <summary> /// /// </summary> /// <param name="position">The positions to use.</param> /// <param name="doWrap">Wrap the provided positions array, else clamp it.</param> /// <param name="index">The index to calculate from.</param> /// <param name="alpha">The Catmull-Rom alpha value.</param> /// <param name="time">The interpolations point to perform, 0f to 1f.</param> public static Vector3 CatmullRomSingle(Vector3[] position, bool doWrap, int index, CatmullRomAlpha alpha, float time) { return(CatmullRomSingle(position, doWrap, index, CatmullRomAlphaToFloat(alpha), time)); }
/// <summary> /// /// </summary> /// <param name="position">The positions to use.</param> /// <param name="doWrap">Wrap the provided positions array, else clamp it.</param> /// <param name="index">The index to calculate from.</param> /// <param name="alpha">The Catmull-Rom alpha value.</param> /// <param name="interpolations">The number of interpolations to perform.</param> public static Vector3[] CatmullRom(Vector3[] position, bool doWrap, int index, CatmullRomAlpha alpha, int interpolations) { return(CatmullRom(position, doWrap, index, CatmullRomAlphaToFloat(alpha), interpolations)); }