Войти
ПрограммированиеФорумОбщее

Летящая сфера и горизонтальная плоскость (2 стр)

Страницы: 1 2
#15
16:49, 25 мар. 2021

eDmk
> САБЖ
решен в #4 и #9


#16
19:19, 25 мар. 2021

Рендерферма кроликов
я просто вариант предложил.

#17
(Правка: 23:37) 23:37, 25 мар. 2021

Мне кажется будет слишком затратно искать пересечение и потом по одной клетке перебирать.

Мне на самом деле нужно узнать пересекает ли хотя бы одну клетку. Но при этом это набор рандомных клеток а не рядом лежащих. Т.е. вокруг клеток могут быть пустые.

Можно построить aabb дерево и в него натолкать этих клеток. Далее при траверсе этого дерева нужно уметь определять пересекает ли летящая сфера aabb.

Т.е. задача свелась к задаче на пересечение капсулы и aabb. Для этого нужно найти расстояние от прямой начала и конца полета к aabb и сравнить с радиусом.

А как найти расстояние от прямой к aabb я пока не нашел.

#18
11:03, 26 мар. 2021

AlexeyLarin
Если рандомные - то именно перебирать. AABB тут ничего не даст

#19
16:14, 26 мар. 2021

Рендерферма кроликов
Ну не рандомные, а я знаю где они лежат. Просто они не обязательно лежат подряд.

Для случая когда у нас большая площадь пересечения и там почти все пустые клетки - нам придется их все проверить. При помощи же aabb дерева мы в худшем случае проверим количество равное высоте дерева.

#20
18:26, 26 мар. 2021

AlexeyLarin
> Для случая когда у нас большая площадь пересечения и там почти все пустые клетки - нам придется их все проверить
Зачем проверять пустые? Только перебрать в цикле

#21
19:18, 26 мар. 2021

Рендерферма кроликов
А как хранить клетки? Просто список для занятых клеток и потом в цикле проверять попадают ли они в эллипс?

#22
11:30, 27 мар. 2021

AlexeyLarin
Первый вариант - 2D массив. Если у тя миллион клеток и не хватает производительности, тогда дальше думать

#23
20:51, 27 мар. 2021

AlexeyLarin

Если они все лежат в плоскости, то заведи на них quadtree или loose quadtree с перекрытием на радиус сферы.

Страницы: 1 2
ПрограммированиеФорумОбщее