IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Задача про ПЕРЕСЕЧЕНИЕ ОТРЕЗКОВ, НЕ могу решить...нет идей...помогите плз
сообщение
Сообщение #1


Гость






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

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

заранее спасибо
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


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

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


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






ты немного не понял klem4
это НЕ неограниченные прямые, а отрезки, которые могут располгаться в разных, координатных осях
так что тема с коэфициентом непрокатит (
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






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


Эскизы прикрепленных изображений
Прикрепленное изображение
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


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


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






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

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


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

з.ы. мож, я тупой какой, таких вещей не понимаю ? )
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


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


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


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






пусть углы одинаковые, но ведь отрезки не имеют общих точек, не так ли ?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


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


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


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


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

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

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

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

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


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Гость






всем спасибо за ответы
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Гость






TarasBer, а можно по-подробней с последним случаем, где лежат на одной прямой???
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


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

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

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


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 21.12.2024 23:25
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name