NanoShaper
0.3.1
NanoShaper is a tool able to triangulate and inspect an arbitray triangulated surface or several types of molecular surfaces such as the Gaussian, Skin and the SES
|
This class builds and converts to a DelPhi suitable representation the Skin Surface. All the gathered info is analytically computed both the intersections and the projections. In order to get an accurate result for the projection routine, as root finding algorithm is used the method of the companion matrix. More...
#include <SkinSurface.h>
Public Member Functions | |
SkinSurface () | |
SkinSurface (DelPhiShared *ds) | |
virtual bool | build () |
virtual bool | save (char *fileName) |
virtual bool | load (char *fileName) |
virtual void | printSummary () |
virtual bool | getProjection (double p[3], double *proj1, double *proj2, double *proj3, double *normal1, double *normal2, double *normal3) |
virtual void | getRayIntersection (double p1[3], double p2[3], vector< pair< double, double * > > &intersections, int thdID) |
virtual void | preProcessPanel () |
virtual void | postRayCasting () |
virtual bool | preBoundaryProjection () |
void | setShrinking (double ss) |
double | getShrinking () |
void | setSavePovRay (bool ss) |
bool | getSavePovRay () |
void | setAuxGrid (unsigned int dim, unsigned int max) |
void | setAuxGrid2D (unsigned int dim, unsigned int max) |
This class builds and converts to a DelPhi suitable representation the Skin Surface. All the gathered info is analytically computed both the intersections and the projections. In order to get an accurate result for the projection routine, as root finding algorithm is used the method of the companion matrix.
SkinSurface::SkinSurface | ( | ) |
Default constructor
SkinSurface::SkinSurface | ( | DelPhiShared * | ds | ) |
set DelPhi environment
bool SkinSurface::build | ( | ) | [virtual] |
Compute skin surface. Call it after load
Implements Surface.
bool SkinSurface::getProjection | ( | double | p[3], |
double * | proj1, | ||
double * | proj2, | ||
double * | proj3, | ||
double * | normal1, | ||
double * | normal2, | ||
double * | normal3 | ||
) | [virtual] |
Get a projection of a point on the surface. Return projection and normal
Implements Surface.
void SkinSurface::getRayIntersection | ( | double | p1[3], |
double | p2[3], | ||
vector< pair< double, double * > > & | intersections, | ||
int | thdID | ||
) | [inline, virtual] |
Get all the intersections of a ray that goes from P1 to P2 over the surface. The interesctions are returned with increasing distance order. the first double in the vector is the t parameter for the intersection of the parametric line and the surface, the double pointer is the normal vector. During ray surface intersection the previously built auxiliary grid is used to speed up computations
Implements Surface.
bool SkinSurface::load | ( | char * | fileName | ) | [virtual] |
Load the surface from a file in .skin format
Implements Surface.
void SkinSurface::postRayCasting | ( | ) | [virtual] |
this function is called after ray casting to perform any post processing, such as memory clean-up, after ray casting
Reimplemented from Surface.
bool SkinSurface::preBoundaryProjection | ( | ) | [virtual] |
this function is called before boundary grid projection to perform any pre-processing, such as memory setup-up.
Reimplemented from Surface.
void SkinSurface::preProcessPanel | ( | ) | [virtual] |
pre-process panel to accelerate ray-tracing
Reimplemented from Surface.
void SkinSurface::printSummary | ( | ) | [virtual] |
Print number of mixed cells and types
Implements Surface.
bool SkinSurface::save | ( | char * | fileName | ) | [virtual] |
void SkinSurface::setAuxGrid | ( | unsigned int | dim, |
unsigned int | max | ||
) | [inline] |
for the 3d grid set the max grid size and the maximal number of patches inside a grid cube
void SkinSurface::setAuxGrid2D | ( | unsigned int | dim, |
unsigned int | max | ||
) | [inline] |
for the 2d grid set the max grid size and the maximal number of patches inside a grid cube. The grid cube itself does not exist just a reference, indeed the real quantity is MAX_MIXEDCELLS_2D that is the number of patches along the grid tube