Точка в вершине определяется по алгоритму блока? - PullRequest
3 голосов
/ 30 ноября 2011

Как мне проверить, находится ли точка в трехмерном блоке, который определяется только 8 точками или 6 квадратами?(Нет доступа к нормальным векторам)

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

Ответы [ 3 ]

1 голос
/ 01 декабря 2011

Вы можете проверить это, сформировав 6 квадратных пирамид с точкой в ​​качестве головы и 4 вершинами каждого четырехугольника в качестве основы, а затем суммируя объемы квадратных пирамид.Если сумма объемов равна объему вашего ящика, точка находится в ящике.Если сумма объемов больше, чем объем вашей коробки, она находится за пределами коробки (сумма объемов никогда не будет меньше объема коробки).

Для расчета объема каждой квадратной пирамиды ее можно разбить на два тетраэдра.где их объем может быть легко рассчитан с помощью векторного продукта .Вы также можете рассчитать объем коробки со смешанным векторным произведением.

1 голос
/ 30 ноября 2011

Предполагая, что точки имеют известный порядок, вы можете определить нормальные векторы. Там нет необходимости нормализовать их для такого рода испытаний, поэтому стоимость не является чрезмерно высокой. Если вы уже знаете, что это кубоид, вам нужно отработать только две нормали, поскольку вы можете получить третью с помощью перекрестного произведения, а затем использовать другие точки, чтобы получить расстояния. Очевидно, что вы все равно получаете кросс-продукт для получения нормалей, так что это больше вопрос о том, какую информацию вы хотите кому предоставить.

Если точки не имеют известного порядка, то вы, вероятно, можете применить миниатюрную версию QuickHull - начиная с начального треугольника, вы также должны обнаружить, что у вас уже есть одна из реальных граней граней (в этом случае вы можете использовать это нормаль и найти соответствующие точки на другом экстремуме этого нормаля плюс требование взаимной ортогональности, чтобы добраться до всех трех нормалей) или этот один шаг дает вам по крайней мере два реальных ребра, которые вы заметите, когда их локальные наборы точек впереди пусто.

0 голосов
/ 30 ноября 2011

Безумная идея, возможно: -

  • настройка трехмерной ортогональной проекции в окне просмотра 1x1 пикселей
  • установить камеру и ближнюю плоскость отсечения так, чтобы точка интереса находилась в ближней плоскости отсечения
  • рендеринг коробки без отбраковки
  • если отображается только один пиксель, то точка находится внутри поля, 0 или 2 или более пикселей отображаются, тогда точка находится за пределами поля
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...