Commit 2323082b authored by Mike Kremer's avatar Mike Kremer
Browse files

Added second tutorial

git-svn-id: 66977474-1d4b-4f09-8fe9-267525286df2
parent b99664b6
......@@ -3,15 +3,6 @@
title = {OpenMesh - A generic and efficient polygon mesh data structure},
year = {2002},
author = {Günter M. Ziegler},
title = {Lectures on Polytopes},
series = {Graduate Texts in Mathematics},
publisher = {Springer},
year = {2006},
address = {New York},
isbn = {978-0-387-94365-7},
author = {Jan Möbius and Leif Kobbelt},
title = {OpenFlipper: An Open Source Geometry Processing and Rendering Framework},
......@@ -21,13 +12,13 @@
address = {New York},
year = {2010}
author = {Mario Botsch and Mark Pauly and Christian Rossl and Stephan Bischoff and Leif Kobbelt},
title = {Geometric Modeling Based on Triangle Meshes},
booktitle = {ACM SIGGRAPH 2006 Courses},
series = {SIGGRAPH '06},
year = {2006},
isbn = {1-59593-364-6},
publisher = {ACM},
address = {New York, NY, USA},
author = {Peter Murdoch and Steven Benzley and Ted Blacker and Scott A. Mitchell},
title = {The spatial twist continuum: A connectivity based method for representing all-hexahedral finite element meshes},
journal = {Finite Elements in Analysis and Design},
volume = {28},
number = {2},
pages = {137 -- 149},
year = {1997},
issn = {0168-874X}
......@@ -55,4 +55,43 @@ for(OpenVolumeMesh::PolyhedralMesh<Vec3f>::VertexOHalfEdgeIter voh_it = myMesh.v
In the last example, we create a hexahedral mesh and use its specialized OpenVolumeMesh::CellSheetCellIter
iterator class. This iterator expects a cell handle as parameter and iterates over all adjacent cells
in the same \e sheet. A sheet is, in the terms of the \e spatial \e twist \e continuum, short STC,
a "layer" of hexahedra as illustrated in the following figure. The gray shaded hexahedra form
a sheet, all other cells (except the outlines of the boundary cells) are invisible in this illustration.
\image html sheet_illustration.png
Starting from a hexahedron, we determine its virtual axis that is \e orthogonal to the desired sheet
(note that there are always two opposing virtual axes that are orthogonal to such a sheet).
We create our sheet iterator by passing the reference cell's handle as well as an orthogonal
virtual axis with respect to that cell to the iterator's constructor. The iterators then
iterates over all directly adjacent cells in the same sheet (those hexahedra that share a common
face with the reference hexahedron). Consider the following code:
typedef OpenVolumeMesh::Geometry::Vec3d Vec3d;
typdef OpenVolumeMesh::HexahedralMesh<Vec3d> HexahedralMeshV3d;
// Instantiate a hexahedral mesh
HexahedralMeshV3d myMesh;
// Fill mesh with geometry
// Get handle of first cell
HexahedralMeshV3d::CellHandle ch = *(myMesh.cells_begin());
// Iterate over the hexahedra in the same sheet that are adjacent
// to the reference hexahedron (cell handle ch)
for(HexahedralMeshV3d::CellSheetCellIter csc_it = myMesh.csc_iter(ch);
csc_it.valid(); ++csc_it) {
// Now dereferencing csc_it returns a cell handle
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment