BALL  1.4.1
SESEdge.h
Go to the documentation of this file.
00001 // -*- Mode: C++; tab-width: 2; -*-
00002 // vi: set ts=2:
00003 //
00004 
00005 #ifndef BALL_STRUCTURE_SESEDGE_H
00006 #define BALL_STRUCTURE_SESEDGE_H
00007 
00008 #ifndef BALL_STRUCTURE_GRAPHEDGE_H
00009 # include <BALL/STRUCTURE/graphEdge.h>
00010 #endif
00011 
00012 #ifndef BALL_STRUCTURE_RSEDGE_H
00013 # include <BALL/STRUCTURE/RSEdge.h>
00014 #endif
00015 
00016 #ifndef BALL_MATHS_CIRCLE3_H
00017 # include <BALL/MATHS/circle3.h>
00018 #endif
00019 
00020 namespace BALL
00021 {
00022   class SESFace;
00023   class SESVertex;
00024   class SolventExcludedSurface;
00025   class TriangulatedSES;
00026   class SESComputer;
00027   class SESSingularityCleaner;
00028   class SESTriangulator;
00029 
00033   class BALL_EXPORT SESEdge : public GraphEdge< SESVertex,SESEdge,SESFace >
00034   {
00035     public:
00036 
00048     friend class SESFace;
00049     friend class SESVertex;
00050     friend class SolventExcludedSurface;
00051     friend class SESComputer;
00052     friend class SESSingularityCleaner;
00053     friend class TriangulatedSES;
00054     friend class SESTriangulator;
00055 
00056     BALL_CREATE(SESEdge)
00057 
00058     
00061 
00067     enum Type
00068     {
00069       TYPE_CONCAVE  = 0,
00070       TYPE_CONVEX = 1,
00071       TYPE_SINGULAR = 2
00072     };
00073 
00074 
00076 
00079 
00083     SESEdge()
00084       ;
00085 
00093     SESEdge(const SESEdge& sesedge, bool deep = false)
00094       ;
00095 
00107     SESEdge
00108         (SESVertex*     vertex0,
00109          SESVertex*     vertex1,
00110          SESFace*       face0,
00111          SESFace*       face1,
00112          const TCircle3<double>&  circle,
00113          RSEdge*        rsedge,
00114          Type           type,
00115          Index          index)
00116       ;
00117 
00121     virtual ~SESEdge()
00122       ;
00123 
00125 
00128 
00135     void set(const SESEdge& sesedge, bool deep = false)
00136       ;
00137 
00143     SESEdge& operator = (const SESEdge& sesedge)
00144       ;
00145 
00156     void set(SESVertex* vertex0,
00157         SESVertex*      vertex1,
00158         SESFace*        face0,
00159         SESFace*        face1,
00160         const TCircle3<double>& circle,
00161         RSEdge*         rsedge,
00162         Type            type,
00163         Index           index)
00164       ;
00165 
00167 
00170 
00174     void setCircle(const TCircle3<double>& center)
00175       ;
00176 
00180     TCircle3<double> getCircle() const
00181       ;
00182 
00186     void setRSEdge(RSEdge* rsedge)
00187       ;
00188 
00192     RSEdge* getRSEdge() const
00193       ;
00194 
00198     void setType(Type type)
00199       ;
00200 
00204     Type getType() const
00205       ;
00206 
00208 
00211 
00216     virtual bool operator == (const SESEdge& sesedge) const
00217       ;
00218 
00223     virtual bool operator != (const SESEdge& sesedge) const
00224       ;
00225 
00229     virtual bool operator *= (const SESEdge&) const
00230       ;
00231 
00236     bool isFree() const
00237       ;
00238 
00240 
00241     protected:
00242 
00243     /*_ @name Attributes
00244     */
00246 
00247     /*_ The circle on which the SESEdge lies.
00248     */
00249     TCircle3<double> circle_;
00250     /*_ A pointer to the corresponding RSEdge.
00251     */
00252     RSEdge* rsedge_;
00253     /*_ The type of the SESEdge.
00254     */
00255     //int type;
00256     Type type_;
00257 
00259   };
00260 
00264 
00267   BALL_EXPORT std::ostream& operator << (std::ostream& s, const SESEdge& sesedge);
00268 
00270 
00271    
00272 } // namespace BALL
00273 
00274 #endif // BALL_STRUCTURE_SESEDGE_H
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines