Loading...
Searching...
No Matches
triangulatedSAS.h
Go to the documentation of this file.
// -*- Mode: C++; tab-width: 2; -*-
// vi: set ts=2:
//
#ifndef BALL_STRUCTURE_TRIANGULATEDSAS_H
#define BALL_STRUCTURE_TRIANGULATEDSAS_H
#ifndef BALL_STRUCTURE_SASEDGE_H
# include <BALL/STRUCTURE/SASEdge.h>
#endif
#ifndef BALL_STRUCTURE_SASFACE_H
# include <BALL/STRUCTURE/SASFace.h>
#endif
#ifndef BALL_TRUCTURE_SOLVENTEXCLUDEDSURFACE_H
# include <BALL/STRUCTURE/solventAccessibleSurface.h>
#endif
#ifndef BALL_STRUCTURE_TRIANGULATEDSURFACE_H
# include <BALL/STRUCTURE/triangulatedSurface.h>
#endif
#ifndef BALL_STRUCTURE_TRIANGLE_H
# include <BALL/STRUCTURE/triangle.h>
#endif
#ifndef BALL_STRUCTURE_TRIANGLEEDGE_H
# include <BALL/STRUCTURE/triangleEdge.h>
#endif
#ifndef BALL_STRUCTURE_TRIANGLEPOINT_H
# include <BALL/STRUCTURE/trianglePoint.h>
#endif
#ifndef BALL_MATHS_ANGLE_H
# include <BALL/MATHS/angle.h>
#endif
#ifndef BALL_MATHS_CIRCLE3_H
# include <BALL/MATHS/circle3.h>
#endif
#ifndef BALL_MATHS_VECTOR3_H
# include <BALL/MATHS/vector3.h>
#endif
#ifndef BALL_DATATYPE_HASHGRID_H
# include <BALL/DATATYPE/hashGrid.h>
#endif
#include <list>
#include <vector>
namespace BALL
{
class SASTriangulator;
class BALL_EXPORT TriangulatedSAS : public TriangulatedSurface
{
public:
friend class SASTriangulator;
BALL_CREATE(TriangulatedSAS)
TriangulatedSAS();
TriangulatedSAS(const TriangulatedSAS& surface, bool = true);
TriangulatedSAS(SolventAccessibleSurface* sas, const double& density);
virtual ~TriangulatedSAS();
void set(const TriangulatedSAS& surface, bool = true);
TriangulatedSAS& operator = (const TriangulatedSAS& surface);
void setDensity(const double& density);
double getDensity() const;
void compute();
protected:
/*_ @name Attributes
*/
SolventAccessibleSurface* sas_;
double density_;
};
class BALL_EXPORT SASTriangulator
{
public:
#ifdef debug_triangulation
void printToHINFile(string filename);
void Contour2HIN(const std::list<TriangleEdge*>& contour, const string& file);
void SASEdge2HIN(SASEdge* edge, const string& file);
#endif
BALL_CREATE(SASTriangulator)
SASTriangulator();
SASTriangulator(TriangulatedSAS* tsas);
virtual ~SASTriangulator();
void run();
private:
void triangulateFace(SASFace* face);
void createPlanes(SASFace* face,
std::list< std::pair<TPlane3<double>,double> >& planes);
void tagPoints(TriangulatedSurface& part,
const std::list< std::pair<TPlane3<double>,double> >& planes);
void removeInsideTriangles(TriangulatedSurface& part);
HashGrid3<TrianglePoint*> createHashGrid(const TriangulatedSurface& part);
void createPoints(TriangulatedSurface& part,
const std::list< std::pair<TPlane3<double>,double> >& planes,
HashGrid3<TrianglePoint*>& grid);
void createNewTriangles(TriangulatedSurface& part, HashGrid3<TrianglePoint*>& grid);
void onePointOutside(Index outside, Triangle* t,
TriangulatedSurface& part, HashGrid3<TrianglePoint*>& grid);
void twoPointsOutside(Position outside1, Position outside2,
Triangle* t, TriangulatedSurface& part, HashGrid3<TrianglePoint*>& grid);
TrianglePoint* vertexExists(const TVector3<double>& point, HashGrid3<TrianglePoint*>& grid);
Size numberOfRefinements(const double& density, const double& radius);
void buildTemplateSpheres();
protected:
TriangulatedSAS* tsas_;
double sqrt_density_;
std::vector< std::list< TVector3<double> > > edge_;
HashMap<Size,TriangulatedSurface> template_spheres_;
};
} // namespace BALL
#endif // BALL_STRUCTURE_TRIANGULATEDSAS_H
BALL_EXPORT
#define BALL_EXPORT
Definition COMMON/global.h:50
SASEdge.h
SASFace.h
angle.h
circle3.h
BALL::HashGrid3
Three-dimensional Hash Grid Class.
Definition hashGrid.h:755
BALL::HashMap
HashMap class based on the STL map (containing serveral convenience functions).
Definition hashMap.h:74
BALL::SASEdge
Definition SASEdge.h:34
BALL::SASFace
Definition SASFace.h:31
BALL::SASTriangulator
Definition triangulatedSAS.h:161
BALL::SASTriangulator::tsas_
TriangulatedSAS * tsas_
Definition triangulatedSAS.h:240
BALL::SASTriangulator::SASTriangulator
SASTriangulator()
BALL::SASTriangulator::template_spheres_
HashMap< Size, TriangulatedSurface > template_spheres_
Definition triangulatedSAS.h:246
BALL::SASTriangulator::sqrt_density_
double sqrt_density_
Definition triangulatedSAS.h:242
BALL::SASTriangulator::run
void run()
BALL::SASTriangulator::edge_
std::vector< std::list< TVector3< double > > > edge_
Definition triangulatedSAS.h:244
BALL::SolventAccessibleSurface
Definition solventAccessibleSurface.h:39
BALL::TPlane3
Definition plane3.h:53
BALL::TVector3
Definition vector3.h:71
BALL::TrianglePoint
Definition trianglePoint.h:43
BALL::Triangle
Definition triangle.h:39
BALL::TriangulatedSAS
Definition triangulatedSAS.h:63
BALL::TriangulatedSAS::SASTriangulator
friend class SASTriangulator
Definition triangulatedSAS.h:72
BALL::TriangulatedSAS::density_
double density_
Definition triangulatedSAS.h:148
BALL::TriangulatedSAS::TriangulatedSAS
TriangulatedSAS()
BALL::TriangulatedSAS::compute
void compute()
BALL::TriangulatedSAS::getDensity
double getDensity() const
BALL::TriangulatedSAS::setDensity
void setDensity(const double &density)
BALL::TriangulatedSAS::sas_
SolventAccessibleSurface * sas_
Definition triangulatedSAS.h:146
BALL::TriangulatedSAS::set
void set(const TriangulatedSAS &surface, bool=true)
BALL::TriangulatedSurface
Definition triangulatedSurface.h:41
BALL::TriangulatedSurface::TriangulatedSurface
TriangulatedSurface()
BALL_CREATE
#define BALL_CREATE(name)
Definition create.h:62
hashGrid.h
BALL
Definition constants.h:13
BALL::Size
BALL_SIZE_TYPE Size
Definition COMMON/global.h:114
BALL::Position
BALL_SIZE_TYPE Position
Definition COMMON/global.h:140
BALL::Index
BALL_INDEX_TYPE Index
Definition COMMON/global.h:105
std
STL namespace.
solventAccessibleSurface.h
triangleEdge.h
trianglePoint.h
triangle.h
triangulatedSurface.h
vector3.h