Get() public method

public Get ( float t ) : Vector2
t float
return Vector2
Example #1
0
    public static bool IsNearBezierTest(Vector2 p, BezierCurve c, float accuracy, float maxDist)
    {
        Vector2 prepoint = c.Get(0);

        for (float i = accuracy; i < 1; i += accuracy)
        {
            var   point = c.Get(i);
            float d     = (p - point).sqrMagnitude;
            float d2    = (prepoint - point + new Vector2(maxDist, maxDist)).sqrMagnitude;
            if (d <= d2 * 2)
            {
                return(true);
            }
        }

        return(false);
    }
Example #2
0
    public static Vector2 NearestPointOnBezier(Vector2 p, BezierCurve c, float accuracy, bool doubleAc)
    {
        float   minDist = Mathf.Infinity;
        float   minT    = 0;
        Vector2 minP    = Vector2.zero;

        for (float i = 0; i < 1; i += accuracy)
        {
            var   point = c.Get(i);
            float d     = (p - point).sqrMagnitude;
            if (d < minDist)
            {
                minDist = d;
                minT    = i;
                minP    = point;
            }
        }

        if (!doubleAc)
        {
            return(minP);
        }

        float st = Mathf.Clamp01(minT - accuracy);
        float en = Mathf.Clamp01(minT + accuracy);


        for (var i = st; i < en; i += accuracy / 10)
        {
            var point = c.Get(i);
            var d     = (p - point).sqrMagnitude;
            if (d < minDist)
            {
                minDist = d;
                minT    = i;
                minP    = point;
            }
        }


        return(minP);
    }
    public static Vector2 NearestPointOnBezier(Vector2 p, BezierCurve c, float accuracy, bool doubleAc)
    {
        float minDist = Mathf.Infinity;
        float minT = 0;
        Vector2 minP = Vector2.zero;
        for (float i = 0 ;i<1;i+=accuracy) {
        var point  = c.Get (i);
        float d = (p - point).sqrMagnitude;
        if (d<minDist) {
            minDist=d;
            minT = i;
            minP = point;
        }
        }

        if (!doubleAc)
        {
        return minP;
        }

        float st = Mathf.Clamp01 (minT-accuracy);
        float en = Mathf.Clamp01(minT + accuracy);

        for (var i=st;i<en;i+=accuracy/10) {
        var point  = c.Get (i);
        var d= (p - point).sqrMagnitude;
        if (d<minDist) {
            minDist=d;
            minT = i;
            minP = point;
        }
        }

        return minP;
    }
    public static bool IsNearBezierTest(Vector2 p, BezierCurve c, float accuracy, float maxDist)
    {
        Vector2 prepoint = c.Get (0);
        for (float i = accuracy;i<1;i+=accuracy) {
        var point  = c.Get (i);
        float d = (p - point).sqrMagnitude;
        float d2 = (prepoint - point + new Vector2(maxDist,maxDist)).sqrMagnitude;
        if (d<=d2*2) {
            return true;
        }
        }

        return false;
    }