3D Коробка Круг пересечение - PullRequest
4 голосов
/ 07 июня 2011

У меня есть круг, определенный центром (x, y, z), радиусом и вектором ориентации, который определяет, в каком направлении находится круг.Мне нужно проверить, пересекается ли такой круг с ограничивающим прямоугольником по оси.Чтобы уточнить, под перекрестками я имею в виду, что если какие-либо точки в пределах области, описываемой кружком, находятся внутри ограничительной рамки, то это составляет «пересечение».

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

спасибо.

Ник

1 Ответ

1 голос
/ 07 июня 2011

Ваша центральная точка круга и ваш вектор определяют плоскость;Пересечь свой самолет с вашим ящиком (в частности, 6 самолетов, которые составляют ваш ящик);это даст вам набор отрезков.Используя алгоритм ближайшей точки точка-линия, определите ближайшую точку на каждом отрезке линии к вашей центральной точке;если квадрат расстояния (используйте квадратное расстояние для сравнения расстояний, оно быстрее и точно так же) между этой точкой и точкой центра вашего круга меньше, чем квадрат вашего радиуса, ваш прямоугольник пересекается с вашим кругом.

Примечание: этот процесс является общим;использование выровненных по оси ограничительных рамок делает все еще проще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...