Interpolate Points of a 3D Point Cloud?

43 ビュー (過去 30 日間)
newbie
newbie 2020 年 2 月 21 日
コメント済み: Diego Hens 2020 年 8 月 25 日
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 件のコメント
darova
darova 2020 年 2 月 21 日
Please attach your data as file. It's annoying
newbie
newbie 2020 年 2 月 21 日
I´m sorry, attached as file.

サインインしてコメントする。

採用された回答

darova
darova 2020 年 2 月 21 日
  • 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 件のコメント
newbie
newbie 2020 年 2 月 21 日
編集済み: newbie 2020 年 2 月 21 日
Thank you! That helps me a lot!
My example with the cone was pretty simple, as it has a circular crosssection. Later on, the objects will be various forms of a polygon. I´ll try to adapt your approach ...
Diego Hens
Diego Hens 2020 年 8 月 25 日
Thanks, this is going to be useful. I don't know how exactly, but it will :D

サインインしてコメントする。

その他の回答 (1 件)

Daniel Vieira
Daniel Vieira 2020 年 2 月 21 日
try the scatteredInterpolant, should work fine with these points (not so much if you had a closed surface)
  2 件のコメント
newbie
newbie 2020 年 2 月 21 日
I`ve read about scatteredInterpolant, but it doesn´t really makes sense to me, as it needs a function v (but I only have the given data points that I added to my question).
Daniel Vieira
Daniel Vieira 2020 年 2 月 26 日
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.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangePoint Cloud Processing についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by