Changeset 244a84


Ignore:
Timestamp:
Jan 26, 2010, 12:52:31 PM (15 years ago)
Author:
Frederik Heber <heber@…>
Branches:
Action_Thermostats, Add_AtomRandomPerturbation, Add_FitFragmentPartialChargesAction, Add_RotateAroundBondAction, Add_SelectAtomByNameAction, Added_ParseSaveFragmentResults, AddingActions_SaveParseParticleParameters, Adding_Graph_to_ChangeBondActions, Adding_MD_integration_tests, Adding_ParticleName_to_Atom, Adding_StructOpt_integration_tests, AtomFragments, Automaking_mpqc_open, AutomationFragmentation_failures, Candidate_v1.5.4, Candidate_v1.6.0, Candidate_v1.6.1, ChangeBugEmailaddress, ChangingTestPorts, ChemicalSpaceEvaluator, CombiningParticlePotentialParsing, Combining_Subpackages, Debian_Package_split, Debian_package_split_molecuildergui_only, Disabling_MemDebug, Docu_Python_wait, EmpiricalPotential_contain_HomologyGraph, EmpiricalPotential_contain_HomologyGraph_documentation, Enable_parallel_make_install, Enhance_userguide, Enhanced_StructuralOptimization, Enhanced_StructuralOptimization_continued, Example_ManyWaysToTranslateAtom, Exclude_Hydrogens_annealWithBondGraph, FitPartialCharges_GlobalError, Fix_BoundInBox_CenterInBox_MoleculeActions, Fix_ChargeSampling_PBC, Fix_ChronosMutex, Fix_FitPartialCharges, Fix_FitPotential_needs_atomicnumbers, Fix_ForceAnnealing, Fix_IndependentFragmentGrids, Fix_ParseParticles, Fix_ParseParticles_split_forward_backward_Actions, Fix_PopActions, Fix_QtFragmentList_sorted_selection, Fix_Restrictedkeyset_FragmentMolecule, Fix_StatusMsg, Fix_StepWorldTime_single_argument, Fix_Verbose_Codepatterns, Fix_fitting_potentials, Fixes, ForceAnnealing_goodresults, ForceAnnealing_oldresults, ForceAnnealing_tocheck, ForceAnnealing_with_BondGraph, ForceAnnealing_with_BondGraph_continued, ForceAnnealing_with_BondGraph_continued_betteresults, ForceAnnealing_with_BondGraph_contraction-expansion, FragmentAction_writes_AtomFragments, FragmentMolecule_checks_bonddegrees, GeometryObjects, Gui_Fixes, Gui_displays_atomic_force_velocity, ImplicitCharges, IndependentFragmentGrids, IndependentFragmentGrids_IndividualZeroInstances, IndependentFragmentGrids_IntegrationTest, IndependentFragmentGrids_Sole_NN_Calculation, JobMarket_RobustOnKillsSegFaults, JobMarket_StableWorkerPool, JobMarket_unresolvable_hostname_fix, MoreRobust_FragmentAutomation, ODR_violation_mpqc_open, PartialCharges_OrthogonalSummation, PdbParser_setsAtomName, PythonUI_with_named_parameters, QtGui_reactivate_TimeChanged_changes, Recreated_GuiChecks, Rewrite_FitPartialCharges, RotateToPrincipalAxisSystem_UndoRedo, SaturateAtoms_findBestMatching, SaturateAtoms_singleDegree, StoppableMakroAction, Subpackage_CodePatterns, Subpackage_JobMarket, Subpackage_LinearAlgebra, Subpackage_levmar, Subpackage_mpqc_open, Subpackage_vmg, Switchable_LogView, ThirdParty_MPQC_rebuilt_buildsystem, TrajectoryDependenant_MaxOrder, TremoloParser_IncreasedPrecision, TremoloParser_MultipleTimesteps, TremoloParser_setsAtomName, Ubuntu_1604_changes, stable
Children:
04b6f9, 481601
Parents:
315164
Message:

GetDistanceToSurface() separated, filling now with water instead of boron, DissectMoleculeIntoConnectedSubgraphs() now working on list of molecules instead of single one.

Signed-off-by: Frederik Heber <heber@…>

