BALL 1.5.0
SESFace.h
Go to the documentation of this file.
1// -*- Mode: C++; tab-width: 2; -*-
2// vi: set ts=2:
3//
4
5#ifndef BALL_STRUCTURE_SESFACE_H
6#define BALL_STRUCTURE_SESFACE_H
7
8#ifndef BALL_STRUCTURE_GRAPHFACE_H
10#endif
11
12#ifndef BALL_STRUCTURE_RSEDGE_H
14#endif
15
16#ifndef BALL_STRUCTURE_RSFACE_H
18#endif
19
20#ifndef BALL_STRUCTURE_RSVERTEX_H
22#endif
23
24namespace BALL
25{
26 class SESEdge;
27 class SESVertex;
28 class SolventExcludedSurface;
29 class TriangulatedSES;
30 class SESComputer;
31 class SESSingularityCleaner;
32 class SESTriangulator;
33
37 class BALL_EXPORT SESFace : public GraphFace< SESVertex,SESEdge,SESFace >
38 {
39 public:
40
52 friend class SESEdge;
53 friend class SESVertex;
55 friend class SESComputer;
57 friend class TriangulatedSES;
58 friend class SESTriangulator;
59
61
62
65
66
72 enum Type
73 {
74 TYPE_SPHERIC = 0,
75 TYPE_TORIC = 1,
76 TYPE_CONTACT = 2,
77 TYPE_TORIC_SINGULAR = 3
78 };
79
81
84
89 ;
90
98 SESFace(const SESFace& sesface, bool deep = false)
99 ;
100
109 (Type type,
110 RSVertex* rsvertex,
111 RSEdge* rsedge,
112 RSFace* rsface)
113 ;
114
118 virtual ~SESFace()
119 ;
120
122
125
132 void set(const SESFace& sesface, bool deep = false)
133 ;
134
140 SESFace& operator = (const SESFace& sesface)
141 ;
142
146 void setType(Type type)
147 ;
148
152 Type getType() const
153 ;
154
158 void setRSVertex(RSVertex* rsvertex)
159 ;
160
165 ;
166
170 void setRSEdge(RSEdge* rsedge)
171 ;
172
177 ;
178
182 void setRSFace(RSFace* rsface)
183 ;
184
189 ;
190
192
195
198 void normalize(bool singular)
199 ;
200
202
205
209 virtual bool operator == (const SESFace&) const
210 ;
211
215 virtual bool operator != (const SESFace&) const
216 ;
217
221 virtual bool operator *= (const SESFace&) const
222 ;
223
230 bool isNeighbouredTo(SESFace* face) const
231 ;
232
237 bool isFree() const
238 ;
239
244 bool hasSingularEdges() const
245 ;
246
248
249 private:
250
251 void normalizeNonSingularToricFace_()
252 ;
253
254 void normalizeSingularToricFace_()
255 ;
256
257 void findTriangle_
258 (bool first,
259 SESEdge*& edge0,
260 SESEdge*& edge1,
261 SESEdge*& edge2,
262 SESVertex*& vertex0,
263 SESVertex*& vertex1,
264 SESVertex*& vertex2)
265 ;
266
267 protected:
268
272
273 /*_ The type of the face.
274 */
276 /*_ A pointer to the corresponding RSVertex
277 (if type_ is TYPE_CONTACT).
278 */
280 /*_ A pointer to the corresponding RSEdge
281 (if type_ is TYPE_TORIC or TYPE_TORIC_SINGULAR).
282 */
284 /*_ A pointer to the corresponding RSFace
285 (if type_ is TYPE_SPHERIC).
286 */
288
290 };
291
295
298 BALL_EXPORT std::ostream& operator << (std::ostream& s, const SESFace& sesface);
299
301
302
303} // namespace BALL
304
305#endif // BALL_STRUCTURE_SESFACE_H
#define BALL_CREATE(name)
Definition: create.h:62
BALL_EXPORT std::ostream & operator<<(std::ostream &os, const Exception::GeneralException &e)
Definition: constants.h:13
BALL_EXPORT bool operator==(const String &s1, const String &s2)
BALL_EXPORT bool operator!=(const String &s1, const String &s2)
RSEdge * rsedge_
Definition: SESFace.h:283
virtual ~SESFace()
RSFace * rsface_
Definition: SESFace.h:287
bool hasSingularEdges() const
void setRSEdge(RSEdge *rsedge)
bool isNeighbouredTo(SESFace *face) const
Type type_
Definition: SESFace.h:275
RSVertex * rsvertex_
Definition: SESFace.h:279
void normalize(bool singular)
Type getType() const
SESFace(const SESFace &sesface, bool deep=false)
void setRSFace(RSFace *rsface)
RSEdge * getRSEdge() const
void set(const SESFace &sesface, bool deep=false)
RSVertex * getRSVertex() const
void setType(Type type)
bool isFree() const
RSFace * getRSFace() const
void setRSVertex(RSVertex *rsvertex)
SESFace(Type type, RSVertex *rsvertex, RSEdge *rsedge, RSFace *rsface)
#define BALL_EXPORT
Definition: COMMON/global.h:50