У мене є колекція (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
з іншої сторони. Недолік: навряд чи вийде точно представити оригінальну поверхню, що залежить також від вашого вибору функції підгонки.