Пересечение между двумя трехмерными поверхностями
У меня есть две независимые 3D-фигуры; один квадрат, а другой конус.
Давайте предположим, что конус лежит внутри квадрата. Как я могу узнать, что поверхность конуса касается поверхности квадрата, когда я перемещаю конус в любом направлении?
Будет полезно, если кто-нибудь предложит алгоритм проверки, касается ли поверхность другой формы.
Я работаю с MATLAB, но основная логика будет оценена на любом языке, будет оценена.
1 ответ
Существует относительно простое решение, благодаря тому, что усеченный конус имеет выпуклую форму, и найти его AABB не так сложно.
Сначала поверните пространство так, чтобы куб выровнялся по оси (и конус в произвольном положении). Затем для нахождения AABB базы достаточно получить максимумы минимума координат, используя параметрическое уравнение C + R cos t + R' sin t, где C - вектор положения центра, а R, R'два ортогональных радиуса. Вы найдете предельные углы, отменив производную.
После нахождения экстремумов по трем координатам, глобальная ограничивающая рамка - это та, которая окружает эти шесть точек плюс вершину.
Сравнивая AABB с кубом, вы можете определить, какое расстояние остается до столкновения в любом направлении.