private List <Vector2> TwoPointInterpolation(HermiteNodeComponent first, HermiteNodeComponent second) { Vector3 p0, p3; p0 = first.transform.position; p3 = second.transform.position; Vector3 m0 = first.GetTangent() * tangentSize; Vector3 m1 = second.GetTangent() * tangentSize; LineRenderer lineRenderer = GetComponent <LineRenderer>(); List <Vector2> linePoints = new List <Vector2>(); for (int currIndex = 0; currIndex <= bezierLength; currIndex++) { float t = currIndex / (float)bezierLength; var h0_3 = BezierMath.BernsteinPolynomial(0, 3, t) + BezierMath.BernsteinPolynomial(1, 3, t); var h1_3 = BezierMath.BernsteinPolynomial(1, 3, t) * 1 / 3; var h2_3 = -BezierMath.BernsteinPolynomial(2, 3, t) * 1 / 3; var h3_3 = BezierMath.BernsteinPolynomial(3, 3, t) + BezierMath.BernsteinPolynomial(2, 3, t); Vector3 newPoint = h0_3 * p0 + h3_3 * p3 + h1_3 * m0 + h2_3 * m1; linePoints.Add(newPoint); } return(linePoints); }
public void SetTangent(HermiteNodeComponent nextNode) { this.tangent = (nextNode.transform.position - transform.position).normalized; }