Exemple #1
0
    //return index of furthest point from vector v
    public int FurthestIndex(Vector2F v)
    {
        int   imax     = -1;
        float dist2max = float.MinValue;

        for (int i = 0; i < points.Length; i++)
        {
            if (dist2max < Vector2F.DistanceSquared(v, points[i]))
            {
                dist2max = Vector2F.DistanceSquared(v, points[i]);
                imax     = i;
            }
        }
        return(imax);
    }
Exemple #2
0
    //return index of nearest point to vector v
    public int NearestIndex(Vector2F v)
    {
        int   imin     = -1;
        float dist2min = float.MaxValue;

        for (int i = 0; i < points.Length; i++)
        {
            if (dist2min > Vector2F.DistanceSquared(v, points[i]))
            {
                dist2min = Vector2F.DistanceSquared(v, points[i]);
                imin     = i;
            }
        }
        return(imin);
    }
Exemple #3
0
    //find closest endpoint to point
    public void find_closest_endpoint(Vector2F point, int start_idx, out int best_idx, out bool best_reverse)
    {
        float best_val = float.MaxValue;

        best_idx     = 0;
        best_reverse = false;
        for (int i = start_idx; i < paths.Count; i++)
        {
            if (best_val > Vector2F.DistanceSquared(point, paths[i].p.First.Value))
            {
                best_val     = Vector2F.DistanceSquared(point, paths[i].p.First.Value);
                best_idx     = i;
                best_reverse = false;
            }
            if (best_val > Vector2F.DistanceSquared(point, paths[i].p.Last.Value))
            {
                best_val     = Vector2F.DistanceSquared(point, paths[i].p.Last.Value);
                best_idx     = i;
                best_reverse = true;
            }
        }
    }