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
46 lines
1.4 KiB
3 years ago
|
%--------------------------
|
||
|
% @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
|