You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

46 lines
1.4 KiB

%--------------------------
% @Author: Jingqiao Hu
% @Date: 2022-01-30 12:33:02
% @LastEditTime: 2022-05-10 18:40:24
%--------------------------
function output_mmc(MMCs, maxx, minx, maxy, miny, maxz, minz, dx, loop)
t = MMCs(:, 1);
sp = MMCs(:, 2:4);
ep = MMCs(:, 5:7);
% dx = 2;
[x,y,z] = meshgrid(minx : dx : maxx, miny : dx : maxy, minz : dx : maxz);
% TODO: need remove some points
% [nely, nelx, nelz] = size(x);
nodes = [x(:),y(:),z(:)];
phiMax = repmat(-1e5, size(nodes, 1), 1);
parfor i = 1:size(MMCs, 1)
phi = signed_distance(nodes, sp(i,:), ep(i,:), t(i));
phiMax = max(phi, phiMax);
end
FF = reshape(phiMax, size(x));
% FF(nely/4:nely/4*3, nelx/8*3 : nelx/8*5, :) = -100;
% FF(nely/4:nely/4*3, nelx/8*3 : nelx/8*5, :) = 100;
[faces,verts] = isosurface(x,y,z,FF,0);
% stlwrite(['data/stl/output1-loop',num2str(loop),'.stl'], faces, verts);
% stlwrite(['data/stl/output2-loop',num2str(loop),'.stl'], isocaps(x,y,z,FF,0));
figure;
p=patch(isosurface(x,y,z,FF,0));
set(p,'facecolor','[0.8 0.4 0.4]','edgecolor','none');
p=patch(isocaps(x,y,z,FF,0,'FaceColor','red'));
set(p,'facecolor','[0.8 0.4 0.4]','edgecolor','none');
view([10 25])
axis equal; axis tight;
xlabel('x axis');
ylabel('y axis');
zlabel('z axis');
camlight;lighting gouraud
end