Открытие файла STL в Matlab - PullRequest
       20

Открытие файла STL в Matlab

0 голосов
/ 07 февраля 2020

Я извлек координаты вершин в файл STL и использовал эти простые коды для визуализации 3D-модели:

for i=0:214
 fill3(A(:,i*7+3),A(:,i*7+4),A(:,i*7+5),'b');
 grid on; hold on; alpha(0.3)
end

3D-модель представляет собой сферический объект с 214 треугольниками , но я получил это: enter image description here

что с ним не так?

1 Ответ

2 голосов
/ 07 февраля 2020

Вы не предоставляете данные поверхности для fill3, только точки, поэтому нет четко определенной триангуляции, и она пытается заполнить между последовательными вершинами (которые могут быть в произвольном порядке).

Вы можете воссоздать данные поверхности, используя функцию типа convhull (если ваш объект выпуклый), см. Пример ниже.

В качестве альтернативы, поскольку у вас есть файл STL, возможно, у вас уже есть данные триангуляции для использовать с trisurf.

plots

% Create points on a sphere
N = 200;
TH = 2*pi*rand(1,N).';
PH = asin(-1+2*rand(1,N)).';
A = NaN(N,3);
[A(:,1),A(:,2),A(:,3)] = sph2cart(TH,PH,1);

% Plotting
figure(5); clf

subplot(1,3,1);
plot3(A(:,1),A(:,2),A(:,3),'.');
grid on; title( 'plot3' );

subplot(1,3,2);
fill3(A(:,1),A(:,2),A(:,3),'b');
grid on; title( 'fill3' );

subplot(1,3,3);
Tri = convhull(A(:,1),A(:,2),A(:,3));
trisurf(Tri,A(:,1),A(:,2),A(:,3),'Facecolor','b');
grid on; title( 'trisurf / convhull' );
...