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
990
Питер
А если натянуть сетку на шар-360, и трассировать ячейки квадро-деревом, уходя в глубину только в там, где плотность потока влезает в допустимое окно, остальное обрезать? Где слишком большой поток (близко) - все убито, трассировать (уточнять детализацию) не за чем. Где слишком маленький (слишком далеко) - все цело, тоже дальше трассировать не за чем. Плюс всякие костыли с зенитными углами.

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


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

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


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

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

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



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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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