1 #ifndef INCLUDE_UNITTESTS_SUBIVIDER_UNIFORM_HH
2 #define INCLUDE_UNITTESTS_SUBIVIDER_UNIFORM_HH
4 #include <gtest/gtest.h>
5 #include <Unittests/unittests_common.hh>
14 virtual void SetUp() {
20 virtual void TearDown() {
34 virtual void SetUp() {
40 virtual void TearDown() {
62 Mesh::VertexHandle vhandle[9];
64 vhandle[0] = mesh_.add_vertex(Mesh::Point(0, 0, 0));
65 vhandle[1] = mesh_.add_vertex(Mesh::Point(0, 1, 0));
66 vhandle[2] = mesh_.add_vertex(Mesh::Point(0, 2, 0));
67 vhandle[3] = mesh_.add_vertex(Mesh::Point(1, 0, 0));
68 vhandle[4] = mesh_.add_vertex(Mesh::Point(1, 1, 0));
69 vhandle[5] = mesh_.add_vertex(Mesh::Point(1, 2, 0));
70 vhandle[6] = mesh_.add_vertex(Mesh::Point(2, 0, 0));
71 vhandle[7] = mesh_.add_vertex(Mesh::Point(2, 1, 0));
72 vhandle[8] = mesh_.add_vertex(Mesh::Point(2, 2, 0));
75 std::vector<Mesh::VertexHandle> face_vhandles;
77 face_vhandles.push_back(vhandle[0]);
78 face_vhandles.push_back(vhandle[4]);
79 face_vhandles.push_back(vhandle[3]);
81 mesh_.add_face(face_vhandles);
82 face_vhandles.clear();
84 face_vhandles.push_back(vhandle[0]);
85 face_vhandles.push_back(vhandle[1]);
86 face_vhandles.push_back(vhandle[4]);
88 mesh_.add_face(face_vhandles);
89 face_vhandles.clear();
91 face_vhandles.push_back(vhandle[1]);
92 face_vhandles.push_back(vhandle[2]);
93 face_vhandles.push_back(vhandle[4]);
95 mesh_.add_face(face_vhandles);
96 face_vhandles.clear();
98 face_vhandles.push_back(vhandle[2]);
99 face_vhandles.push_back(vhandle[5]);
100 face_vhandles.push_back(vhandle[4]);
102 mesh_.add_face(face_vhandles);
103 face_vhandles.clear();
105 face_vhandles.push_back(vhandle[3]);
106 face_vhandles.push_back(vhandle[7]);
107 face_vhandles.push_back(vhandle[6]);
109 mesh_.add_face(face_vhandles);
110 face_vhandles.clear();
112 face_vhandles.push_back(vhandle[3]);
113 face_vhandles.push_back(vhandle[4]);
114 face_vhandles.push_back(vhandle[7]);
116 mesh_.add_face(face_vhandles);
117 face_vhandles.clear();
119 face_vhandles.push_back(vhandle[4]);
120 face_vhandles.push_back(vhandle[8]);
121 face_vhandles.push_back(vhandle[7]);
123 mesh_.add_face(face_vhandles);
124 face_vhandles.clear();
126 face_vhandles.push_back(vhandle[4]);
127 face_vhandles.push_back(vhandle[5]);
128 face_vhandles.push_back(vhandle[8]);
130 mesh_.add_face(face_vhandles);
144 OpenMesh::Subdivider::Uniform::Sqrt3T<Mesh> sqrt3;
147 EXPECT_EQ(9u, mesh_.n_vertices() ) <<
"Wrong number of vertices";
148 EXPECT_EQ(8u, mesh_.n_faces() ) <<
"Wrong number of faces";
156 EXPECT_EQ(121u, mesh_.n_vertices() ) <<
"Wrong number of vertices after subdivision with sqrt3";
157 EXPECT_EQ(216u, mesh_.n_faces() ) <<
"Wrong number of faces after subdivision with sqrt3";
174 Mesh::VertexHandle vhandle[9];
176 vhandle[0] = mesh_.add_vertex(Mesh::Point(0, 0, 0));
177 vhandle[1] = mesh_.add_vertex(Mesh::Point(0, 1, 0));
178 vhandle[2] = mesh_.add_vertex(Mesh::Point(0, 2, 0));
179 vhandle[3] = mesh_.add_vertex(Mesh::Point(1, 0, 0));
180 vhandle[4] = mesh_.add_vertex(Mesh::Point(1, 1, 0));
181 vhandle[5] = mesh_.add_vertex(Mesh::Point(1, 2, 0));
182 vhandle[6] = mesh_.add_vertex(Mesh::Point(2, 0, 0));
183 vhandle[7] = mesh_.add_vertex(Mesh::Point(2, 1, 0));
184 vhandle[8] = mesh_.add_vertex(Mesh::Point(2, 2, 0));
187 std::vector<Mesh::VertexHandle> face_vhandles;
189 face_vhandles.push_back(vhandle[0]);
190 face_vhandles.push_back(vhandle[1]);
191 face_vhandles.push_back(vhandle[4]);
192 face_vhandles.push_back(vhandle[3]);
194 mesh_.add_face(face_vhandles);
195 face_vhandles.clear();
197 face_vhandles.push_back(vhandle[1]);
198 face_vhandles.push_back(vhandle[2]);
199 face_vhandles.push_back(vhandle[5]);
200 face_vhandles.push_back(vhandle[4]);
202 mesh_.add_face(face_vhandles);
203 face_vhandles.clear();
205 face_vhandles.push_back(vhandle[4]);
206 face_vhandles.push_back(vhandle[5]);
207 face_vhandles.push_back(vhandle[8]);
208 face_vhandles.push_back(vhandle[7]);
210 mesh_.add_face(face_vhandles);
211 face_vhandles.clear();
213 face_vhandles.push_back(vhandle[3]);
214 face_vhandles.push_back(vhandle[4]);
215 face_vhandles.push_back(vhandle[7]);
216 face_vhandles.push_back(vhandle[6]);
218 mesh_.add_face(face_vhandles);
232 OpenMesh::Subdivider::Uniform::CatmullClarkT<PolyMesh> catmull;
235 EXPECT_EQ(9u, mesh_.n_vertices() ) <<
"Wrong number of vertices";
236 EXPECT_EQ(4u, mesh_.n_faces() ) <<
"Wrong number of faces";
239 catmull.attach(mesh_);
243 EXPECT_EQ(289u, mesh_.n_vertices() ) <<
"Wrong number of vertices after subdivision with catmull clark";
244 EXPECT_EQ(256u, mesh_.n_faces() ) <<
"Wrong number of faces after subdivision with catmull clark";
248 #endif // INCLUDE GUARD