Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.04.2012, 00:57   #1
bzubzni
 
Регистрация: 23.12.2011
Сообщений: 9
По умолчанию Пересечение отрезка и многоугольника

Здравствуйте! Помогите пожалуйста с алгоритмом, надо на CLIPSе написать. Но я даже не знаю, как именно находить это положение между фигурами.

В трёхмерных координатах заданы прямая (двумя точками) и некоторый замкну-тый пространственный контур (множеством точек, соединённых отрезками, перечислен-ных в определённом порядке обхода). Написать функцию, определяющую положение прямой относительно контура (проходит внутри контура, пересекает контур или лежит вне контура).
bzubzni вне форума Ответить с цитированием
Старый 26.04.2012, 03:39   #2
onewho
Форумчанин
 
Регистрация: 29.09.2010
Сообщений: 636
По умолчанию

мне в голову приходит только проверять все точки прямой - принадлежат ли они многоугольнику ??
соотв-но 3 варианта - все, ни одной, часть.

дико нерационально наверное... но в пространстве как-то сложнее чем в плоскости.
onewho вне форума Ответить с цитированием
Старый 26.04.2012, 16:02   #3
bzubzni
 
Регистрация: 23.12.2011
Сообщений: 9
По умолчанию

вот как можно найти положение прямой и плоскости? и как многоугольник представить в виде плоскости?(
bzubzni вне форума Ответить с цитированием
Старый 27.04.2012, 04:56   #4
Rin
Негодник
Форумчанин
 
Аватар для Rin
 
Регистрация: 10.11.2009
Сообщений: 880
По умолчанию

Попробуйте спросить на этом форуме. Публикуйте в "Помогите решить/разобраться"
Если помог, проси поставить минус. Будь оригинален!
Rin вне форума Ответить с цитированием
Старый 29.04.2012, 19:31   #5
onewho
Форумчанин
 
Регистрация: 29.09.2010
Сообщений: 636
По умолчанию

прямая задается по 2-м точкам, плоскость по 3-м
onewho вне форума Ответить с цитированием
Старый 29.04.2012, 21:10   #6
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Не совсем понятно, что такое контур.
Если все его точки лежат в одной плоскости, то нужно найти точку пересечения прямой и плоскости, проверить, что она лежит внутри отрезка и только в этом случае, выяснять, находится ли точка внутри многоугольника.

В случае произвольной ломаной, боюсь, потребуется алгоритм ее редукции так, чтобы при удалении из нее точки новое ребро лежало "по ту же стоону" от прямой. Другими словами:
- выбираем произвольную точку.
- пытаемся ее удалить так, чтобы треугольник, образуемый этой точкой и соседними не содержал внутри себя точку пересечения прямой с плоскостью треугольника.
- если не получается, эту точку не трогаем, выбираем другую.
- повторяем для всех точек, для которых это возможно.
- если останется нечетное число треугольников - прямая пересекает контур.

Это в качестве предположения - нужно проверять.
s-andriano вне форума Ответить с цитированием
Старый 01.05.2012, 22:37   #7
bzubzni
 
Регистрация: 23.12.2011
Сообщений: 9
По умолчанию

а я и не подумала, что это может быть просто контур, а не плоскость....
но алгоритм мне не совсем понятен(
что тогда будет значить пересечение отрезка и контура? отрезок пересекает одно из ребер?
bzubzni вне форума Ответить с цитированием
Старый 01.05.2012, 23:24   #8
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Насколько я себе представляю, пересечение многоугольника и прямой - это примерно следующее: пусть многоугольник - веревка или цепь, завязанные в кольцо. Если мы потянем за эту веревку и она соскользнет с "прямой" - пересечения нет, а если "зацепится" - есть.
А вот в случае отрезка...
Если перпендикуляры, опущенные из каждой точки многоугольника на прямую, все лежат в пределах отрезка - результат сравнения такой же, как и для прямой. Если все вне - пересечения нет. Если часть в пределах отрезка, а часть - вне, случай сложнее.
Кстати, перпендикуляры, думаю, не обязательны. Достаточно, чтобы существовало две параллельные плоскости такие, чтобы все точки многоугольника лежали между ними, а сами плоскости пересекали прямую обе либо в пределах отрезка, либо за его пределами по одну сторону от отрезка.
s-andriano вне форума Ответить с цитированием
Старый 02.05.2012, 17:29   #9
bzubzni
 
Регистрация: 23.12.2011
Сообщений: 9
По умолчанию

а что если обнулить одну из трех координат и получить проекцию на плоскости? я не наверно работать легче
bzubzni вне форума Ответить с цитированием
Старый 02.05.2012, 20:26   #10
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

ну хорошо, если проекция прямой пройдет в стороне от проекции многоугольника, а если в проекции прямая будет пересекать многоугольник - что тогда?

А Вы знаете, это прекрасная идея, только проецировать нужно не на плоскость параллельную координатным осям, а на плоскость, перпендикулярную отрезку.
Тогда вопрос о пересечении многоугольника с прямой решается достаточно просто, остается подумать, что делать с отрезком.

Последний раз редактировалось s-andriano; 02.05.2012 в 20:29.
s-andriano вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пересечение отрезка и окружности vanek55555 Помощь студентам 5 20.04.2011 19:55
Рисование многоугольника в C# vandrouny C# (си шарп) 3 11.10.2010 23:30
поворот многоугольника в паскале Belii09878 Помощь студентам 3 25.06.2010 16:20
пересечение отрезка с треуголником korolvit Фриланс 8 02.03.2010 08:58
Определение площади многоугольника Bayazet Помощь студентам 5 17.02.2009 12:48