SpriteStudioForUnity.SpriteStudioBaker.GetBezier C# (CSharp) Method

GetBezier() private method

private GetBezier ( Vector2 start, Vector2 controlStart, Vector2 end, Vector2 controlEnd, float point ) : float
start Vector2
controlStart Vector2
end Vector2
controlEnd Vector2
point float
return float
        float GetBezier(Vector2 start, Vector2 controlStart, Vector2 end, Vector2 controlEnd, float point)
        {
            float pointNow = GetLinear (start.x, end.x, point);
            float pointTemp;

            float areaNow = 0.5f;
            float rangeNow = 0.5f;

            float basePow1;
            float basePow2;
            float basePow3;
            float areaNowPow2;
            for (int i=0; i<8; i++) {
                basePow1 = 1.0f - areaNow;
                basePow2 = basePow1 * basePow1;
                basePow3 = basePow2 * basePow1;
                areaNowPow2 = areaNow * areaNow;
                pointTemp = (basePow3 * start.x)
                    + (3.0f * basePow2 * areaNow * (controlStart.x + start.x))
                    + (3.0f * basePow1 * areaNowPow2 * (controlEnd.x + end.x))
                    + (areaNow * areaNowPow2 * end.x);
                rangeNow *= 0.5f;
                areaNow += ((pointTemp > pointNow) ? (-rangeNow) : (rangeNow));
            }

            areaNowPow2 = areaNow * areaNow;
            basePow1 = 1.0f - areaNow;
            basePow2 = basePow1 * basePow1;
            basePow3 = basePow2 * basePow1;
            return((basePow3 * start.y)
                + (3.0f * basePow2 * areaNow * (controlStart.y + start.y))
                + (3.0f * basePow1 * areaNowPow2 * (controlEnd.y + end.y))
                + (areaNow * areaNowPow2 * end.y)
                   );
        }