2016-05-02 3 views
4

У меня есть набор точек (x, y, z) с соответствующими нормалями и значениями в этих точках. Таким образом, данные находятся в форме [x y z nx ny nz c]. Я хочу построить трехмерную поверхность над этими точками, которая перпендикулярна этим нормалям и имеет цвет, соответствующий значению. Так что я хочу, это отступление от surfnorm.Участок 3D-поверхности из нормалей и точек

Мне удалось построить поверхность, используя meshgrid, interp2 и surf, но это не учитывает нормали. У меня также появилась идея сделать поверхность, построив мелкие квадраты перпендикулярно нормалям. Мне удалось это сделать, но не вижу никакого способа «заполнить» пространство между квадратами, потому что точки нерегулярно разнесены.

Что такое хороший способ достичь этого?

+0

Вы пытались «подгонять» поверхность? http://www.mathworks.com/help/curvefit/fit.html – Crowley

+0

Должна ли поверхность соответствовать данным _everywhere_ _exactly_? – tvo

+0

О, и еще один вопрос: есть ли какая-либо структура в данных? Например. являются точками на каком-то структурированном ячеи в (x, y)? Пожалуйста, добавьте такую ​​информацию в вопрос. – tvo

ответ

1

Я вижу два варианта:

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

2) Предположим, что подходящая функция, например. 2D многочленов и использовать подход оптимизации для сопоставления данных. Вам понадобится объективная функция, которая учитывает данные с одной стороны, а также обычные компоненты nx, ny, nz, с другой стороны. Недостаток: маловероятно получить точное представление исходной поверхности, в зависимости от вашего выбора функции подгонки.

Смежные вопросы