BALL  1.4.1
SASEdge.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_SASEDGE_H
00006 #define BALL_STRUCTURE_SASEDGE_H
00007 
00008 #ifndef BALL_STRUCTURE_GRAPHEDGE_H
00009 # include <BALL/STRUCTURE/graphEdge.h>
00010 #endif
00011 
00012 #ifndef BALL_MATHS_ANGLE_H
00013 # include <BALL/MATHS/angle.h>
00014 #endif
00015 
00016 #ifndef BALL_MATHS_CIRCLE3_H
00017 # include <BALL/MATHS/circle3.h>
00018 #endif
00019 
00020 namespace BALL
00021 {
00022 
00023   class SolventAccessibleSurface;
00024   class SASFace;
00025   class SASVertex;
00026   class RSEdge;
00027   class TriangulatedSAS;
00028   class SASTriangulator;
00029 
00033   class BALL_EXPORT SASEdge : public GraphEdge< SASVertex,SASEdge,SASFace >
00034   {
00035     public:
00036 
00046     friend class SASVertex;
00047     friend class SASFace;
00048     friend class SolventAccessibleSurface;
00049     friend class TriangulatedSAS;
00050     friend class SASTriangulator;
00051 
00052     BALL_CREATE(SASEdge)
00053 
00054     
00057 
00061     SASEdge()
00062       ;
00063 
00071     SASEdge(const SASEdge& sasedge, bool deep = false)
00072       ;
00073 
00084     SASEdge(SASVertex* vertex0,
00085         SASVertex* vertex1,
00086         SASFace* face0,
00087         SASFace* face1,
00088         const TCircle3<double>& circle,
00089         const TAngle<double>& angle,
00090         Index index)
00091       ;
00092 
00096     virtual ~SASEdge()
00097       ;
00098 
00100 
00103 
00110     void set(const SASEdge& sasedge, bool deep = false)
00111       ;
00112 
00118     SASEdge& operator = (const SASEdge& sasedge)
00119       ;
00120 
00130     void set(SASVertex* vertex0,
00131         SASVertex* vertex1,
00132         SASFace* face0,
00133         SASFace* face1,
00134         const TCircle3<double>& circle,
00135         const TAngle<double>& angle,
00136         Index index)
00137       ;
00138 
00140 
00143 
00147     void setCircle(const TCircle3<double>& center)
00148       ;
00149 
00153     TCircle3<double> getCircle() const
00154       ;
00155 
00159     void setAngle(const TAngle<double>& angle)
00160       ;
00161 
00165     TAngle<double> getAngle() const
00166       ;
00167 
00169 
00172 
00176     virtual bool operator == (const SASEdge&) const
00177       ;
00178 
00182     virtual bool operator != (const SASEdge&) const
00183       ;
00184 
00188     virtual bool operator *= (const SASEdge&) const
00189       ;
00190 
00195     bool isFree() const
00196       ;
00197 
00199     
00200     protected:
00201     
00202     /*_ @name Attributes
00203     */
00205 
00206     /*_ The circle on which the SASEdge lies.
00207     */
00208     TCircle3<double> circle_;
00209     /*_ The angle of the SASEdge.
00210     */
00211     TAngle<double> angle_;
00212 
00214   };
00215 
00219 
00222   BALL_EXPORT std::ostream& operator << (std::ostream& s, const SASEdge& sasedge);
00223 
00225 
00226 
00227 } // namespace BALL
00228 
00229 #endif // BALL_STRUCTURE_SASEDGE_H
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines