How to create a mesh surface from given 3D coordinates?
56 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Mitchell Ireland
el 11 de Abr. de 2020
Respondida: Trang Cao
el 28 de Mayo de 2024
Hi all,
I've decided to give MATLAB a try for my research project.
I'm trying to create a 3D mesh of given coordinates E, N and elevation.
I can plot all the points using plot3(x,y,z,'.');
Using an XLSX or csv spreadsheet for the datsets I have removed all unnecessary data such as point name and code leaving only E,N and elevation in a 460x3 table.
And using the patch function it does something but not creating the surface as I would like it as a mesh.
I would also like to set some parameters when creating the mesh i.e don't create surface between outside points where distance between those points is greater than say 20m.
Attached is a screenshot of where I am up to.
Kind regards,
Mitch.

2 comentarios
Tommy
el 11 de Abr. de 2020
Have a look at https://www.mathworks.com/matlabcentral/answers/62964-creating-3d-mesh-for-some-points-in-space
Perhaps this gives what you are looking for?
figure
tri = delaunay(x, y);
trimesh(tri, x, y, z);
hold on; plot3(x,y,z,'.')
Respuesta aceptada
KSSV
el 11 de Abr. de 2020
Two options:
%%structured
xi = unique(x) ; yi = unique(y) ;
[X,Y] = meshgrid(xi,yi) ;
Z = reshape(z,size(X)) ;
figure
surf(X,Y,Z)
%%unstructured
dt = delaunayTriangulation(x,y) ;
tri = dt.ConnectivityList ;
figure
trisurf(tri,x,y,z)
2 comentarios
KSSV
el 11 de Abr. de 2020
You need to get the boundary nodes and arrange them in an order and use as constraints. Read about delaunayTraingulation. You have option of specifying constraints.
Más respuestas (2)
Trang Cao
el 28 de Mayo de 2024
Probably you don't need the answer for this anymore but I was just looking for the answer to a similar question, i.e., delaurayTriangulation do not behave well on non-convex shape.
I found alphaShape and then alphaTriangulation.
Hope this may help someone else...
0 comentarios
Dania Ahmed
el 14 de Mzo. de 2022
Editada: Dania Ahmed
el 14 de Mzo. de 2022
Here you need a 3D constrained delaunay to plot the domain with internal nodes in 3D. MATLAB allows constrained delaunay in 2D only.
If you wanted to plot the boudndary surface; you can use the function "boundary" with a shrink factor of 1 then trisurf the boundary and the points, i.e.
k = boundary(x,y,z,1);
trisurf(k,x,y,z,'Facecolor','red','FaceAlpha',0.5);
0 comentarios
Ver también
Categorías
Más información sobre Surface and Mesh Plots en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!