示例#1
0
    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);
    }
示例#2
0
 public void SetTangent(HermiteNodeComponent nextNode)
 {
     this.tangent = (nextNode.transform.position - transform.position).normalized;
 }