Помощь - Поиск - Пользователи - Календарь
Полная версия: Задача про ПЕРЕСЕЧЕНИЕ ОТРЕЗКОВ
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
B
Дано: Два отрезка на плоскости заданы координатами своих концов.
Определить имеют ли ети отрезки общие, НЕ НАХОДЯ ТОЧКУ ПЕРЕСЕЧЕНИЯ (погрешностями пренебречь)

буду очень благодарен, если поможете

заранее спасибо
klem4
Отрезки имеют общие точки, если он НЕ параллельны, тоесть имеют разный угол наклона k к оси ОХ.

Получай уравнения прямых по точкам, а из них уже получай угловые коэфф-ты и сравнивай их.
B
ты немного не понял klem4
это НЕ неограниченные прямые, а отрезки, которые могут располгаться в разных, координатных осях
так что тема с коэфициентом непрокатит (
В
вот пример того как два отрезка параллельны и не пересекаются
TarasBer
Программу за вас писать не буду.
Зная 2 точки на отрезке, нетрудно написать уравнение прямой, содержащей его, в виде Ax+By+C=0 (если отрезок-точка, то получаем уравнение 0=0). В формуле что-то типа A=y1-y2, B=x2-x1, C=x1*y2-x2*y1. После этого в левую часть подставляете концы другого отрезка (получив 2 числа). Если получился одинаковый знак, то отрезки не пересекаются. Если знаки разные - то значит отрезок 2 пересекает прямую, содержащую отрезок 1. Если один из знаков нулевой - то тоже. Если оба знака нулевые - то это отдельный случай, когда оба отрезка расположены на одной прямой.
Потом аналогично делается для другого отрезка. Исходя из полученных ответов определить, пересекаются ли отрезки можно во всех случаях, кроме одного: когда отрезки на одной прямой. В последнем случае надо спроецировать отрезки на ось икс ,если отрезки не параллельны оси игрик, или на ось игрик в противном случае (отбросить одну из координат). После этого уже всё что надо легко узнаётся.
В
Большое спасибо, за ответ !

Только я не совсем понял :
Цитата
Если получился одинаковый знак


одинаковый знак чего ?

з.ы. мож, я тупой какой, таких вещей не понимаю ? )
klem4
Цитата
вот пример того как два отрезка параллельны и не пересекаются


И что по твоему у этих отрезков разный угол наклона к оси ОХ ? dry.gif
В
пусть углы одинаковые, но ведь отрезки не имеют общих точек, не так ли ?
klem4
Цитата
не так ли


Именно так, если углы наклона прямых одинаковые, значит они не пересекаются, следовательно не имеют общих точек, я не могу понять в чем проблема ?
TarasBer
Цитата(В @ 19.02.2007 21:49) *

Большое спасибо, за ответ !

Только я не совсем понял :
одинаковый знак чего ?

з.ы. мож, я тупой какой, таких вещей не понимаю ? )

В выражение Ax+By+C мы подставили икс и игрик для одного конца отрезка - получили одно число, подставили второй конец - получили второе число. Так вот если у этих двух чисел одинаковый знак (типа оба больше нуля или оба меньше нуля) то см. далее.
В
всем спасибо за ответы
1nb0lz
TarasBer, а можно по-подробней с последним случаем, где лежат на одной прямой???
TarasBer
Цитата(1nb0lz @ 20.02.2007 23:31) *

TarasBer, а можно по-подробней с последним случаем, где лежат на одной прямой???

Узнав, на какую из координатных осей пректировать отрезки (см. выше), то есть узнав, какую из координат надо забыть, надо посмотреть 4 оставшихся числа - координаты отрезков, по одной на каждый конец. Сначала надо посмотреть на наибольшее и наименьшее из них ("экстремальные числа"). Если они являются координататми концов одного отрезка, то пересекаются. Если нет, то надо посмотреть на оставшиеся координаты отрезков. Если они стоят наоборот, чем экстремальные концы, то отрезки пересекаются, если нет - то нет.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.