cubicHermite method

V3 cubicHermite(
  1. V3 tangent1,
  2. V3 v2,
  3. V3 tangent2,
  4. double amount,
)

Interpolates along a cubic Hermite spline between this and v2.

tangent1 is the outgoing tangent at this point, tangent2 is the incoming tangent at v2,

Implementation

V3 cubicHermite(V3 tangent1, V3 v2, V3 tangent2, double amount) {
  final p2 = amount*amount;
  final p3 = amount*amount*amount;

  return _v3(
    (2*p3 - 3*p2 + 1)*x + (p3 - 2*p2 + amount)*tangent1.x + (-2*p3 + 3*p2)*v2.x + (p3 - p2)*tangent2.x,
    (2*p3 - 3*p2 + 1)*y + (p3 - 2*p2 + amount)*tangent1.y + (-2*p3 + 3*p2)*v2.y + (p3 - p2)*tangent2.y,
    (2*p3 - 3*p2 + 1)*z + (p3 - 2*p2 + amount)*tangent1.z + (-2*p3 + 3*p2)*v2.z + (p3 - p2)*tangent2.z,
  );
}