Changeset 8db598 for src/tesselation.cpp
- Timestamp:
- Mar 1, 2010, 10:10:13 PM (15 years ago)
- 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:
- cb85c2e
- Parents:
- 30d9e7
- git-author:
- Frederik Heber <heber@…> (03/01/10 20:48:40)
- git-committer:
- Frederik Heber <heber@…> (03/01/10 22:10:13)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/tesselation.cpp
r30d9e7 r8db598 14 14 #include "tesselation.hpp" 15 15 #include "tesselationhelpers.hpp" 16 #include "triangleintersectionlist.hpp" 16 17 #include "vector.hpp" 17 18 #include "verbose.hpp" … … 474 475 }; 475 476 476 /** Finds the point on the triangle \a *BTS through which the line defined by \a *MolCenter and \a *x crosses. 477 * We call Vector::GetIntersectionWithPlane() to receive the intersection point with the plane 477 /** Finds the point on the triangle to the point \a *x. 478 * We call Vector::GetIntersectionWithPlane() with \a * and the center of the triangle to receive an intersection point. 479 * Then we check the in-plane part (the part projected down onto plane). We check whether it crosses one of the 480 * boundary lines. If it does, we return this intersection as closest point, otherwise the projected point down. 478 481 * Thus we test if it's really on the plane and whether it's inside the triangle on the plane or not. 479 482 * The latter is done as follows: We calculate the cross point of one of the triangle's baseline with the line … … 3222 3225 }; 3223 3226 3224 3225 3227 /** Finds the triangle that is closest to a given Vector \a *x. 3226 3228 * \param *out output stream for debugging … … 3315 3317 * \param *out output stream for debugging 3316 3318 * \param *x Vector to look from 3319 * \param &distance contains found distance on return 3317 3320 * \return list of BoundaryTriangleSet of nearest triangles or NULL. 3318 3321 */ … … 3358 3361 bool Tesselation::IsInnerPoint(const Vector &Point, const LinkedCell* const LC) const 3359 3362 { 3360 return (GetDistanceSquaredToSurface(Point, LC) < MYEPSILON); 3361 } 3363 Info FunctionInfo(__func__); 3364 TriangleIntersectionList Intersections(&Point,this,LC); 3365 3366 return Intersections.IsInside(); 3367 }; 3362 3368 3363 3369 /** Returns the distance to the surface given by the tesselation. … … 3432 3438 }; 3433 3439 3434 /** Calculates distanceto a tesselated surface.3440 /** Calculates minimum distance from \a&Point to a tesselated surface. 3435 3441 * Combines \sa FindClosestTrianglesToVector() and \sa GetDistanceSquaredToTriangle(). 3436 3442 * \param &Point point to calculate distance from … … 3438 3444 * \return distance squared to closest point on surface 3439 3445 */ 3440 double 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); 3446 double Tesselation::GetDistanceToSurface(const Vector &Point, const LinkedCell* const LC) const 3447 { 3448 Info FunctionInfo(__func__); 3449 TriangleIntersectionList Intersections(&Point,this,LC); 3450 3451 return Intersections.GetSmallestDistance(); 3452 }; 3453 3454 /** Calculates minimum distance from \a&Point to a tesselated surface. 3455 * Combines \sa FindClosestTrianglesToVector() and \sa GetDistanceSquaredToTriangle(). 3456 * \param &Point point to calculate distance from 3457 * \param *LC needed for finding closest points fast 3458 * \return distance squared to closest point on surface 3459 */ 3460 BoundaryTriangleSet * Tesselation::GetClosestTriangleOnSurface(const Vector &Point, const LinkedCell* const LC) const 3461 { 3462 Info FunctionInfo(__func__); 3463 TriangleIntersectionList Intersections(&Point,this,LC); 3464 3465 return Intersections.GetClosestTriangle(); 3445 3466 }; 3446 3467
Note:
See TracChangeset
for help on using the changeset viewer.