2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки





Начать новую тему Ответить на тему
 
 C++, трассировка лучей: динамическая дискретизация
Сообщение01.03.2017, 22:20 
Аватара пользователя


31/12/13
107
Моделируется воздействие осколочного поля на некий объект, представленный геометрическими примитивами.
Поле в данный момент задаётся множеством векторов — направлений разлёта. Каждое направление разлёта — маленький участок пространства в который разлетается поток осколков с некоторой плотностью и скоростью. Сейчас количество направлений разлёта постоянно. Имеем overkill на малых расстояниях: в предельном случае тестируем все направления. И недостаток разрешения на очень больших расстояниях. Дополнительно есть ускоряющая структура типа quad tree, которая позволяет быстро отбросить большую часть лучей на больших дистанциях основываясь на их угловых координатах (зенитный и азимутальный углы).
Думается, что улучшить код можно изменяя дискретизацию поля(количество направлений разлёта) в зависимости от расстояния до трассируемого объекта: если цель в 100 метрах от точки подрыва, то генерируешь очень подробную сетку в очень маленьком телесном угле в направлении цели. Если объект совсем рядом, генерируешь сетку с меньшим разрешением но в большем телесном угле.
В таком случае направление разлёта уже не представить вектором, это некая площадная фигура(разлетается в неком телесном угле), иначе как его доразбивать.
Как это сделать? С учётом того, что ускоряющую структуру придётся оставить, ведь чаще всего объект занимает очень маленький телесный угол. Получается, доразбитые направления нужно заново погружать в quad tree, чтобы не трассировать их все, а только часть.

 Профиль  
                  
 
 Re: C++, трассировка лучей: динамическая дискретизация
Сообщение05.03.2017, 18:04 
Аватара пользователя


07/02/12
1026
Питер
А если натянуть сетку на шар-360, и трассировать ячейки квадро-деревом, уходя в глубину только в там, где плотность потока влезает в допустимое окно, остальное обрезать? Где слишком большой поток (близко) - все убито, трассировать (уточнять детализацию) не за чем. Где слишком маленький (слишком далеко) - все цело, тоже дальше трассировать не за чем. Плюс всякие костыли с зенитными углами.

 Профиль  
                  
 
 Re: C++, трассировка лучей: динамическая дискретизация
Сообщение05.03.2017, 19:34 
Аватара пользователя


08/08/14
951
Москва
А может трассировать по поверхности цели, какая плотность осколков поилетит сюда.

 Профиль  
                  
 
 Re: C++, трассировка лучей: динамическая дискретизация
Сообщение14.03.2017, 02:30 
Аватара пользователя


07/02/12
1026
Питер
levtsn, на открытой и сложной местности это будет еще менее эффективным, чем простой трейсинг всвязи с огромной площадью.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Модераторы: Toucan, maxal, Karan, PAV, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: Romashka97


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group