# RigidAngle

class RigidAngle : public feasst::BondThreeBody

U(r) = 0 when the absolute value of the difference between the actual angle and the degrees parameter is less than delta. Otherwise, U(r) = NEAR_INFINITY.

Public Functions

double energy(const double radians, const Bond &angle) const

Return the energy of interaction given an angle in radians.

double random_angle_radians(const Angle &angle, const double beta, const int dimension, Random *random) const

Return a randomly selected bond angle.

In three dimensions, $$P(\theta) \propto \sin\theta\exp[-\beta U(\theta)]$$

In two dimensions, $$P(\theta) \propto \theta\exp[-\beta U(\theta)]$$

void random_branch(const Angle &a2a1m1, const Angle &a2a1m2, const Angle &m1a1m2, const double beta, double *radians_a2a1m1, double *radians_a2a1m2, double *radians_m1a1m2, Random *random) const

Return three random angles to form a branch.

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)