BondThreeBody

class BondThreeBody
A three body bond is defined by three sites, 0  1  2. The relative vector r01 = r0  r1 points from r1 to r0. The relative vector r21 = r2  r1 points from r1 to r2.
Angle Property minimum_degrees sets the energy to NEAR_INFINITY at smaller angles.
For random bond angles:
In three dimensions, \(P(\theta) \propto \sin\theta\exp[\beta U(\theta)]\)
In two dimensions, \(P(\theta) \propto \theta\exp[\beta U(\theta)]\)
For branches involving the placement of two sites with three angles:
anchor2 > 1 1(a2) mobile1 > 2  mobile2 > 3 4(a1) t143(angle) anchor1 > 4 / \L34(distance) 2(m1) 3(m2, the site to be placed in this function) t243(branch_angle)
This generic branch algorithm picks two points randomly on the surface of a unit sphere and accepts or rejects based on the bond energies of all three angles. If the bonds are relatively stiff, then this method is inefficient, and is overridden by special cases such as RigidAngle and AngleHarmonic. For AngleHarmonic, the JacobianGaussian algorithm is used.
Subclassed by feasst::AngleHarmonic, feasst::AngleSquareWell, feasst::RigidAngle