Разные задачи с геометрической составляющей


Точка пересечения

Точка пересечения прямых

a1, b1, c1 - коэффициенты первой прямой,
a2, b2, c2 - коэффициенты второй прямой,
x, y - точка пересечения.

\(x = {-(c1 \cdot b2 - c2 \cdot b1) \over (a1 \cdot b2 - a2 \cdot b1)} \\ y = {-(a1 \cdot c2 - a2 \cdot c1) \over (a1 \cdot b2 - a2 \cdot b1)} \)

Мы уже знаем, как проверять прямые на пересечение (они не параллельны), и находить точку их пересечения.

Теперь научимся делать это с отрезками

Для начала научимся просто проверять их на пересечение.

Отрезки пересекаются, если концы одного находятся по разные стороны от другого и наоборот (это легко проверяется векторным произведением). Единственный случай, когда это не сработает - отрезки лежат на одной прямой. Для него нужно сделать проверку на пересечение т.н. bounding box (ограничивающий прямоугольник отрезка) - проверяем на пересечение проекции отрезков на оси X и Y.

Теперь, когда мы умеем проверять отрезки на пересечение, научимся находить точку (или отрезок) их пересечения:
- если они не пересекаются, то понятно, что такой точки не существует;
- иначе построим прямые, на которых лежат эти отрезки.

Если они параллельны, то отрезки лежат на одной прямой, и нам надо найти отрезок пересечения - от максимальной из левых границ отрезков до минимальной из правых границ (точка меньше другой точки, если она левее, в случае равенства X-координаты - если она ниже).

Если же прямые не параллельны, то найдём точку их пересечения и вернём её.

Эллипс — это замкнутая плоская кривая, сумма расстояний от каждой точки которой до двух точек F1 и F2 равна постоянной величине R. Точки F1 и F2 называют фокусами эллипса. 
Если сумма F1M+F2M < R, то точка M расположена внутри эллипса.
Если сумма F1M+F2M > R, то точка M расположена снаружи эллипса.
Используя метод бинарного поиска можно найти точку пересечения эллипса и отрезка, одна из вершин которого лежит внутри эллипса, а другая снаружи.

Пропустить Навигационные Ссылки.
Чтобы оставить комментарий нужна авторизация