%-------------------------- % @Author: Jingqiao Hu % @Date: 2021-03-18 18:17:09 % @LastEditTime: 2021-03-18 21:42:10 % vtk: edofMat: % y 4-----5 3-----2 % | /| /| /| /| % 0---x 7-0---6 1 7-0---6 1 % / | |/ | |/ % z 3-----2 4-----5 %-------------------------- function voxel2vtk(filename, nodes, eles) delete(filename); fidOUT = fopen(filename, 'w'); fprintf(fidOUT, '# vtk DataFile Version 2.0\n'); fprintf(fidOUT, 'Unstructured Grid Example\n'); fprintf(fidOUT, 'ASCII\n'); fprintf(fidOUT, 'DATASET UNSTRUCTURED_GRID\n'); nodes_num = size(nodes, 1); fprintf(fidOUT, 'POINTS %i float\n', nodes_num); for i = 1:nodes_num fprintf(fidOUT, '%f %f %f\n', nodes(i,1), nodes(i,2), nodes(i,3)); end eles_num = size(eles, 1); eles_size = eles_num * 9; fprintf(fidOUT, 'CELLS %i %i\n', eles_num, eles_size); for ele = 1:eles_num nid0 = eles(ele, :); nid = vtk_order(nid0) - 1; fprintf(fidOUT, '%i %i %i %i %i %i %i %i %i\n', 8, nid(1), nid(2), nid(3), nid(4), nid(5), nid(6), nid(7), nid(8)); end fprintf(fidOUT, 'CELL_TYPES %i\n', eles_num); for ele = 1:eles_num fprintf(fidOUT, '12\n'); end fprintf(fidOUT, 'POINT_DATA %i\n', nodes_num); fclose(fidOUT); end % change the nodes's order of edofMat to vtk function node = vtk_order(node_id) node = node_id; node([0,1,6,7]+1) = node_id([0,1,6,7]+1); node([3,2]+1) = node_id([4,5]+1); node([4,5]+1) = node_id([3,2]+1); end