/ / Сюжет 3D поверхні від нормалів та точок - матлаб, сюжет, 3d

Складіть 3D-поверхню з нормалей і точок - matlab, plot, 3d

У мене є колекція (x, y, z) точок з відповідними нормалами і значеннями в цих точках. Отже, дані у формі [x y z nx ny nz c]. Я хочу побудувати над цими точками тривимірну поверхню, яка перпендикулярна нормалам і має колір, відповідний значенню. Тож те, що я хочу, є свого роду реверсом surfnorm.

Мені вдалося побудувати поверхню за допомогою meshgrid, interp2 і surf, але це не враховує норми. У мене також виникла ідея зробити поверхню, побудувавши невеликі квадрати, перпендикулярні нормалам. Мені вдалося це зробити, але не бачити будь-якого способу "заповнити" простір між квадратами, оскільки точки розташовані нерівномірно.

Що це хороший спосіб досягти цього?

Відповіді:

1 для відповіді № 1

Я бачу два варіанти:

1) Або виконайте пряму геометричну реконструкцію, використовуючи багатокутники на основі точок і нормалей. Я думаю, що patch Функція була б корисною в цьому контексті. Це дозволяє встановлювати колір. Недолік: вам потрібно буде зробити багато ручної обробки та поводження з винятковими випадками.

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