Как определить что точка в 3д боксе если бокс такой , проблем нет.
Но вот если его повернуть , то как определить на CPU что точка попала в какую то часть бокса ?
У меня тут непонимание.
Повернуть точку в пространство бокса, потом как с aabb.
Повернуть точку вокруг центра бокса
Точку повернуть.
А как быть с верхней и нижней координатой бокса ?
Когда бокс не повернут, то его точка B1 = 10,10 и B2 = 5,0
И легко проверить если точка P находится между 10 и 5 по Х и 10 и 0 по Y
Вот когда повернут бокс то B1 и B2 будут другими и как тут ?
При повороте B1 и B2 изменят свою длину по X и Y.
Не могу уловить всего смысла в повороте точки.
Чего то мне не хватает что бы картина стала видна целиком.
Потому не совсем понимаю зачем точку повернуть , а точнее как после поворота это мне поможет при сравнении находится ли точка в боксе.
Примени к точке трансформ бокса. Потом как AABB
А не легче ли повернуть сам бокс так что бы он стал прямым.
Что бы легко находить что точка находится в боксе.
К примеру точка это игрок, а бокс это здание.
И здание повернуто.
Значит и BoundBox здания повернут.
И игрок подошел к какому то углу здания.
И надо что бы игрок не прошел этот угол насквозь.
Я видел пример где баунд бокс вращали и он как бы оставался прямым , но тогда большие погрешности.
Как тут на картинке повернули баунд и он увеличил свою площадь как бы получили новый баунд.
ronniko
бери готовый физ. движок если не можешь понять что тут тебе советуют.
Aroch нет мне надо понять смысл и я сам напишу.
Ivashka твое решение напоминает столкновение Sphere and Plane
ronniko
> нет мне надо понять смысл
смысл в том что бокс это только его размеры + позиция и ориентация.
> Повернуть точку в пространство бокса, потом как с aabb.
подразумевается что нужно преобразовать точку так чтобы относительное ее положение относительно бокса не изменилось, но сам бокс был словно к нему применена единичная матрица, то есть позиция равна 0, и угол вращения тоже равен 0. В таком случае стороны бокса будут параллельны осям координат, что есть aabb (axis aligned bounding box) (твой первый рисунок).
Aroch
По-моему "перевести точку в локальную систему координат бруска (object space)" - более внятная формулировка.
ronniko
Возьми листок, нарисуй повернутый бокс. потом нарисуй точку рядом.
Потом вокруг центра бокса поверни листок так, чтоб бокс стал не повернутый( аабб ), все станет ясно.
ronniko
Можешь написать уравнения прямых бокса и дальше уже проверять лежит ли в боксе точка
Aroch значит точки бокса min i max я не вращаю.
А вращаю точку, что бы её перевести в пространство бокса и сравниваю точку с min i max бокса.
Потому что я раньше думал что надо min i max бокса тоже вращать. Вот это как раз меня и приводило в тупик.
ronniko
бокс не трогать, а точку преобразовать в СК повернутого бокса
вычесть из ее координат центр бокса и умножить (скалярно) на базисные вектора ex,ey,ez
а дальше как с AABB