Interpolate Points of a 3D Point Cloud?
85 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
newbie
el 21 de Feb. de 2020
Comentada: Diego Hens
el 25 de Ag. de 2020
I am trying to interpolate data points (x, y, z) to get a point cloud with higher density.
I have triangulation points (x-y-z coordinates) and faces from a .stl-file (imported with stlread()) that I can work with. (DATA is attached).
In the attached image you can see the given data points (BLUE) and indicated the points I want to create (RED) - but for the whole geometry and in larger numbers.
Any ideas?
2 comentarios
Respuesta aceptada
darova
el 21 de Feb. de 2020
- Use griddata to create surface
- Use contour3 to create crossection
clc,clear
load data.txt
x = data(:,1);
y = data(:,2);
z = data(:,3);
[t,r] = cart2pol(x,y);
rr = linspace(min(r),max(r),20);
tt = linspace(0,2*pi,20);
[T,R] = meshgrid(tt,rr); % new mesh
[X,Y] = pol2cart(T,R); % convert new mesh to cartesian
Z = griddata(x,y,z,X,Y); % according Z coordinates
plot3(x,y,z,'.b')
hold on
surf(X,Y,Z,'faceColor','none','edgecolor',[1 1 1]*0.8)
contour3(X,Y,Z,[34 38])
hold off
axis equal
Result
2 comentarios
Diego Hens
el 25 de Ag. de 2020
Thanks, this is going to be useful. I don't know how exactly, but it will :D
Más respuestas (1)
Daniel Vieira
el 21 de Feb. de 2020
try the scatteredInterpolant, should work fine with these points (not so much if you had a closed surface)
2 comentarios
Daniel Vieira
el 26 de Feb. de 2020
Actually it doesn't need any function, it does exactly the same thing as griddata (others posted solutions above using it). The difference is griddata creates the interpolation over the given points and that's it, while scatteredInterpolant creates a reusable interpolator for you to use in any points you want how many times you need.
Ver también
Categorías
Más información sobre Point Cloud Processing en Help Center y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!