Developer Documentation
Loading...
Searching...
No Matches
unittests_common.cc
1/*
2 * unittests_common.cc
3 *
4 * Created on: Jan 10, 2012
5 * Author: kremer
6 */
7
8#include "unittests_common.hh"
9
10using namespace OpenVolumeMesh::Geometry;
11
12void PolyhedralMeshBase::generatePolyhedralMesh(PolyhedralMesh& _mesh) {
13
14 Vec3d p1(0.0, 0.0, 0.0);
15 Vec3d p2(1.0, 0.0, 0.0);
16 Vec3d p3(1.0, 1.0, 0.0);
17 Vec3d p4(0.0, 1.0, 0.0);
18
19 Vec3d p5(0.0, 0.0, 1.0);
20 Vec3d p6(1.0, 0.0, 1.0);
21 Vec3d p7(1.0, 1.0, 1.0);
22 Vec3d p8(0.0, 1.0, 1.0);
23
24 Vec3d p9(0.0, 0.0, 2.0);
25 Vec3d p10(1.0, 0.0, 2.0);
26 Vec3d p11(1.0, 1.0, 2.0);
27 Vec3d p12(0.0, 1.0, 2.0);
28
29 VertexHandle v1 = _mesh.add_vertex(p1);
30 VertexHandle v2 = _mesh.add_vertex(p2);
31 VertexHandle v3 = _mesh.add_vertex(p3);
32 VertexHandle v4 = _mesh.add_vertex(p4);
33
34 VertexHandle v5 = _mesh.add_vertex(p5);
35 VertexHandle v6 = _mesh.add_vertex(p6);
36 VertexHandle v7 = _mesh.add_vertex(p7);
37 VertexHandle v8 = _mesh.add_vertex(p8);
38
39 VertexHandle v9 = _mesh.add_vertex(p9);
40 VertexHandle v10 = _mesh.add_vertex(p10);
41 VertexHandle v11 = _mesh.add_vertex(p11);
42 VertexHandle v12 = _mesh.add_vertex(p12);
43
44 std::vector<VertexHandle> vertices;
45 vertices.push_back(v1); vertices.push_back(v2);
46 vertices.push_back(v3); vertices.push_back(v4);
47 FaceHandle f1 = _mesh.add_face(vertices);
48
49 vertices.clear();
50 vertices.push_back(v5); vertices.push_back(v6);
51 vertices.push_back(v7); vertices.push_back(v8);
52 FaceHandle f2 = _mesh.add_face(vertices);
53
54 vertices.clear();
55 vertices.push_back(v2); vertices.push_back(v6);
56 vertices.push_back(v7); vertices.push_back(v3);
57 FaceHandle f3 = _mesh.add_face(vertices);
58
59 vertices.clear();
60 vertices.push_back(v1); vertices.push_back(v4);
61 vertices.push_back(v8); vertices.push_back(v5);
62 FaceHandle f4 = _mesh.add_face(vertices);
63
64 vertices.clear();
65 vertices.push_back(v4); vertices.push_back(v3);
66 vertices.push_back(v7); vertices.push_back(v8);
67 FaceHandle f5 = _mesh.add_face(vertices);
68
69 vertices.clear();
70 vertices.push_back(v6); vertices.push_back(v5);
71 vertices.push_back(v1); vertices.push_back(v2);
72 FaceHandle f6 = _mesh.add_face(vertices);
73
74 // Add first cell
75 std::vector<HalfFaceHandle> halffaces;
76 halffaces.push_back(_mesh.halfface_handle(f1, 1)); halffaces.push_back(_mesh.halfface_handle(f2, 0));
77 halffaces.push_back(_mesh.halfface_handle(f3, 1)); halffaces.push_back(_mesh.halfface_handle(f4, 1));
78 halffaces.push_back(_mesh.halfface_handle(f5, 1)); halffaces.push_back(_mesh.halfface_handle(f6, 0));
79 _mesh.add_cell(halffaces);
80
81 vertices.clear();
82 vertices.push_back(v9); vertices.push_back(v10);
83 vertices.push_back(v11); vertices.push_back(v12);
84 FaceHandle f7 = _mesh.add_face(vertices);
85
86 vertices.clear();
87 vertices.push_back(v10); vertices.push_back(v11);
88 vertices.push_back(v7); vertices.push_back(v6);
89 FaceHandle f8 = _mesh.add_face(vertices);
90
91 vertices.clear();
92 vertices.push_back(v5); vertices.push_back(v8);
93 vertices.push_back(v12); vertices.push_back(v9);
94 FaceHandle f9 = _mesh.add_face(vertices);
95
96 vertices.clear();
97 vertices.push_back(v8); vertices.push_back(v7);
98 vertices.push_back(v11); vertices.push_back(v12);
99 FaceHandle f10 = _mesh.add_face(vertices);
100
101 vertices.clear();
102 vertices.push_back(v10); vertices.push_back(v9);
103 vertices.push_back(v5); vertices.push_back(v6);
104 FaceHandle f11 = _mesh.add_face(vertices);
105
106 halffaces.clear();
107 halffaces.push_back(_mesh.halfface_handle(f2, 1)); halffaces.push_back(_mesh.halfface_handle(f7, 0));
108 halffaces.push_back(_mesh.halfface_handle(f8, 1)); halffaces.push_back(_mesh.halfface_handle(f9, 1));
109 halffaces.push_back(_mesh.halfface_handle(f10, 1)); halffaces.push_back(_mesh.halfface_handle(f11, 0));
110 _mesh.add_cell(halffaces);
111}
112
113void HexahedralMeshBase::generateHexahedralMesh(HexahedralMesh& _mesh) {
114
115 Vec3d p1(0.0, 0.0, 0.0);
116 Vec3d p2(1.0, 0.0, 0.0);
117 Vec3d p3(1.0, 1.0, 0.0);
118 Vec3d p4(0.0, 1.0, 0.0);
119
120 Vec3d p5(0.0, 0.0, 1.0);
121 Vec3d p6(1.0, 0.0, 1.0);
122 Vec3d p7(1.0, 1.0, 1.0);
123 Vec3d p8(0.0, 1.0, 1.0);
124
125 Vec3d p9(0.0, 0.0, 2.0);
126 Vec3d p10(1.0, 0.0, 2.0);
127 Vec3d p11(1.0, 1.0, 2.0);
128 Vec3d p12(0.0, 1.0, 2.0);
129
130 VertexHandle v1 = _mesh.add_vertex(p1);
131 VertexHandle v2 = _mesh.add_vertex(p2);
132 VertexHandle v3 = _mesh.add_vertex(p3);
133 VertexHandle v4 = _mesh.add_vertex(p4);
134
135 VertexHandle v5 = _mesh.add_vertex(p5);
136 VertexHandle v6 = _mesh.add_vertex(p6);
137 VertexHandle v7 = _mesh.add_vertex(p7);
138 VertexHandle v8 = _mesh.add_vertex(p8);
139
140 VertexHandle v9 = _mesh.add_vertex(p9);
141 VertexHandle v10 = _mesh.add_vertex(p10);
142 VertexHandle v11 = _mesh.add_vertex(p11);
143 VertexHandle v12 = _mesh.add_vertex(p12);
144
145 std::vector<VertexHandle> vertices;
146 vertices.push_back(v1); vertices.push_back(v2);
147 vertices.push_back(v3); vertices.push_back(v4);
148 FaceHandle f0 = _mesh.add_face(vertices);
149
150 vertices.clear();
151 vertices.push_back(v5); vertices.push_back(v6);
152 vertices.push_back(v7); vertices.push_back(v8);
153 FaceHandle f1 = _mesh.add_face(vertices);
154
155 vertices.clear();
156 vertices.push_back(v2); vertices.push_back(v6);
157 vertices.push_back(v7); vertices.push_back(v3);
158 FaceHandle f2 = _mesh.add_face(vertices);
159
160 vertices.clear();
161 vertices.push_back(v1); vertices.push_back(v5);
162 vertices.push_back(v8); vertices.push_back(v4);
163 FaceHandle f3 = _mesh.add_face(vertices);
164
165 vertices.clear();
166 vertices.push_back(v1); vertices.push_back(v2);
167 vertices.push_back(v6); vertices.push_back(v5);
168 FaceHandle f4 = _mesh.add_face(vertices);
169
170 vertices.clear();
171 vertices.push_back(v4); vertices.push_back(v3);
172 vertices.push_back(v7); vertices.push_back(v8);
173 FaceHandle f5 = _mesh.add_face(vertices);
174
175 // Add first cell
176 std::vector<HalfFaceHandle> halffaces;
177 halffaces.push_back(_mesh.halfface_handle(f0, 1)); halffaces.push_back(_mesh.halfface_handle(f1, 0));
178 halffaces.push_back(_mesh.halfface_handle(f2, 1)); halffaces.push_back(_mesh.halfface_handle(f3, 0));
179 halffaces.push_back(_mesh.halfface_handle(f4, 0)); halffaces.push_back(_mesh.halfface_handle(f5, 1));
180 _mesh.add_cell(halffaces);
181
182 vertices.clear();
183 vertices.push_back(v9); vertices.push_back(v10);
184 vertices.push_back(v11); vertices.push_back(v12);
185 FaceHandle f6 = _mesh.add_face(vertices);
186
187 vertices.clear();
188 vertices.push_back(v6); vertices.push_back(v10);
189 vertices.push_back(v11); vertices.push_back(v7);
190 FaceHandle f7 = _mesh.add_face(vertices);
191
192 vertices.clear();
193 vertices.push_back(v5); vertices.push_back(v9);
194 vertices.push_back(v12); vertices.push_back(v8);
195 FaceHandle f8 = _mesh.add_face(vertices);
196
197 vertices.clear();
198 vertices.push_back(v5); vertices.push_back(v6);
199 vertices.push_back(v10); vertices.push_back(v9);
200 FaceHandle f9 = _mesh.add_face(vertices);
201
202 vertices.clear();
203 vertices.push_back(v8); vertices.push_back(v7);
204 vertices.push_back(v11); vertices.push_back(v12);
205 FaceHandle f10 = _mesh.add_face(vertices);
206
207 halffaces.clear();
208 halffaces.push_back(_mesh.halfface_handle(f1, 1)); halffaces.push_back(_mesh.halfface_handle(f6, 0));
209 halffaces.push_back(_mesh.halfface_handle(f7, 1)); halffaces.push_back(_mesh.halfface_handle(f8, 0));
210 halffaces.push_back(_mesh.halfface_handle(f9, 0)); halffaces.push_back(_mesh.halfface_handle(f10, 1));
211 _mesh.add_cell(halffaces);
212}
213
214void TetrahedralMeshBase::generateTetrahedralMesh(TetrahedralMesh& _mesh) {
215
216 Vec3d p1(0.0, 0.0, 0.0);
217 Vec3d p2(1.0, 0.0, 0.0);
218 Vec3d p3(1.0, 1.0, 0.0);
219 Vec3d p4(0.0, 1.0, 0.0);
220
221 VertexHandle v1 = _mesh.add_vertex(p1);
222 VertexHandle v2 = _mesh.add_vertex(p2);
223 VertexHandle v3 = _mesh.add_vertex(p3);
224 VertexHandle v4 = _mesh.add_vertex(p4);
225
226 // Add cell
227 _mesh.add_cell(v1, v2, v3, v4);
228}
VertexHandle add_vertex(const VecT &_p)
Add a geometric point to the mesh.
virtual FaceHandle add_face(std::vector< HalfEdgeHandle > _halfedges, bool _topologyCheck=false)
Add face via incident edges.
static HalfFaceHandle halfface_handle(FaceHandle _h, const unsigned char _subIdx)
Conversion function.
virtual CellHandle add_cell(std::vector< HalfFaceHandle > _halffaces, bool _topologyCheck=false)
Add cell via incident halffaces.