3d — C ++ плоская интерполяция из множества точек

Я программирую на C ++ с помощью PCL, облака точек, библиотеки.

Моя проблема: вычисление дисперсии некоторых точек, но только относительно перпендикулярной оси относительно плоскости. Я объясню себе:

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

Любая помощь приветствуется, ура.

-1

Решение

вам нужны базисные векторы для этого … так что давайте N будь твоим самолетом нормальным. Для интерполяции вашей плоскости вам нужно 2 базисных вектора U,V внутри вашего самолета и одна начальная точка P0 принадлежность к этой плоскости …

Предположим, мы знаем N,P0 Итак U,V можно вычислить, используя перекрестное произведение:

// U is any vector non parallel to N
U = (1.0,0.0,0.0)
if (|dot(U,N)|>0.75) U = (0.0,1.0,0.0)
// make U,V perpendicular to N and each other
V = cross(N,U)
U = cross(V,N)
// normalize U,V,N
U = U/|U|
V = V/|V|
N = N/|N|

Теперь любую точку на плоскости можно интерполировать следующим образом:

P(u,v) = P0 + u*U + v*V

куда u,v ваши скалярные параметры интерполяции, которые также равны перпендикулярному расстоянию P(u,v) в U а также V направления от P0,

Чтобы оценить расстояние вашей точки от плоскости (высоты), вы можете просто сделать это

alt = dot(N,P(u,v)-P0)

так что квадратики не нужны … Точно так же, если вам нужно u,v в какой-то момент P вы можете сделать это:

u = dot(U,P-P0)
v = dot(V,P-P0)
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]