| 53 | } |
| 54 | |
| 55 | void VertexValanceAttribute::compute_from_tet_mesh(Mesh& mesh) { |
| 56 | const size_t num_vertices = mesh.get_num_vertices(); |
| 57 | const size_t num_voxels = mesh.get_num_voxels(); |
| 58 | const size_t num_vertex_per_voxel = mesh.get_vertex_per_voxel(); |
| 59 | assert(num_vertex_per_voxel == 4); |
| 60 | |
| 61 | VectorF& vertex_valance = m_values; |
| 62 | vertex_valance = VectorF::Zero(num_vertices); |
| 63 | |
| 64 | std::set<Duplet> edges; |
| 65 | for (size_t i=0; i<num_voxels; i++) { |
| 66 | VectorI voxel = mesh.get_voxel(i); |
| 67 | Duplet edge[6] = { |
| 68 | {voxel[0], voxel[1]}, |
| 69 | {voxel[0], voxel[2]}, |
| 70 | {voxel[0], voxel[3]}, |
| 71 | {voxel[1], voxel[2]}, |
| 72 | {voxel[1], voxel[3]}, |
| 73 | {voxel[2], voxel[3]} }; |
| 74 | edges.insert(edge[0]); |
| 75 | edges.insert(edge[1]); |
| 76 | edges.insert(edge[2]); |
| 77 | edges.insert(edge[3]); |
| 78 | edges.insert(edge[4]); |
| 79 | edges.insert(edge[5]); |
| 80 | } |
| 81 | |
| 82 | for (auto edge : edges) { |
| 83 | const auto& data = edge.get_ori_data(); |
| 84 | vertex_valance[data[0]] ++; |
| 85 | vertex_valance[data[1]] ++; |
| 86 | } |
| 87 | } |
| 88 | |
| 89 | void VertexValanceAttribute::compute_from_hex_mesh(Mesh& mesh) { |
| 90 | const size_t num_vertices = mesh.get_num_vertices(); |
nothing calls this directly
no test coverage detected