예제 #1
0
        public static float MinimumDistance(Segment2D segment, Circle circle)
        {
            if (Segment2D.Intersects(segment, circle))
            {
                return(0);
            }

            // okay this Max *should be* unnecessary, but lets keep it just for sure
            return(FlaiMath.Max(0, Segment2D.MinimumDistance(segment, circle.Position) - circle.Radius));
        }
예제 #2
0
        // yeah... umm, this isn't accurate. and its very slow/brute-force. but whatever, at least it somehow works
        public static float MinimumDistance(Segment2D segment, RectangleF rectangle)
        {
            if (Segment2D.Intersects(segment, rectangle))
            {
                return(0);
            }

            return(FlaiMath.Min(
                       Segment2D.MinimumDistance(segment, rectangle.TopLeft), Segment2D.MinimumDistance(segment, rectangle.TopRight),
                       Segment2D.MinimumDistance(segment, rectangle.BottomLeft), Segment2D.MinimumDistance(segment, rectangle.BottomRight)));
        }
예제 #3
0
        public static float MinimumDistance(Segment2D segment, Vector2f point)
        {
            Vector2f minimumDistancePoint;

            return(Segment2D.MinimumDistance(segment, point, out minimumDistancePoint));
        }
예제 #4
0
 public static bool Intersects(Segment2D segment, Circle circle)
 {
     return(Segment2D.MinimumDistance(segment, circle.Position) < circle.Radius);
 }