SASEdge.h

Go to the documentation of this file.
00001 // -*- Mode: C++; tab-width: 2; -*-
00002 // vi: set ts=2:
00003 //
00004 // $Id: SASEdge.h,v 1.9 2005/12/23 17:02:01 amoll Exp $
00005 //
00006 
00007 #ifndef BALL_STRUCTURE_SASEDGE_H
00008 #define BALL_STRUCTURE_SASEDGE_H
00009 
00010 #ifndef BALL_STRUCTURE_GRAPHEDGE_H
00011 # include <BALL/STRUCTURE/graphEdge.h>
00012 #endif
00013 
00014 #ifndef BALL_MATHS_ANGLE_H
00015 # include <BALL/MATHS/angle.h>
00016 #endif
00017 
00018 #ifndef BALL_MATHS_CIRCLE3_H
00019 # include <BALL/MATHS/circle3.h>
00020 #endif
00021 
00022 namespace BALL
00023 {
00024 
00025   class SolventAccessibleSurface;
00026   class SASFace;
00027   class SASVertex;
00028   class RSEdge;
00029   class TriangulatedSAS;
00030   class SASTriangulator;
00031 
00035   class BALL_EXPORT SASEdge : public GraphEdge< SASVertex,SASEdge,SASFace >
00036   {
00037     public:
00038 
00048     friend class SASVertex;
00049     friend class SASFace;
00050     friend class SolventAccessibleSurface;
00051     friend class TriangulatedSAS;
00052     friend class SASTriangulator;
00053 
00054     BALL_CREATE(SASEdge)
00055 
00056     
00059 
00063     SASEdge()
00064       ;
00065 
00073     SASEdge(const SASEdge& sasedge, bool deep = false)
00074       ;
00075 
00086     SASEdge(SASVertex* vertex0,
00087         SASVertex* vertex1,
00088         SASFace* face0,
00089         SASFace* face1,
00090         const TCircle3<double>& circle,
00091         const TAngle<double>& angle,
00092         Index index)
00093       ;
00094 
00098     virtual ~SASEdge()
00099       ;
00100 
00102 
00105 
00112     void set(const SASEdge& sasedge, bool deep = false)
00113       ;
00114 
00120     SASEdge& operator = (const SASEdge& sasedge)
00121       ;
00122 
00132     void set(SASVertex* vertex0,
00133         SASVertex* vertex1,
00134         SASFace* face0,
00135         SASFace* face1,
00136         const TCircle3<double>& circle,
00137         const TAngle<double>& angle,
00138         Index index)
00139       ;
00140 
00142 
00145 
00149     void setCircle(const TCircle3<double>& center)
00150       ;
00151 
00155     TCircle3<double> getCircle() const
00156       ;
00157 
00161     void setAngle(const TAngle<double>& angle)
00162       ;
00163 
00167     TAngle<double> getAngle() const
00168       ;
00169 
00171 
00174 
00178     virtual bool operator == (const SASEdge&) const
00179       ;
00180 
00184     virtual bool operator != (const SASEdge&) const
00185       ;
00186 
00190     virtual bool operator *= (const SASEdge&) const
00191       ;
00192 
00197     bool isFree() const
00198       ;
00199 
00201     
00202     protected:
00203     
00204     /*_ @name Attributes
00205     */
00207 
00208     /*_ The circle on which the SASEdge lies.
00209     */
00210     TCircle3<double> circle_;
00211     /*_ The angle of the SASEdge.
00212     */
00213     TAngle<double> angle_;
00214 
00216   };
00217 
00221 
00224   BALL_EXPORT std::ostream& operator << (std::ostream& s, const SASEdge& sasedge);
00225 
00227 
00228 
00229 } // namespace BALL
00230 
00231 #endif // BALL_STRUCTURE_SASEDGE_H