Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Путь светового луча в среде с крупными частицами, Отсев бесперспективных вариантов. 
:(
    Опции темы
Eustace
Дата 2.6.2007, 22:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



  Суть проблемы такова: имеется некая среда, наполненная разными эллипсоидными частицами с показателем преломления отличным от среды. Частицы достаточно крупные, их число - порядка 20-30. Через среду проходит световой луч (далее Луч). Луч пересекает, преломляясь, одну из частиц и выходит из неё в другой точке. 
     Далее, по идее, надо просчитывать возможность пересечения луча со всеми частицами, отбрасывать случаи с отрицательным дискриминантом в уравнении, из вариантов с действительными корнями выбирать минимальный и т.д. Но так как Лучей может быть пара десятков, всё это грозит обернуться огромными потерями во времени. (Каждый Луч может иметь порядка 20-30 преломлений - в самом плохом случае - на каждом преломлении нужно считать 20-30 дискриминантов, да ещё и самих Лучей много).
  Вопрос: как на каждом преломлении отбросить те частицы, с которыми луч заведомо не сможет пересечься?
  Собственно, я прошу даже не о помощи в решении проблемы, а о квалификации её - в какой области копать?
PM MAIL   Вверх
maxim1000
Дата 2.6.2007, 23:50 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



хм... если в общем, то в головуприходит такое:
1. делим область на части, для которых можно просто проверить, попадёт ли туда луч
2. проверяем каждую и убираем неподходящие

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

так же можно сделать и по y


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


Новичок



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

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



Спасибо. 
У меня даже сложилось такое решение - организовать из частиц дерево по x-координате, дерево по у-координате и дерево по z-координате. При выходе Луча рассматривать только те частицы, которые имеют координату большую, чем у точки выхода (или меньшую, смотря по направлению). Пересечение множеств трех ветвей дерева даст нужные частицы. 
Теперь внимание, вопрос номер два - а не будет ли это дольше? Где посмотреть алгоритмы функции, которая позволяет сказать, что элемент принадлежит множеству?

И повторю свой изначальный вопрос, может, кто ответит - моя задача - это вообще какая область? Куда смотреть?
PM MAIL   Вверх
maxim1000
Дата 4.6.2007, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



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


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


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

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



Цитата(Eustace @  3.6.2007,  19:35 Найти цитируемый пост)
У меня даже сложилось такое решение - организовать из частиц дерево по x-координате, дерево по у-координате и дерево по z-координате.

Посмотри тут
http://graphics.cs.uni-sb.de/Courses/ws0607/cg/Termine.html
насчет kd-trees и подобного... Во втором и третьем pdf'ах точно есть полезная информация.


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Eustace
Дата 4.6.2007, 22:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо. Теперь более-менее понятно, где копать. Буду разбираться.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

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


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

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


 




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


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

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