public static Vector2 Calculate(Vector2 p0, Vector2 p1, Vector2 p2, Vector2 p3, float t) { Vector2 a, b, c, d; float ct = 0; if (t < 1f / 3f) { a = p0; b = p0; c = p1; d = p2; ct = t * 3.0f; } else if (t > 2f / 3f) { a = p1; b = p2; c = p3; d = p3; ct = t * 3.0f - 2.0f; } else { a = p0; b = p1; c = p2; d = p3; ct = t * 3.0f - 1.0f; } return(SplineMaths.CalculateCatmullRom(a, b, c, d, ct)); }
public static Vector3 Calculate(Vector3 p0, Vector3 p1, Vector3 p2, Vector3 p3, float t) { Vector3 a, b, c, d; float ct = 0; if (t < 1f / 3f) { a = p0; b = p0; c = p1; d = p2; ct = t * 3.0f; } else if (t > 2f / 3f) { a = p1; b = p2; c = p3; d = p3; ct = t * 3.0f - 2.0f; } else { a = p0; b = p1; c = p2; d = p3; ct = t * 3.0f - 1.0f; } // return SplineMaths.CalculateHermite(p0, p1, p2, p3, t, -0.80f, 0); // return SplineMaths.CalculateBezierPoint(p0, p1, p2, p3, t); return(SplineMaths.CalculateCatmullRom(a, b, c, d, ct)); }