Войти
ФлеймФорумПрограммирование

3д столкновения с боксом , но бокс повернут.

Страницы: 1 2 Следующая »
#0
15:09, 11 окт. 2018

Как определить что точка в 3д боксе если бокс такой , проблем нет.
Изображение

Но вот если его повернуть , то как определить на CPU что точка попала в какую то часть бокса ?
Изображение
У меня тут непонимание.


#1
15:28, 11 окт. 2018

Повернуть точку в пространство бокса, потом как с aabb.

#2
15:55, 11 окт. 2018

Повернуть точку вокруг центра бокса

#3
16:31, 11 окт. 2018

Точку повернуть.
А как быть с верхней и нижней координатой бокса ?
Когда бокс не повернут, то его точка B1 = 10,10 и B2 = 5,0
И легко проверить если точка P находится между 10 и 5 по Х и 10 и 0 по Y
Вот когда повернут бокс то B1 и B2 будут другими и как тут ?
При повороте B1 и B2 изменят свою длину по  X и Y.

Не могу уловить всего смысла в повороте точки.
Чего то мне не хватает что бы картина стала видна целиком.
Потому не совсем понимаю зачем точку повернуть , а точнее как после поворота это мне поможет при сравнении находится ли точка в боксе.

#4
16:46, 11 окт. 2018

Примени к точке трансформ бокса. Потом как AABB

#5
16:52, 11 окт. 2018

А не легче ли повернуть сам бокс так что бы он стал прямым.
Что бы легко находить что точка находится в боксе.

К примеру точка это игрок, а бокс это здание.
И здание повернуто.
Значит и BoundBox здания повернут.

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


Я видел пример где баунд бокс вращали и он как бы оставался прямым , но тогда большие погрешности.
Как тут на картинке повернули баунд и он увеличил свою площадь как бы получили новый баунд.
Изображение

#6
18:33, 11 окт. 2018

ronniko
бери готовый физ. движок если не можешь понять что тут тебе советуют.

#7
19:18, 11 окт. 2018


Aroch
нет мне надо понять смысл и я сам напишу.

#8
20:11, 11 окт. 2018

Ivashka твое решение напоминает столкновение Sphere and Plane

#9
22:31, 11 окт. 2018

ronniko
> нет мне надо понять смысл
смысл в том что бокс это только его размеры + позиция и ориентация.
> Повернуть точку в пространство бокса, потом как с aabb.
подразумевается что нужно преобразовать точку так чтобы относительное ее положение относительно бокса не изменилось, но сам бокс был словно к нему применена единичная матрица, то есть позиция равна 0, и угол вращения тоже равен 0. В таком случае стороны бокса будут параллельны осям координат, что есть aabb (axis aligned bounding box) (твой первый рисунок).

#10
23:17, 11 окт. 2018

Aroch
По-моему "перевести точку в локальную систему координат бруска (object space)" - более внятная формулировка.

#11
23:36, 11 окт. 2018

ronniko
Возьми листок, нарисуй повернутый бокс. потом нарисуй точку рядом.
Потом вокруг центра бокса поверни листок так, чтоб бокс стал не повернутый( аабб ), все станет ясно.

#12
0:03, 12 окт. 2018

ronniko
Можешь написать уравнения прямых бокса и дальше уже проверять лежит ли в боксе точка

#13
7:30, 12 окт. 2018

Aroch значит точки бокса min i max я не вращаю.
А вращаю точку, что бы её перевести в пространство бокса и сравниваю точку с min i max бокса.


Потому что я раньше думал что надо min i max бокса тоже вращать. Вот это как раз меня и приводило в тупик.

#14
20:04, 14 окт. 2018

ronniko
бокс не трогать, а точку преобразовать в СК повернутого бокса
вычесть из ее координат центр бокса и умножить (скалярно) на базисные вектора ex,ey,ez
а дальше как с AABB

Страницы: 1 2 Следующая »
ФлеймФорумПрограммирование

Тема в архиве.