OpenVolumeMesh
Toggle main menu visibility
Loading...
Searching...
No Matches
BaseEntities.hh
1
/*===========================================================================*\
2
* *
3
* OpenVolumeMesh *
4
* Copyright (C) 2011 by Computer Graphics Group, RWTH Aachen *
5
* www.openvolumemesh.org *
6
* *
7
*---------------------------------------------------------------------------*
8
* This file is part of OpenVolumeMesh. *
9
* *
10
* OpenVolumeMesh is free software: you can redistribute it and/or modify *
11
* it under the terms of the GNU Lesser General Public License as *
12
* published by the Free Software Foundation, either version 3 of *
13
* the License, or (at your option) any later version with the *
14
* following exceptions: *
15
* *
16
* If other files instantiate templates or use macros *
17
* or inline functions from this file, or you compile this file and *
18
* link it with other files to produce an executable, this file does *
19
* not by itself cause the resulting executable to be covered by the *
20
* GNU Lesser General Public License. This exception does not however *
21
* invalidate any other reasons why the executable file might be *
22
* covered by the GNU Lesser General Public License. *
23
* *
24
* OpenVolumeMesh is distributed in the hope that it will be useful, *
25
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
26
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
27
* GNU Lesser General Public License for more details. *
28
* *
29
* You should have received a copy of the GNU LesserGeneral Public *
30
* License along with OpenVolumeMesh. If not, *
31
* see <http://www.gnu.org/licenses/>. *
32
* *
33
\*===========================================================================*/
34
35
/*===========================================================================*\
36
* *
37
* $Revision$ *
38
* $Date$ *
39
* $LastChangedBy$ *
40
* *
41
\*===========================================================================*/
42
43
#ifndef BASEENTITIES_HH_
44
#define BASEENTITIES_HH_
45
46
#include <vector>
47
48
#include "OpenVolumeMeshHandle.hh"
49
50
namespace
OpenVolumeMesh {
51
52
class
OpenVolumeMeshEdge {
53
friend
class
TopologyKernel;
54
public
:
55
OpenVolumeMeshEdge(
const
VertexHandle
& _fromVertex,
56
const
VertexHandle
& _toVertex) :
57
fromVertex_(_fromVertex),
58
toVertex_(_toVertex) {
59
}
60
61
virtual
~OpenVolumeMeshEdge() {
62
}
63
64
const
VertexHandle
& from_vertex()
const
{
65
return
fromVertex_;
66
}
67
const
VertexHandle
& to_vertex()
const
{
68
return
toVertex_;
69
}
70
71
protected
:
72
73
void
set_from_vertex(
const
VertexHandle
& _vertex) {
74
fromVertex_ = _vertex;
75
}
76
void
set_to_vertex(
const
VertexHandle
& _vertex) {
77
toVertex_ = _vertex;
78
}
79
80
private
:
81
VertexHandle
fromVertex_;
82
VertexHandle
toVertex_;
83
};
84
85
// Stream operator for edges
86
std::ostream& operator<<(std::ostream& _os,
const
OpenVolumeMeshEdge
& _edge);
87
88
//***************************************************************************
89
90
class
OpenVolumeMeshFace {
91
friend
class
TopologyKernel;
92
public
:
93
OpenVolumeMeshFace(
const
std::vector<HalfEdgeHandle>& _halfedges) :
94
halfedges_(_halfedges) {
95
}
96
97
virtual
~OpenVolumeMeshFace() {
98
}
99
100
const
std::vector<HalfEdgeHandle>& halfedges()
const
{
101
return
halfedges_;
102
}
103
104
protected
:
105
106
void
set_halfedges(
const
std::vector<HalfEdgeHandle>& _halfedges) {
107
halfedges_ = _halfedges;
108
}
109
110
private
:
111
std::vector<HalfEdgeHandle> halfedges_;
112
};
113
114
// Stream operator for faces
115
std::ostream& operator<<(std::ostream& _os,
const
OpenVolumeMeshFace
& _face);
116
117
//***************************************************************************
118
119
class
OpenVolumeMeshCell {
120
friend
class
TopologyKernel;
121
public
:
122
OpenVolumeMeshCell(
const
std::vector<HalfFaceHandle>& _halffaces) :
123
halffaces_(_halffaces) {
124
}
125
126
virtual
~OpenVolumeMeshCell() {
127
}
128
129
const
std::vector<HalfFaceHandle>& halffaces()
const
{
130
return
halffaces_;
131
}
132
133
protected
:
134
135
void
set_halffaces(
const
std::vector<HalfFaceHandle>& _halffaces) {
136
halffaces_ = _halffaces;
137
}
138
139
private
:
140
std::vector<HalfFaceHandle> halffaces_;
141
};
142
143
// Stream operator for cells
144
std::ostream& operator<<(std::ostream& _os,
const
OpenVolumeMeshCell
& _cell);
145
146
}
// Namespace OpenVolumeMesh
147
148
#endif
/* BASEENTITIES_HH_ */
OpenVolumeMesh::OpenVolumeMeshCell
Definition
BaseEntities.hh:119
OpenVolumeMesh::OpenVolumeMeshEdge
Definition
BaseEntities.hh:52
OpenVolumeMesh::OpenVolumeMeshFace
Definition
BaseEntities.hh:90
OpenVolumeMesh::VertexHandle
Definition
OpenVolumeMeshHandle.hh:98
Project
OpenVolumeMesh
, Computer Graphics Group Aachen,
RWTH Aachen