40 printf(
"------Tetra Mesh Writer: array nullptr \n");
45 std::ofstream
output(filename.c_str(), std::ios::out);
48 printf(
"------Tetra Mesh Writer: open file failed \n");
52 printf(
"Output Surface!!!!!!!!\n");
63 host_tri2tet.resize( (*(this->
ptr_tri2tet)).size() );
64 host_tets.resize((*(this->
ptr_tets)).size());
71 for (
uint i = 0; i < host_vertices.size(); ++i) {
72 output <<
"v " << host_vertices[i][0] <<
" " << host_vertices[i][1] <<
" " << host_vertices[i][2] << std::endl;
74 for (
int i = 0; i < host_tri2tet.size(); ++i) {
76 bool isOnSurface =
false;
77 if (tmp[0] < 0 || tmp[1] < 0) { isOnSurface =
true; }
81 int idx_tet = tmp[0] < 0 ? tmp[1] : tmp[0];
82 for (idx_vertex = 0; idx_vertex < 4; idx_vertex++)
85 if (host_tets[idx_tet][idx_vertex] != host_triangles[i][0]
86 && host_tets[idx_tet][idx_vertex] != host_triangles[i][1]
87 && host_tets[idx_tet][idx_vertex] != host_triangles[i][2]
91 idx_vertex = host_tets[idx_tet][idx_vertex];
93 ((host_vertices[host_triangles[i][1]] - host_vertices[host_triangles[i][0]]).
cross
94 (host_vertices[host_triangles[i][2]] - host_vertices[host_triangles[i][1]]))
96 (host_vertices[idx_vertex] - host_vertices[host_triangles[i][0]]) > 0
100 output <<
"f " << host_triangles[i][0] + 1 <<
" " << host_triangles[i][1] + 1 <<
" " << host_triangles[i][2] + 1 << std::endl;
102 output <<
"f " << host_triangles[i][0] + 1<<
" " << host_triangles[i][2] + 1<<
" " << host_triangles[i][1] + 1<< std::endl;
106 host_vertices.clear();
107 host_triangles.clear();
108 host_tri2tet.clear();