MATLAB Answers

How to create a mesh surface from given 3D coordinates?

166 views (last 30 days)
Mitchell Ireland
Mitchell Ireland on 11 Apr 2020
Commented: KSSV on 11 Apr 2020
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 Comments
Mitchell Ireland
Mitchell Ireland on 11 Apr 2020
Thanks Tommy,
That is helpful and creating the surface as i was hoping.
From here I would like to clip out the log triangles on the edges that are say over 20m between points. See red lines drawing on the screenshot below. These would roughly be the triangles to remove. Any idea if i can add this into the function or in the constraints?

Sign in to comment.

Accepted Answer

KSSV
KSSV on 11 Apr 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 Comments
KSSV
KSSV on 11 Apr 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.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!

Translated by