Interpolate triangulation according to a constraint on triangles' areas

4 Ansichten (letzte 30 Tage)
zilorina
zilorina am 10 Jan. 2020
Kommentiert: zilorina am 15 Jan. 2020
Is there a way to interpolate an existing triangular mesh (on a scattered 3d point cloud) in a way that triangles’ areas are equal to the same number (i.e. uniform) or at least are in a certain interval? Reducepatch function just reduces faces, the areas of particular triangles still can fluctuate a lot.
  4 Kommentare
John D'Errico
John D'Errico am 13 Jan. 2020
I was going to answer this the other day, but there were points I was not clear about what exactly you were looking to do. And I still am not clear on why you want to do this. Is it to reduce the total number of patches?
Anyway, it is not as easy as you may think. If some part has complex geometry (thus small triangles), that is probably because it is more complex in shape.
Even subdividing existing triangles into smaller ones with a target area in each new triangle has issues, unless the range of target areas is reasonably large.
zilorina
zilorina am 15 Jan. 2020
No, to reduce the number of patches I would just use reducepatch function.
I am calculating a curvature of the surface on a triangular mesh (the surface itself does not have too complex geometry, roughly like a bent piece of paper). For my application, we can cover the surface with flat patches of a certain size (for example, the area of those patches approximately equals to 1cm^2). So I am interested to remesh my triangular mesh into the mesh of triangles with the area approximately equal to 1cm^2 (initially I have smaller triangles ~ of the order of mm). And then calculate the curvature on a new mesh.
So far, my solution is that I have interpolated my data with griddata (with a certain step):
p = patch(isosurface(X,Y,Z,W, level));
[xq,yq,zq] =meshgrid(min(X(:)):step:max(X(:)),min(Y(:)):step:max(Y(:)),...
min(Z(:)):step:max(Z(:)));
vq = griddata(X,Y,Z,W,xq,yq,zq);
p = patch(isosurface(xq, yq, zq, vq, level));
It kinda works (so triangles would increase in size), but, as you mentioned, it still would give smaller triangles at some complexeties of the surface. I would not mind to ignore those little complexeties and make a rougher estimation (but with triangles of the same area). So maybe there is a way to do so?

Melden Sie sich an, um zu kommentieren.

Antworten (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by