示例#1
0
        private Face FindClosestFace(GeoPoint toPoint)
        {
            Face[] near    = faceOcttree.GetObjectsFromBox(new BoundingCube(toPoint, precision));
            double minDist = double.MaxValue;
            Face   found   = null;

            for (int i = 0; i < near.Length; i++)
            {
                GeoPoint2D uv = near[i].Surface.PositionOf(toPoint);
                GeoPoint   p  = near[i].Surface.PointAt(uv);
                double     d  = p | toPoint;
                if (d < minDist)
                {
                    if (near[i].Area.Contains(uv, true))
                    {
                        minDist = d;
                        found   = near[i];
                    }
                }
            }
            return(found);
        }