Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Задача про ПЕРЕСЕЧЕНИЕ ОТРЕЗКОВ

Автор: B 20.02.2007 1:10

Дано: Два отрезка на плоскости заданы координатами своих концов.
Определить имеют ли ети отрезки общие, НЕ НАХОДЯ ТОЧКУ ПЕРЕСЕЧЕНИЯ (погрешностями пренебречь)

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

заранее спасибо

Автор: klem4 20.02.2007 1:19

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

Получай уравнения прямых по точкам, а из них уже получай угловые коэфф-ты и сравнивай их.

Автор: B 20.02.2007 1:23

ты немного не понял klem4
это НЕ неограниченные прямые, а отрезки, которые могут располгаться в разных, координатных осях
так что тема с коэфициентом непрокатит (

Автор: В 20.02.2007 1:38

вот пример того как два отрезка параллельны и не пересекаются


Эскизы прикрепленных изображений
Прикрепленное изображение

Автор: TarasBer 20.02.2007 1:40

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

Автор: В 20.02.2007 1:49

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

Только я не совсем понял :

Цитата
Если получился одинаковый знак


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

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

Автор: klem4 20.02.2007 2:21

Цитата
вот пример того как два отрезка параллельны и не пересекаются


И что по твоему у этих отрезков разный угол наклона к оси ОХ ? dry.gif

Автор: В 20.02.2007 2:29

пусть углы одинаковые, но ведь отрезки не имеют общих точек, не так ли ?

Автор: klem4 20.02.2007 2:37

Цитата
не так ли


Именно так, если углы наклона прямых одинаковые, значит они не пересекаются, следовательно не имеют общих точек, я не могу понять в чем проблема ?

Автор: TarasBer 20.02.2007 2:40

Цитата(В @ 19.02.2007 21:49) *

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

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

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

В выражение Ax+By+C мы подставили икс и игрик для одного конца отрезка - получили одно число, подставили второй конец - получили второе число. Так вот если у этих двух чисел одинаковый знак (типа оба больше нуля или оба меньше нуля) то см. далее.

Автор: В 20.02.2007 2:57

всем спасибо за ответы

Автор: 1nb0lz 21.02.2007 3:31

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

Автор: TarasBer 21.02.2007 20:11

Цитата(1nb0lz @ 20.02.2007 23:31) *

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

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