Как мне измерить высоту над поверхностью, граница которой определена как 3D точки

#3d #geometry

#3D #геометрия

Вопрос:

У меня есть список упорядоченных 3D точек, которые определяют границу поверхности. Больше ничего о поверхности не известно. Теоретически они могут быть сколь угодно сложными, однако на практике существует небольшое количество точек, которые в основном определяют плоские плоскости с некоторыми уклонами и т.д. Учитывая произвольную точку, координаты x и y которой находятся в пределах границы, я хочу знать высоту над соответствующей точкой на поверхности, которую определяет граница.

Комментарии:

1. Возможно, следует переместить в math.stackexchange.com

Ответ №1:

Это зависит от способа, которым точки определяют поверхность, и характеристик расположения точек: Определяют ли точки карту высот? Точки создают регулярную сетку или нет? Вы хотели бы определить поверхность как набор полигонов или изоповерхность?

Я пытаюсь предположить, что у вас обычная карта высот. В этом случае вам нужно:

  1. Определите, в каком квадрате регулярной сетки вершин находится соответствующая точка.

  2. Разбейте квадрат на 2 треугольника

  3. Определите, в каком треугольнике (XY-проекция треугольника) находится соответствующая точка.

  4. Найдите пересечение квадрата и вектора (x, y, 1), где (x, y) — соответствующая точка (google «точка-пересечение треугольника»)

Комментарии:

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

Ответ №2:

Рассматривайте свою коллекцию точек как набор определений плоскостей (можете ли вы определить, какие точки являются частью объекта?)

Определите линию от вашей заданной точки с вектором (линией), указывающим «вниз».

Выполните итерацию по плоскостям и посмотрите, пересекает ли вектор какую-либо из них. Расстояние между (x, y) и точкой пересечения является «высотой»

Комментарии:

1. Для этого для каждой точки я должен был бы найти двух ближайших соседей и рассматривать как треугольник?

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