Changeset 8544b32 for src/documentation/constructs/tesselation.dox
- Timestamp:
- Oct 19, 2014, 5:13:11 PM (10 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:
- 991c35
- Parents:
- e2396e
- git-author:
- Frederik Heber <heber@…> (10/09/14 08:55:44)
- git-committer:
- Frederik Heber <heber@…> (10/19/14 17:13:11)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/documentation/constructs/tesselation.dox
re2396e r8544b32 20 20 * to such a surface. 21 21 * 22 * \section tesselation-procedure 22 * \section tesselation-procedure Tesselation procedure 23 23 * 24 24 * In the tesselation all atoms act as possible hindrance to a rolling sphere … … 34 34 * other (although the code for that is not yet fully implemented). 35 35 * 36 * \section tesselation-extension 36 * \section tesselation-convexization Making a surface convex 37 * 38 * A closed surface created by the aforementioned procedure can be made convex 39 * by a combination of the following two ways: 40 * -# Removing a point from the surface that is connected to other points only 41 * by concave lines. This might also be imagined as removing bumps or 42 * craters in the surface. 43 * -# flipping a base line or rather adding a general tetrahedron to remove a 44 * concave line on the surface. 45 * 46 * With the first way one has to pay attention to possible degenerated lines 47 * and triangles. That's why prior to the this convexization procedure all 48 * possible degenerated triangles are removed. Furthermore, when looking at 49 * a removal candidate and its connected points, all these points are split 50 * up into so-called connected paths. The crater to be removed or filled-up 51 * has a low point -- the point to be removed -- and a rim, defined by all 52 * points connected by concave lines to the low point. However, when a point 53 * has degenerated lines attached to it (i.e. two lines with the same 54 * endpoints), it may have multiple rims (imagine two craters on either 55 * side of the surface and the volume being so small/slim that they reach 56 * through to the same low point). We have to discern between these multiple 57 * rims, therefore the connected points are placed into different closed 58 * rings, so-called polygons. The point is the removed and the polygon re- 59 * tesselated which essentially fills the crater. 60 * 61 * With the second way, we have to pay attention that the filled-in tetrahedron 62 * does not intersect already present triangles. The baseline defines two 63 * points and as the tesselated surface is closed, it must be connected to two 64 * triangles. These together define a set of four points that make up the 65 * tetrahedron. Naturally, two sides of the tetrahedron are always present 66 * already (and will become removed in place of the other two, effectively 67 * adding more volume to the tesselation). 68 * Now first, we only flip base lines that are concave. Second, none of the two 69 * other sides of the tetrahedron must be present. And lastly, we must check 70 * for all surrounding triangles that the new baseline (formed by point 3 71 * and 4) does not intersect these. Essentially, if we imagine a plane 72 * containing this new baseline, then each possibly intersecting triangle shows 73 * up as a brief line segment. We have to make sure that all of these segments 74 * remain below the new baseline in this plane. Also, things are complicated 75 * as the first and last line segment will always intersect with the baseline 76 * at the endpoint. There, we basically have to make sure that the line segment 77 * goes off in the right direction, namely outward. 78 * 79 * \section tesselation-volume Measuring the volume contained 80 * 81 * There is no straight-forward way to measure the volume contained in a 82 * non-convex tesselated surface. However, there is for a convex surface 83 * because convexity means that a line between any inner point and a point on 84 * the boundary will not intersect the surface anywhere else. Hence, we may 85 * use the center of gravity of all boundary points (by the same argument it 86 * must be an inner point) and calculate the volume of the general tetrahedron 87 * by looking at each of the tesselation's triangles in turn and summing up. 88 * 89 * We can calculate the volume of the original non-convex tesselation because 90 * the two ways mentioned above -- removing points and flipping baselines -- 91 * both involve just addding general tetrahedron whose volume we may easily 92 * calculate. By bookkeeping of how much volume is added and calculating the 93 * total convex volume in the end, we also get the volume contained in the 94 * prior non-convex surface. 95 * 96 * \section tesselation-extension Issues whebn extended a tesselated surface 37 97 * 38 98 * The main problem for extending the mesh to match with the normal sense is … … 47 107 * from a combination of spheres with van der Waals radii. 48 108 * 49 * \date 2014- 03-10109 * \date 2014-10-09 50 110 * 51 111 */
Note:
See TracChangeset
for help on using the changeset viewer.