Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как определить пересекает ли прямая полигон? 
:(
    Опции темы
Elfet
  Дата 28.5.2007, 11:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

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



Как определить пересекает ли прямая полигон? Если полигон это плоскость заданная тремя вершинами? И если это не плоскость, а мыльная плёнка заданная n-ым количеством вершин?
Заранее спасибо!  smile 


--------------------
PM MAIL WWW Skype   Вверх
maxim1000
Дата 28.5.2007, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



в случае плоскости - определяем точку пересечения прямой с плоскостью и смотрим, входит ли она в полигон (эта задача уже не раз обсуждалась)
в случае с произвольной поверхностью надо смотреть, что за поверхность, так непонятно...


--------------------
qqq
PM WWW   Вверх
Promitheus
Дата 28.5.2007, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



А если "мыльная пленка" , то у неё должно быть уранение поверхности, генерирующая эти точки и далее надо смотреть есть ли общие решения у этой поверхности и прямой. Если же поверхность задаётся n полигонами, то задача сводится найти полигон (если таковой имеется), который пересекает прямая. 
PM MAIL ICQ   Вверх
Elfet
Дата 28.5.2007, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

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



Цитата(maxim1000 @  28.5.2007,  13:55 Найти цитируемый пост)
(эта задача уже не раз обсуждалась)

 smile не нахожу smile

Promitheus, не-а уравнение нет, есть твининг smile


--------------------
PM MAIL WWW Skype   Вверх
Elfet
  Дата 28.5.2007, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

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



Вот что нашёл:
Цитата( Пересечение: Прямая(или отрезок) и плоскость)

Плоскость задана тремя точками, прямая( или отрезок) начальной и конечными точками.

Очевидно, эта задача, как и многие подобные ей, может быть решена путем составления системы. Хотелось бы предложить более геометричный метод, который гораздо удобней в большинстве случаев.

Будем обозначать A,B,C - точки плоскости, X,Y - точки прямой(концы отрезка), SP - скалярное произведение, VP - векторное произведение. O - искомое множество точек пересечения

N = VP ( B - A, C - A )
N = N / | N |  - нормаль к плоскости  // в принципе это можно и не делать
V = A - X
// расстояние до плоскости по нормали
d = SP ( N, V )  
W = Y - X
// приближение к плоскости по нормали при прохождении отрезка
e = SP ( N, W ) 

if( e!=0 )
  O = X + W * d/e;          // одна точка
else if( d==0)
  O =X + W * (anything)     // прямая принадлежит плоскости
else
  O = empty;                // прямая параллельна плоскости

Если хочешь быть уверен, что плоскость пересекает не только прямая, но и отрезок, можно проверить условие SP ( X - O, Y - O ) <=0

Но что-то мне не понятно вот тут: 
Цитата

V = A - X
// расстояние до плоскости по нормали
d = SP ( N, V ) 


Добавлено через 4 минуты и 19 секунд
http://algolist.manual.ru/maths/geom/inter...linefacet3d.php


--------------------
PM MAIL WWW Skype   Вверх
maxim1000
Дата 28.5.2007, 18:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Elfet @  28.5.2007,  17:33 Найти цитируемый пост)
не нахожу

http://forum.vingrad.ru/topic-40818.html


--------------------
qqq
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

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


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

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


 




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


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

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