#3d #geometry
#3D #геометрия
Вопрос:
У меня есть список упорядоченных 3D точек, которые определяют границу поверхности. Больше ничего о поверхности не известно. Теоретически они могут быть сколь угодно сложными, однако на практике существует небольшое количество точек, которые в основном определяют плоские плоскости с некоторыми уклонами и т.д. Учитывая произвольную точку, координаты x и y которой находятся в пределах границы, я хочу знать высоту над соответствующей точкой на поверхности, которую определяет граница.
Комментарии:
1. Возможно, следует переместить в math.stackexchange.com
Ответ №1:
Это зависит от способа, которым точки определяют поверхность, и характеристик расположения точек: Определяют ли точки карту высот? Точки создают регулярную сетку или нет? Вы хотели бы определить поверхность как набор полигонов или изоповерхность?
Я пытаюсь предположить, что у вас обычная карта высот. В этом случае вам нужно:
-
Определите, в каком квадрате регулярной сетки вершин находится соответствующая точка.
-
Разбейте квадрат на 2 треугольника
-
Определите, в каком треугольнике (XY-проекция треугольника) находится соответствующая точка.
-
Найдите пересечение квадрата и вектора (x, y, 1), где (x, y) — соответствующая точка (google «точка-пересечение треугольника»)
Комментарии:
1. Точки представляют собой нерегулярную границу, но они почти всегда приблизительно прямоугольные. Я думаю, что если мы сможем проработать концы границы и более или менее следовать этому подходу для создания треугольников между противоположными точками на границе, этого будет достаточно.
Ответ №2:
Рассматривайте свою коллекцию точек как набор определений плоскостей (можете ли вы определить, какие точки являются частью объекта?)
Определите линию от вашей заданной точки с вектором (линией), указывающим «вниз».
Выполните итерацию по плоскостям и посмотрите, пересекает ли вектор какую-либо из них. Расстояние между (x, y) и точкой пересечения является «высотой»
Комментарии:
1. Для этого для каждой точки я должен был бы найти двух ближайших соседей и рассматривать как треугольник?
2. Если вы не можете определить, какие точки определяют объект, это единственный способ, который я могу придумать. Если вы получаете точки от двух разных объектов, в итоге вы получите несколько дополнительных плоскостей и можете получить несколько ложных попаданий.