MCPcopy Create free account
hub / github.com/PyMesh/PyMesh / project_out_zero_dim

Method project_out_zero_dim

src/Geometry/MeshGeometry.cpp:26–70  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

24}
25
26int MeshGeometry::project_out_zero_dim() {
27 if (m_dim == 2) return -1;
28 assert(m_dim == 3);
29 const size_t num_vertices = get_num_vertices();
30 MatrixFr vertices(num_vertices, m_dim);
31 std::copy(m_vertices.data(), m_vertices.data() + m_vertices.size(),
32 vertices.data());
33 Vector3F max_coord = vertices.colwise().maxCoeff();
34 Vector3F min_coord = vertices.colwise().minCoeff();
35
36 int zero_dim = -1;
37 for (size_t i=0; i<3; i++) {
38 if (max_coord[i] == min_coord[i]) {
39 zero_dim = i;
40 break;
41 }
42 }
43
44 if (zero_dim == -1) return -1;
45 m_dim = 2;
46 m_vertices.resize(num_vertices * 2);
47 if (zero_dim == 0) {
48 // Drop X
49 //std::cout << "Removing X component" << std::endl;
50 for (size_t i=0; i<num_vertices; i++) {
51 m_vertices[i*2 ] = vertices.row(i)[1];
52 m_vertices[i*2+1] = vertices.row(i)[2];
53 }
54 } else if (zero_dim == 2) {
55 // Drop Z
56 //std::cout << "Removing Z component" << std::endl;
57 for (size_t i=0; i<num_vertices; i++) {
58 m_vertices[i*2 ] = vertices.row(i)[0];
59 m_vertices[i*2+1] = vertices.row(i)[1];
60 }
61 } else {
62 // Drop Y
63 //std::cout << "Removing Y component" << std::endl;
64 for (size_t i=0; i<num_vertices; i++) {
65 m_vertices[i*2 ] = vertices.row(i)[0];
66 m_vertices[i*2+1] = vertices.row(i)[2];
67 }
68 }
69 return zero_dim;
70}
71
72void MeshGeometry::extract_faces_from_tets() {
73 const VectorI& voxels = m_voxels;

Callers 1

Calls 1

sizeMethod · 0.45

Tested by

no test coverage detected