Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Точка пересечения отрезков, нужна помощь :) 
:(
    Опции темы
Proger10
Дата 12.9.2016, 08:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 16.12.2008

Репутация: нет
Всего: нет



У меня такая формула для нахождения пересечения отрезков, заданными координатами: 
x1,y1 - начальная точка первого отрезка
x2,y2 - конечная точка первого
и аналогично для второго: x3, y3 и x4,y4.

Формула:
Код

x = -((x1*y2-x2*y1)*(x4-x3)-(x3*y4-x4*y3)*(x2-x1))/((y1-y2)*(x4-x3)-(y3-y4)*(x2-x1));
y = ((y3-y4)*(-x)-(x3*y4-x4*y3))/(x4-x3);


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

Как работать с этой неопределённостью? Или у меня в формуле ошибка? smile Предварительно я проверяю - существует ли вообще там точка пересечения. 

Может, кто скинет получше алгоритм нахождения точки пересечения? smile
PM MAIL   Вверх
Lipetsk
Дата 12.9.2016, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


в форме ;)
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 28.1.2009
Где: Липецк

Репутация: 2
Всего: 5



больше похоже на формулу точки пересечения прямых заданных двумя точками
PM   Вверх
Akina
Дата 12.9.2016, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 453



Цитата(Proger10 @  12.9.2016,  09:41 Найти цитируемый пост)
Как работать с этой неопределённостью? Или у меня в формуле ошибка? 

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


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Курсант
Дата 14.1.2017, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 338
Регистрация: 21.2.2009
Где: Балашиха или Воро неж

Репутация: нет
Всего: 4



Маленькая поправочка - вычисленная точка пересечения должна лежать на каждом из отрезков.
PM ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.1023 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.