Location:
src
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • src/analysis_correlation.cpp

    r315164 r244a84  
    308308  }
    309309  outmap = new CorrelationToSurfaceMap;
     310  double ShortestDistance = 0.;
     311  BoundaryTriangleSet *ShortestTriangle = NULL;
    310312  for (MoleculeList::const_iterator MolWalker = molecules->ListOfMolecules.begin(); MolWalker != molecules->ListOfMolecules.end(); MolWalker++)
    311313    if ((*MolWalker)->ActiveFlag) {
     
    321323          periodicX.MatrixMultiplication(FullInverseMatrix);  // x now in [0,1)^3
    322324          // go through every range in xyz and get distance
     325          ShortestDistance = -1.;
    323326          for (n[0]=-ranges[0]; n[0] <= ranges[0]; n[0]++)
    324327            for (n[1]=-ranges[1]; n[1] <= ranges[1]; n[1]++)
     
    327330                checkX.AddVector(&periodicX);
    328331                checkX.MatrixMultiplication(FullMatrix);
    329                 triangle = Surface->FindClosestTriangleToVector(&checkX, LC );
    330                 if (triangle != NULL) {
    331                   distance = DistanceToTrianglePlane(&checkX, triangle);
    332                   outmap->insert ( pair<double, pair<atom *, BoundaryTriangleSet*> >(distance, pair<atom *, BoundaryTriangleSet*> (Walker, triangle) ) );
     332                triangle = Surface->FindClosestTriangleToVector(&checkX, LC);
     333                distance = Surface->GetDistanceSquaredToTriangle(checkX, triangle);
     334                if ((ShortestDistance == -1.) || (distance < ShortestDistance)) {
     335                  ShortestDistance = distance;
     336                  ShortestTriangle = triangle;
    333337                }
    334           }
     338              }
     339          // insert
     340          ShortestDistance = sqrt(ShortestDistance);
     341          outmap->insert ( pair<double, pair<atom *, BoundaryTriangleSet*> >(ShortestDistance, pair<atom *, BoundaryTriangleSet*> (Walker, ShortestTriangle) ) );
     342          //Log() << Verbose(1) << "INFO: Inserting " << Walker << " with distance " << ShortestDistance << " to " << *ShortestTriangle << "." << endl;
    335343        }
    336344      }
     
    406414  *file << "# BinStart\tTriangle" << endl;
    407415  for (CorrelationToSurfaceMap::const_iterator runner = map->begin(); runner != map->end(); ++runner) {
    408     *file << runner->first << "\t" << *(runner->second.second) << endl;
    409   }
    410 };
    411 
     416    *file << runner->first << "\t" << *(runner->second.first) << "\t" << *(runner->second.second) << endl;
     417  }
     418};
     419
  • src/analysis_correlation.hpp

    r315164 r244a84  
    5353double GetBin ( const double value, const double BinWidth, const double BinStart );
    5454void OutputCorrelation( ofstream * const file, const BinPairMap * const map );
    55 void OutputPairCorrelation( ofstream * const file, const BinPairMap * const map );
    56 void OutputCorrelationToPoint( ofstream * const file, const BinPairMap * const map );
    57 void OutputCorrelationToSurface( ofstream * const file, const BinPairMap * const map );
     55void OutputPairCorrelation( ofstream * const file, const PairCorrelationMap * const map );
     56void OutputCorrelationToPoint( ofstream * const file, const CorrelationToPointMap * const map );
     57void OutputCorrelationToSurface( ofstream * const file, const CorrelationToSurfaceMap * const map );
    5858
    5959
  • src/bondgraph.cpp

    r315164 r244a84  
    1111#include "bondgraph.hpp"
    1212#include "element.hpp"
     13#include "info.hpp"
    1314#include "log.hpp"
    1415#include "molecule.hpp"
     
    4243bool BondGraph::LoadBondLengthTable(const string &filename)
    4344{
     45  Info FunctionInfo(__func__);
    4446  bool status = true;
    4547  MatrixContainer *TempContainer = NULL;
     
    5355
    5456  // parse in matrix
    55   status = TempContainer->ParseMatrix(filename.c_str(), 0, 1, 0);
     57  if (status = TempContainer->ParseMatrix(filename.c_str(), 0, 1, 0)) {
     58    Log() << Verbose(1) << "Parsing bond length matrix successful." << endl;
     59  } else {
     60    eLog() << Verbose(1) << "Parsing bond length matrix failed." << endl;
     61  }
    5662
    5763  // find greatest distance
  • src/builder.cpp

    r315164 r244a84  
    15511551     if (configuration.BG == NULL) {
    15521552       configuration.BG = new BondGraph(configuration.GetIsAngstroem());
    1553        if ((BondGraphFileName.empty()) && (configuration.BG->LoadBondLengthTable(BondGraphFileName))) {
     1553       if ((!BondGraphFileName.empty()) && (configuration.BG->LoadBondLengthTable(BondGraphFileName))) {
    15541554         Log() << Verbose(0) << "Bond length table loaded successfully." << endl;
    15551555       } else {
     
    16601660              Log() << Verbose(1) << "Dissecting molecular system into a set of disconnected subgraphs ... " << endl;
    16611661              // @TODO rather do the dissection afterwards
    1662               molecules->DissectMoleculeIntoConnectedSubgraphs(mol,&configuration);
     1662              molecules->DissectMoleculeIntoConnectedSubgraphs(periode, &configuration);
    16631663              mol = NULL;
    16641664              if (molecules->ListOfMolecules.size() != 0) {
     
    17081708                int ranges[NDIM] = {1,1,1};
    17091709                CorrelationToSurfaceMap *surfacemap = PeriodicCorrelationToSurface( molecules, elemental, TesselStruct, LCList, ranges );
     1710                //OutputCorrelationToSurface(&output, surfacemap);
    17101711                BinPairMap *binmap = BinData( surfacemap, 0.5, 0., 0. );
    17111712                OutputCorrelation ( &binoutput, binmap );
     
    17441745                Log() << Verbose(1) << "Filling Box with water molecules." << endl;
    17451746                // construct water molecule
    1746                 molecule *filler = new molecule(periode);;
     1747                molecule *filler = new molecule(periode);
    17471748                molecule *Filling = NULL;
    1748 //                atom *second = NULL, *third = NULL;
     1749                atom *second = NULL, *third = NULL;
     1750//                first = new atom();
     1751//                first->type = periode->FindElement(5);
     1752//                first->x.Zero();
     1753//                filler->AddAtom(first);
    17491754                first = new atom();
    1750                 first->type = periode->FindElement(5);
    1751                 first->x.Zero();
     1755                first->type = periode->FindElement(1);
     1756                first->x.Init(0.441, -0.143, 0.);
    17521757                filler->AddAtom(first);
    1753 //                first = new atom();
    1754 //                first->type = periode->FindElement(1);
    1755 //                first->x.Init(0.441, -0.143, 0.);
    1756 //                filler->AddAtom(first);
    1757 //                second = new atom();
    1758 //                second->type = periode->FindElement(1);
    1759 //                second->x.Init(-0.464, 1.137, 0.0);
    1760 //                filler->AddAtom(second);
    1761 //                third = new atom();
    1762 //                third->type = periode->FindElement(8);
    1763 //                third->x.Init(-0.464, 0.177, 0.);
    1764 //                filler->AddAtom(third);
    1765 //                filler->AddBond(first, third, 1);
    1766 //                filler->AddBond(second, third, 1);
     1758                second = new atom();
     1759                second->type = periode->FindElement(1);
     1760                second->x.Init(-0.464, 1.137, 0.0);
     1761                filler->AddAtom(second);
     1762                third = new atom();
     1763                third->type = periode->FindElement(8);
     1764                third->x.Init(-0.464, 0.177, 0.);
     1765                filler->AddAtom(third);
     1766                filler->AddBond(first, third, 1);
     1767                filler->AddBond(second, third, 1);
    17671768                // call routine
    17681769                double distance[NDIM];
  • src/molecule.hpp

    r315164 r244a84  
    323323  void Enumerate(ofstream *out);
    324324  void Output(ofstream *out);
    325   void DissectMoleculeIntoConnectedSubgraphs(molecule * const mol, config * const configuration);
     325  void DissectMoleculeIntoConnectedSubgraphs(const periodentafel * const periode, config * const configuration);
    326326  int CountAllAtoms() const;
    327327
  • src/moleculelist.cpp

    r315164 r244a84  
    741741/** Dissects given \a *mol into connected subgraphs and inserts them as new molecules but with old atoms into \a this.
    742742 * \param *out output stream for debugging
    743  * \param *mol molecule with atoms to dissect
     743 * \param *periode periodentafel
    744744 * \param *configuration config with BondGraph
    745745 */
    746 void MoleculeListClass::DissectMoleculeIntoConnectedSubgraphs(molecule * const mol, config * const configuration)
    747 {
     746void MoleculeListClass::DissectMoleculeIntoConnectedSubgraphs(const periodentafel * const periode, config * const configuration)
     747{
     748  molecule *mol = new molecule(periode);
     749  atom *Walker = NULL;
     750  atom *Advancer = NULL;
     751  bond *Binder = NULL;
     752  bond *Stepper = NULL;
     753  // 0. gather all atoms into single molecule
     754  for (MoleculeList::iterator MolRunner = ListOfMolecules.begin(); !ListOfMolecules.empty(); MolRunner = ListOfMolecules.begin()) {
     755    // shift all atoms to new molecule
     756    Advancer = (*MolRunner)->start->next;
     757    while (Advancer != (*MolRunner)->end) {
     758      Walker = Advancer;
     759      Advancer = Advancer->next;
     760      Log() << Verbose(3) << "Re-linking " << *Walker << "..." << endl;
     761      unlink(Walker);
     762      Walker->father = Walker;
     763      mol->AddAtom(Walker);    // counting starts at 1
     764    }
     765    // remove all bonds
     766    Stepper = (*MolRunner)->first->next;
     767    while (Stepper != (*MolRunner)->last) {
     768      Binder = Stepper;
     769      Stepper = Stepper->next;
     770      delete(Binder);
     771    }
     772    // remove the molecule
     773    delete(*MolRunner);
     774    ListOfMolecules.erase(MolRunner);
     775  }
     776
    748777  // 1. dissect the molecule into connected subgraphs
    749778  configuration->BG->ConstructBondGraph(mol);
     
    779808  int *MolMap = Calloc<int>(mol->AtomCount, "config::Load() - *MolMap");
    780809  MoleculeLeafClass *MolecularWalker = Subgraphs;
    781   atom *Walker = NULL;
     810  Walker = NULL;
    782811  while (MolecularWalker->next != NULL) {
    783812    MolecularWalker = MolecularWalker->next;
     
    809838  }
    810839  // 4d. we don't need to redo bonds, as they are connected subgraphs and still maintain their ListOfBonds, but we have to remove them from first..last list
    811   bond *Binder = mol->first;
     840  Binder = mol->first;
    812841  while (mol->first->next != mol->last) {
    813842    Binder = mol->first->next;
  • src/parser.cpp

    r315164 r244a84  
    158158
    159159  input.open(name, ios::in);
    160   //Log() << Verbose(0) << "Opening " << name << " ... "  << input << endl;
     160  //Log() << Verbose(1) << "Opening " << name << " ... "  << input << endl;
    161161  if (input == NULL) {
    162162    eLog() << Verbose(1) << endl << "Unable to open " << name << ", is the directory correct?" << endl;
     
    181181  }
    182182  //Log() << Verbose(0) << line.str() << endl;
    183   //Log() << Verbose(0) << "ColumnCounter[" << MatrixNr << "]: " << ColumnCounter[MatrixNr] << "." << endl;
     183  //Log() << Verbose(1) << "ColumnCounter[" << MatrixNr << "]: " << ColumnCounter[MatrixNr] << "." << endl;
    184184  if (ColumnCounter[MatrixNr] == 0) {
    185185    eLog() << Verbose(0) << "ColumnCounter[" << MatrixNr << "]: " << ColumnCounter[MatrixNr] << " from file " << name << ", this is probably an error!" << endl;
     
    197197    }
    198198  }
    199   //Log() << Verbose(0) << "RowCounter[" << MatrixNr << "]: " << RowCounter[MatrixNr] << " from file " << name << "." << endl;
     199  //Log() << Verbose(1) << "RowCounter[" << MatrixNr << "]: " << RowCounter[MatrixNr] << " from file " << name << "." << endl;
    200200  if (RowCounter[MatrixNr] == 0) {
    201201    eLog() << Verbose(0) << "RowCounter[" << MatrixNr << "]: " << RowCounter[MatrixNr] << " from file " << name << ", this is probably an error!" << endl;
     
    220220      input.getline(filename, 1023);
    221221      stringstream lines(filename);
    222       //Log() << Verbose(0) << "Matrix at level " << j << ":";// << filename << endl;
     222      //Log() << Verbose(2) << "Matrix at level " << j << ":";// << filename << endl;
    223223      for(int k=skipcolumns;k--;)
    224224        lines >> filename;
    225225      for(int k=0;(k<ColumnCounter[MatrixNr]) && (!lines.eof());k++) {
    226226        lines >> Matrix[MatrixNr][j][k];
    227         //Log() << Verbose(0) << " " << setprecision(2) << Matrix[MatrixNr][j][k];;
     227        //Log() << Verbose(1) << " " << setprecision(2) << Matrix[MatrixNr][j][k] << endl;
    228228      }
    229       //Log() << Verbose(0) << endl;
    230229      Matrix[MatrixNr][ RowCounter[MatrixNr] ] = Malloc<double>(ColumnCounter[MatrixNr], "MatrixContainer::ParseMatrix: *Matrix[RowCounter[MatrixNr]][]");
    231230      for(int j=ColumnCounter[MatrixNr];j--;)
  • src/tesselation.cpp

    r315164 r244a84  
    939939TesselPoint::TesselPoint()
    940940{
    941   Info FunctionInfo(__func__);
     941  //Info FunctionInfo(__func__);
    942942  node = NULL;
    943943  nr = -1;
     
    949949TesselPoint::~TesselPoint()
    950950{
    951   Info FunctionInfo(__func__);
     951  //Info FunctionInfo(__func__);
    952952};
    953953
     
    976976PointCloud::PointCloud()
    977977{
    978         Info FunctionInfo(__func__);
     978        //Info FunctionInfo(__func__);
    979979};
    980980
     
    983983PointCloud::~PointCloud()
    984984{
    985         Info FunctionInfo(__func__);
     985        //Info FunctionInfo(__func__);
    986986};
    987987
     
    11741174 * \param PointsOnBoundary set of boundary points defining the convex envelope of the cluster
    11751175 */
    1176 void
    1177 Tesselation::GuessStartingTriangle()
     1176void Tesselation::GuessStartingTriangle()
    11781177{
    11791178        Info FunctionInfo(__func__);
     
    33783377 * @param *LC LinkedCell structure
    33793378 *
    3380  * @return >0 if outside, ==0 if on surface, <0 if inside (Note that distance can be at most LinkedCell::RADIUS.)
    3381  */
    3382 double Tesselation::GetDistanceSquaredToSurface(const Vector &Point, const LinkedCell* const LC) const
     3379 * @return >0 if outside, ==0 if on surface, <0 if inside
     3380 */
     3381double Tesselation::GetDistanceSquaredToTriangle(const Vector &Point, const BoundaryTriangleSet* const triangle) const
    33833382{
    33843383  Info FunctionInfo(__func__);
    3385   class BoundaryTriangleSet *result = FindClosestTriangleToVector(&Point, LC);
    33863384  Vector Center;
    33873385  Vector helper;
     
    33903388  double distance = 0.;
    33913389
    3392   if (result == NULL) {// is boundary point or only point in point cloud?
    3393     Log() << Verbose(1) << Point << " is the only point in vicinity." << endl;
    3394     return LC->RADIUS;
     3390  if (triangle == NULL) {// is boundary point or only point in point cloud?
     3391    Log() << Verbose(1) << "No triangle given!" << endl;
     3392    return -1.;
    33953393  } else {
    3396     Log() << Verbose(1) << "INFO: Closest triangle found is " << *result << " with normal vector " << result->NormalVector << "." << endl;
    3397   }
    3398 
    3399   result->GetCenter(&Center);
     3394    Log() << Verbose(1) << "INFO: Closest triangle found is " << *triangle << " with normal vector " << triangle->NormalVector << "." << endl;
     3395  }
     3396
     3397  triangle->GetCenter(&Center);
    34003398  Log() << Verbose(2) << "INFO: Central point of the triangle is " << Center << "." << endl;
    34013399  DistanceToCenter.CopyVector(&Center);
     
    34043402
    34053403  // check whether we are on boundary
    3406   if (fabs(DistanceToCenter.ScalarProduct(&result->NormalVector)) < MYEPSILON) {
     3404  if (fabs(DistanceToCenter.ScalarProduct(&triangle->NormalVector)) < MYEPSILON) {
    34073405    // calculate whether inside of triangle
    34083406    DistanceToCenter.CopyVector(&Point);
    34093407    Center.CopyVector(&Point);
    3410     Center.SubtractVector(&result->NormalVector); // points towards MolCenter
    3411     DistanceToCenter.AddVector(&result->NormalVector); // points outside
     3408    Center.SubtractVector(&triangle->NormalVector); // points towards MolCenter
     3409    DistanceToCenter.AddVector(&triangle->NormalVector); // points outside
    34123410    Log() << Verbose(1) << "INFO: Calling Intersection with " << Center << " and " << DistanceToCenter << "." << endl;
    3413     if (result->GetIntersectionInsideTriangle(&Center, &DistanceToCenter, &Intersection)) {
     3411    if (triangle->GetIntersectionInsideTriangle(&Center, &DistanceToCenter, &Intersection)) {
    34143412      Log() << Verbose(1) << Point << " is inner point: sufficiently close to boundary, " << Intersection << "." << endl;
    34153413      return 0.;
     
    34203418  } else {
    34213419    // calculate smallest distance
    3422     distance = result->GetClosestPointInsideTriangle(&Point, &Intersection);
     3420    distance = triangle->GetClosestPointInsideTriangle(&Point, &Intersection);
    34233421    Log() << Verbose(1) << "Closest point on triangle is " << Intersection << "." << endl;
    3424     distance = Min(distance, (LC->RADIUS*LC->RADIUS));
    34253422
    34263423    // then check direction to boundary
    3427     if (DistanceToCenter.ScalarProduct(&result->NormalVector) > MYEPSILON) {
     3424    if (DistanceToCenter.ScalarProduct(&triangle->NormalVector) > MYEPSILON) {
    34283425      Log() << Verbose(1) << Point << " is an inner point, " << distance << " below surface." << endl;
    34293426      return -distance;
     
    34333430    }
    34343431  }
     3432};
     3433
     3434/** Calculates distance to a tesselated surface.
     3435 * Combines \sa FindClosestTrianglesToVector() and \sa GetDistanceSquaredToTriangle().
     3436 * \param &Point point to calculate distance from
     3437 * \param *LC needed for finding closest points fast
     3438 * \return distance squared to closest point on surface
     3439 */
     3440double Tesselation::GetDistanceSquaredToSurface(const Vector &Point, const LinkedCell* const LC) const
     3441{
     3442  BoundaryTriangleSet *triangle = FindClosestTriangleToVector(&Point, LC);
     3443  const double distance = GetDistanceSquaredToTriangle(Point, triangle);
     3444  return Min(distance, LC->RADIUS);
    34353445};
    34363446
     
    36953705 * @return list of the all points linked to the provided one
    36963706 */
    3697 list< TesselPointList *> * Tesselation::GetPathsOfConnectedPoints(const TesselPoint* const Point) const
     3707ListOfTesselPointList * Tesselation::GetPathsOfConnectedPoints(const TesselPoint* const Point) const
    36983708{
    36993709        Info FunctionInfo(__func__);
     
    38113821 * @return list of the closed paths
    38123822 */
    3813 list<TesselPointList *> * Tesselation::GetClosedPathsOfConnectedPoints(const TesselPoint* const Point) const
     3823ListOfTesselPointList * Tesselation::GetClosedPathsOfConnectedPoints(const TesselPoint* const Point) const
    38143824{
    38153825        Info FunctionInfo(__func__);
  • src/tesselation.hpp

    r315164 r244a84  
    8787#define TesselPointList list <TesselPoint *>
    8888#define TesselPointSet set <TesselPoint *>
     89
     90#define ListOfTesselPointList list<list <TesselPoint *> *>
    8991
    9092/********************************************** declarations *******************************/
     
    298300    double PickFarthestofTwoBaselines(class BoundaryLineSet *Base);
    299301    class BoundaryPointSet *IsConvexRectangle(class BoundaryLineSet *Base);
    300     map<int, int> * FindAllDegeneratedTriangles();
    301     map<int, int> * FindAllDegeneratedLines();
     302    IndexToIndex * FindAllDegeneratedTriangles();
     303    IndexToIndex * FindAllDegeneratedLines();
    302304    void RemoveDegeneratedTriangles();
    303305    void AddBoundaryPointByDegeneratedTriangle(class TesselPoint *point, LinkedCell *LC);
    304306    int CorrectAllDegeneratedPolygons();
    305307
    306     set<TesselPoint*> * GetAllConnectedPoints(const TesselPoint* const Point) const;
    307     set<BoundaryTriangleSet*> *GetAllTriangles(const BoundaryPointSet * const Point) const;
    308     list<list<TesselPoint*> *> * GetPathsOfConnectedPoints(const TesselPoint* const Point) const;
    309     list<list<TesselPoint*> *> * GetClosedPathsOfConnectedPoints(const TesselPoint* const Point) const;
    310     list<TesselPoint*> * GetCircleOfSetOfPoints(set<TesselPoint*> *SetOfNeighbours, const TesselPoint* const Point, const Vector * const Reference = NULL) const;
    311     list<TesselPoint*> * GetCircleOfConnectedTriangles(set<TesselPoint*> *SetOfNeighbours, const TesselPoint* const Point, const Vector * const Reference) const;
    312     class BoundaryPointSet *GetCommonEndpoint(const BoundaryLineSet * line1, const BoundaryLineSet * line2) const;
    313     list<BoundaryTriangleSet*> *FindTriangles(const TesselPoint* const Points[3]) const;
    314     list<BoundaryTriangleSet*> * FindClosestTrianglesToPoint(const Vector *x, const LinkedCell* LC) const;
    315     class BoundaryTriangleSet * FindClosestTriangleToPoint(const Vector *x, const LinkedCell* LC) const;
     308    TesselPointSet * GetAllConnectedPoints(const TesselPoint* const Point) const;
     309    TriangleSet * GetAllTriangles(const BoundaryPointSet * const Point) const;
     310    ListOfTesselPointList * GetPathsOfConnectedPoints(const TesselPoint* const Point) const;
     311    ListOfTesselPointList * GetClosedPathsOfConnectedPoints(const TesselPoint* const Point) const;
     312    TesselPointList * GetCircleOfSetOfPoints(TesselPointSet *SetOfNeighbours, const TesselPoint* const Point, const Vector * const Reference = NULL) const;
     313    TesselPointList * GetCircleOfConnectedTriangles(TesselPointSet *SetOfNeighbours, const TesselPoint* const Point, const Vector * const Reference) const;
     314    class BoundaryPointSet * GetCommonEndpoint(const BoundaryLineSet * line1, const BoundaryLineSet * line2) const;
     315    TriangleList * FindTriangles(const TesselPoint* const Points[3]) const;
     316    TriangleList * FindClosestTrianglesToVector(const Vector *x, const LinkedCell* LC) const;
     317    BoundaryTriangleSet * FindClosestTriangleToVector(const Vector *x, const LinkedCell* LC) const;
    316318    bool IsInnerPoint(const Vector &Point, const LinkedCell* const LC) const;
     319    double GetDistanceSquaredToTriangle(const Vector &Point, const BoundaryTriangleSet* const triangle) const;
    317320    double GetDistanceSquaredToSurface(const Vector &Point, const LinkedCell* const LC) const;
    318321    bool AddBoundaryPoint(TesselPoint * Walker, const int n);
    319322    DistanceToPointMap * FindClosestBoundaryPointsToVector(const Vector *x, const LinkedCell* LC) const;
    320323    BoundaryLineSet * FindClosestBoundaryLineToVector(const Vector *x, const LinkedCell* LC) const;
    321     TriangleList * FindClosestTrianglesToVector(const Vector *x, const LinkedCell* LC) const;
    322     BoundaryTriangleSet* FindClosestTriangleToVector(const Vector *x, const LinkedCell* LC) const;
    323324
    324325    // print for debugging
Note: See TracChangeset for help on using the changeset viewer.