Как определить координаты точек пересечения прямоугольника и круга - C#

Узнай цену своей работы

Формулировка задачи:

Всем привет Как решить такую задачку....на первый взгляд вроде лёгкая,но как только начал углубляться,то застрял...помогите Заданные три точки на плоскости P1, P2, P3 своими декартовыми координатами - x и y. Точки P1 и P2 задают левый нижний угол и правый верхний угол прямоугольника R1 со сторонами, параллельными осям координат. Точка P3 задает центр окружности радиуса r. Определить, пересекаются ли прямоугольник R1 и круг. Если является сечение, то определить координаты точек пересечения.

Решение задачи: «Как определить координаты точек пересечения прямоугольника и круга»

textual
Листинг программы
        public static void Main(string[] args)
        {
            Point start = new Point(4, 1);
            Point end = new Point(8, 4);
            Point circle = new Point(0, 0);
            double r = 2;
 
            Console.WriteLine(Intersect(start, end, circle, r));
        }
 
        struct Point
        {
            public double x, y;
 
            public Point(double y, double x) : this()
            {
                this.y = y;
                this.x = x;
            }
 
            public static Point operator -(Point p1, Point p2)
            {
                return new Point(p1.x - p2.x, p1.y - p2.y);
            }
        }
 
        private static bool Intersect(Point lineStart, Point lineEnd, Point circleCenter, double radius)
        {
            lineStart -= circleCenter;
            lineEnd -= circleCenter;
 
            Point delta = lineEnd - lineStart;
 
            double a = delta.x*delta.x + delta.y*delta.y;
            double b = 2*(lineStart.x*delta.x + lineStart.y*delta.y);
            double c = lineStart.x*lineStart.x + lineStart.y*lineStart.y - radius*radius;
 
            if (-b < 0) return c < 0;
            if (-b < 2*a) return 4*a*c - b*b < 0;
            return a + b + c < 0;
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.2 из 5
Похожие ответы