コード例 #1
0
        private static LineSegment2D?ClosestTo(Point pt, ConvexPolygon poly)
        {
            FixedPoint?   closest = null;
            LineSegment2D edge    = default;

            for (var i = 0; i < poly.NumLineSegments; i++)
            {
                var seg  = poly.GetLineSegment(i);
                var dist = CollisionDetector.DetermineClosestPoint(seg, pt);
                if (dist == null)
                {
                    continue;
                }

                if (closest == null || dist.Value.Distance < closest)
                {
                    closest = dist.Value.Distance;
                    edge    = seg;
                }
            }

            if (closest == null)
            {
                return(null);
            }

            return(edge);
        }