[ce133f] | 1 | /*
|
---|
| 2 | * Project: MoleCuilder
|
---|
| 3 | * Description: creates and alters molecular systems
|
---|
| 4 | * Copyright (C) 2010 University of Bonn. All rights reserved.
|
---|
| 5 | * Please see the LICENSE file or "Copyright notice" in builder.cpp for details.
|
---|
| 6 | */
|
---|
| 7 |
|
---|
| 8 | /**
|
---|
[19bc74] | 9 | * \file tesselation.dox
|
---|
[ce133f] | 10 | *
|
---|
[19bc74] | 11 | * Created on: Oct 28, 2011
|
---|
[ce133f] | 12 | * Author: heber
|
---|
| 13 | */
|
---|
[750cff] | 14 |
|
---|
| 15 | /** \page tesselation Tesselation
|
---|
| 16 | *
|
---|
| 17 | * Tesselation is a first step towards recognizing molecular surfaces.
|
---|
| 18 | *
|
---|
| 19 | * Within the code it is used for calculating correlation functions with regard
|
---|
| 20 | * to such a surface.
|
---|
| 21 | *
|
---|
[8544b32] | 22 | * \section tesselation-procedure Tesselation procedure
|
---|
[750cff] | 23 | *
|
---|
| 24 | * In the tesselation all atoms act as possible hindrance to a rolling sphere
|
---|
[caece4] | 25 | * that moves in from infinity. Whenever it rests uniquely on three distinct
|
---|
| 26 | * points (atoms) a triangle is created. The algorithm continues by pushing the
|
---|
[750cff] | 27 | * sphere over one of the triangle's edges to eventually obtain a closed,
|
---|
[caece4] | 28 | * tesselated surface of the whole molecule.
|
---|
[750cff] | 29 | *
|
---|
| 30 | * \note This mesh is different to the usual sense of a molecular surface as
|
---|
| 31 | * atoms are directly located on it. Normally, one considers a so-called
|
---|
[caece4] | 32 | * Van-der-Waals sphere around the atoms and tesselates over these.
|
---|
| 33 | * \todo However, the mesh can easily be modified and even expanded to match the
|
---|
| 34 | * other (although the code for that is not yet fully implemented).
|
---|
[750cff] | 35 | *
|
---|
[8544b32] | 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
|
---|
[750cff] | 97 | *
|
---|
| 98 | * The main problem for extending the mesh to match with the normal sense is
|
---|
| 99 | * that triangles may suddenly intersect others when we have the case of a non-
|
---|
| 100 | * convex mesh (which is rather the normal case). And this has to be
|
---|
| 101 | * specifically treated. Also, it is not sure whether the procedure of
|
---|
| 102 | * expanding our current surface is optimal and one should not start on a
|
---|
| 103 | * different set of nodes created from virtual points resting on the
|
---|
| 104 | * van-der-Waals spheres.
|
---|
| 105 | *
|
---|
[caece4] | 106 | * Note that it is possible to select a number of atoms and create a bounding box
|
---|
| 107 | * from a combination of spheres with van der Waals radii.
|
---|
| 108 | *
|
---|
[8544b32] | 109 | * \date 2014-10-09
|
---|
[750cff] | 110 | *
|
---|
| 111 | */
|
---|