У меня есть облако точек ствола дерева, импортированное в виде файла слоя. Это облако точек, поэтому ствол дерева — это не поверхность, а точки с промежутками между ними.

У меня также есть 3D-координаты множества точек. Как удалить те точки, которые не находятся внутри ствола дерева? Кстати, модель не параллельна осям.

Вот ссылка на файл ply в дропбоксе. Координаты и значения точек находятся в прикрепленном файле all_control_points.mat. Пока нет кода, кроме того, который генерирует эти данные.

ПРИМЕЧАНИЕ. 

Matlabsolutions.com предоставляет последнюю Помощь по домашним заданиям MatLab, Помощь по заданию MatLab для студентов, инженеров и исследователей в различных отраслях, таких как ECE, EEE, CSE, Mechanical, Civil со 100% выходом. Код Matlab для BE, B.Tech ,ME,M.Tech, к.т.н. Ученые со 100% конфиденциальностью гарантированы. Получите проекты MATLAB с исходным кодом для обучения и исследований.

Привет. Написал скрипт и как-то работает 0_0. См. прикрепленный скрипт

Это то, чего я достиг

Может быть, кто-то может объяснить, почему (и как) это работает

% xc,yc,zc - control points (red on the image)
% xt,yt,zt - tree point (blue on the image)
ri = sqrt(xt(it).^2 + yt(it).^2);       % radius of tree points
ri1 = griddata(xt(it), yt(it), zt(it), ri, ...
               xc,yc,zc);

griddata() генерирует радиус только для точек внутри (NaN для остальных)

% clc,clear
% load data.txt
Xt = X12(:,1);
Yt = X12(:,2);
Zt = X12(:,3);
    
    % rotate data by 75 degree about X axis
a = -75;
xt =  Xt;
yt =  Yt*cosd(a) + Zt*sind(a);
zt = -Yt*sind(a) + Zt*cosd(a);
    % center data (move to (0,0))
x0 = mean(xt);
y0 = mean(yt);
xt = xt - x0;
yt = yt - y0;

СМОТРИТЕ ПОЛНЫЙ ОТВЕТ НАЖМИТЕ НА ССЫЛКУ