%-------------------------- % @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