2013-03-05 3 views
1

У меня возникли проблемы с выяснением, пересекаются ли две конечные линии. У меня две конечные линии (A, B), (C, D), и мне нужно проверить, пересекаются ли они. Место не обязательно, потому что если эти два пересекаются, я просто удалю одну из строк. Я знаю, что это можно легко сделать с помощью библиотек Line2D на Java, но я хочу сделать это с нуля.Проверка пересечения двух конечных линий

Я хочу использовать это, чтобы создать карту точек с максимально возможным количеством линий, соединяющих разные точки, но я не хочу никаких пересечений.

Спасибо.

+0

Можете ли вы сделать это вручную? Если нет, вы должны забрать книгу с алгеброй и узнать, как это сделать. –

+6

в 2D все (неограниченные) линии пересекаются, если они не параллельны. Вычислите их точку пересечения, предполагая, что они неограничены, а затем проверьте, находится ли она в пределах. –

+0

обратите внимание, что «карта точек с максимально возможным количеством линий» без пересечений дает триангуляцию http://en.wikipedia.org/wiki/Triangulation_(geometry), наиболее полезной из которых является триангуляция Делоне – Rick

ответ

2

Предлагаю вам сначала научиться делать это вручную. Этапы:

  1. Найти уравнения для обеих линий.

  2. Решите систему двух уравнений с двумя переменными и определите, пересекаются ли линии.

  3. Если шаг 2 дает решение, определите, лежит ли он в двух сегментах линии.

Если вы не понимаете терминологию, которую я использую здесь, я предлагаю вам найти учебник алгебры средней школы или Google для получения дополнительной информации.

Смежные вопросы