Преобразовать тринагуляцию Делоне в объем - PullRequest
0 голосов
/ 05 октября 2018

Я пытаюсь перейти от облака точек к объему (трехмерный куб).

Я могу получить довольно хорошее представление об объеме, сделав триангуляцию Делоне.

Как перейти от триангуляции к трехмерному мату?

Я думаюможет быть, протестировать несколько точек запроса и выяснить, лежат ли они внутри треугольника / тетраэдра, но я не могу найти лучший способ сделать это:

clc; clear all;
% Build a cube, in my target application this going to be from a point cloud
d = [-1 1];
[x,y,z] = meshgrid(d,d,d); % a cube
x = [x(:);0];
y = [y(:);0];
z = [z(:);0];
DT = delaunayTriangulation(x,y,z);
V=ones(size(x),'like',x);
%Build a volume from these points?
n=5;samples=linspace(-2,2);
[xq,yq,zq]=meshgrid(samples,samples,samples);
pq=[xq(:),yq(:),zq(:)];
vi = nearestNeighbor(DT,pq);
res=reshape(vi,size(xq));
%As expected, edges are messed up, not a cube...
imagesc(res(:,:,round(end/2)));
% %tetramesh(DT);

1 Ответ

0 голосов
/ 05 октября 2018

Кажется, я понял:

vi = nearestNeighbor(DT,pq);

может быть

vi = pointLocation(DT,pq);

Возвращает nan, когда точка не заключена:

В любом случае, оставляяЭто открыто на некоторое время, потому что я не уверен, что мое решение оптимально.

Также это несколько сложнее в вычислительном отношении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...