Страницы

Поиск по вопросам

суббота, 20 апреля 2019 г.

Пересечение отрезка и эллипса

Дан отрезок из двух точек А и В (у каждой точки есть координаты).
Дан эллипс (пока что задаю верхней левой точкой, длиной и шириной, но при необходимости эти параметры можно заменить на любые другие).
Задача: узнать пересекаются ли отрезок с эллипсом. Случай, при котором отрезок полностью в эллипсе не удовлетворяет условие.
Помогите, пожалуйста, а то ничего в голову не приходит. Если возможно, то нужен код в java, если нет - дайте решение, а код напишу сам.


Ответ

UPD (исходя из комментария @AnT):
Возможно такое расположение точек и эллипса, при котором обе точки будут лежать вне эллипса, но пересечение будет (одно, в случае, когда прямая, проходящая через заданные точки будет касательной к эллипсу и два в остальных случаях). Этот случай в данном решении не рассмотрен. В общем случае придется-таки решать систему уравнений.

Вариант, с помощью которого не нужно решать уравнения (без использования численных методов):
Пусть задан эллипс:
(x-x0)^2/a^2 + (y-y0)^2/b^2 = 1
, где:
(x0;y0) – координаты центра эллипса; a и b – длины большой и малой полуосей соответственно.
и отрезок AB, где A(x1;y1) и B(x2;y2)
Для того, чтобы отрезок AB пересекал заданный эллипс, необходимо и достаточно, чтобы была верна одна из систем неравенств:
(x1-x0)^2/a^2 + (y1-y0)^2/b^2 < 1 (x2-x0)^2/a^2 + (y2-y0)^2/b^2 > 1
(случай, когда точка A лежит внутри эллипса, а B – вне его);
(x1-x0)^2/a^2 + (y1-y0)^2/b^2 > 1 (x2-x0)^2/a^2 + (y2-y0)^2/b^2 < 1
(случай, когда точка A лежит вне эллипса, а B – внутри его).
Если интересует случай с принадлежностью точек дуге эллипса, то в вышеприведенных системах неравенства будут нестрогие.

Комментариев нет:

Отправить комментарий