Classes | |
class | BTKMatrix |
class | BTKVector |
static const double | PI = 3.1415926535897323 |
MathConst Mathematical Constants. | |
static const double | RADIANS_PER_DEGREE = PI/180.0 |
MathConst Mathematical Constants. | |
static const double | DEGREES_PER_RADIAN = 180.0/PI |
MathConst Mathematical Constants. | |
static const double | DOUBLE_EPSILON (std::numeric_limits< double >::epsilon()) |
Smallest double-precision value e, where x + e != x. | |
static const float | FLOAT_EPSILON (std::numeric_limits< float >::epsilon()) |
MathConst Mathematical Constants. | |
Typedefs | |
Vector and Matrix types. | |
The BTK* types are typedefs to appropriate classes in the Boost::ublas linear algebra library.
Using these types in the BTK makes it easier to write/read linear algebra code, and easier to switch the code to other linear algebra systems (should that ever become necessary). | |
typedef uBLAS::symmetric_matrix< double > | BTKSymmetricMatrix |
Functions | |
template<typename T> | |
T | square (T val) |
Square a value. | |
template<typename T> | |
T | cube (T val) |
Cube a value. | |
template<typename T> | |
bool | equivalent (T x, T y, T precision) |
template<typename T> | |
bool | equivalent (T x, T y) |
template<> | |
bool | equivalent (float x, float y) |
template<> | |
bool | equivalent (double x, double y) |
double | deg2rad (double angle_in_degrees) |
double | rad2deg (double angle_in_radians) |
double | point_dihedral (BTKVector const &a, BTKVector const &b, BTKVector const &c, BTKVector const &d) |
Calculate the dihedral angle between the planes a-b-c and d-c-b. | |
bool | within_sqr_dist (BTKVector const &a, BTKVector const &b, double r_squared) |
See if two vectors are within a squared distance threshold of one another. | |
BTKVector | set_vector_from_dihedral (BTKVector const &v3, BTKVector const &v2, BTKVector const &v1, double len34, double ang234, double dih1234) |
calculate vector position from a dihedral angle | |
BTKVector | set_vector_from_two_angles (BTKVector const &v3, BTKVector const &v2, BTKVector const &v1, double len34, double ang234, double ang134) |
Calculate vector position from two vector angles. | |
double | point_angle (BTKVector const &v1, BTKVector const &v2, BTKVector const &v3) |
calculate the angle formed by v1-v2 amd v3-v2 | |
void | initialize_rotation_matrix (BTKVector const &axis, double theta, BTKMatrix &rm) |
Initialize a pre-existing rotation matrix for rotation about an axis. | |
void | initialize_rotation_matrix (double phi, double theta, double psi, BTKMatrix &rm) |
Initialize a pre-existing rotation matrix using Euler angles. | |
BTKMatrix | create_rotation_matrix (BTKVector const &axis, double theta) |
Create a rotation matrix for a rotation about an axis. | |
BTKMatrix | create_rotation_matrix (double phi, double theta, double psi) |
Create a new rotation matrix using Euler angles. | |
BTKVector | project_normal (BTKVector const &a, BTKVector const &b) |
Project the component of vector a that is normal to vector b. | |
BTKVector | project (BTKVector const &a, BTKVector const &b) |
Project vector a onto vector b. | |
double | vector_dihedral (BTKVector const &v1, BTKVector const &v2, BTKVector const &v3) |
Calculate the dihedral angle formed by three vectors. | |
BTKVector & | normalize (BTKVector &v) |
Normalize a vector to unit length. | |
double | length (BTKVector const &v) |
Get the length of a vector (aka, the l2 norm or euclidean norm). | |
BTKVector | cross (BTKVector const &lhs, BTKVector const &rhs) |
Compute the cross product of two 3D vectors. | |
double | cosine_vector_angle (BTKVector const &v1, BTKVector const &v2) |
Calculate the cosine of the angle between two vectors. | |
double | vector_angle (BTKVector const &v1, BTKVector const &v2) |
Calculate the angle between two vectors. |
typedef uBLAS::symmetric_matrix<double> BTKSymmetricMatrix |
double BTK::MATH::cosine_vector_angle | ( | BTKVector const & | v1, | |
BTKVector const & | v2 | |||
) |
Calculate the cosine of the angle between two vectors.
BTKVector BTK::MATH::cross | ( | BTKVector const & | lhs, | |
BTKVector const & | rhs | |||
) |
Compute the cross product of two 3D vectors.
T BTK::MATH::cube | ( | T | val | ) |
Cube a value.
double BTK::MATH::deg2rad | ( | double | angle_in_degrees | ) |
static const double BTK::MATH::DOUBLE_EPSILON | ( | std::numeric_limits< double >:: | epsilon() | ) | [static] |
Smallest double-precision value e, where x + e != x.
bool BTK::MATH::equivalent | ( | double | x, | |
double | y | |||
) |
bool BTK::MATH::equivalent | ( | float | x, | |
float | y | |||
) |
bool BTK::MATH::equivalent | ( | T | x, | |
T | y | |||
) |
bool BTK::MATH::equivalent | ( | T | x, | |
T | y, | |||
T | precision | |||
) |
static const float BTK::MATH::FLOAT_EPSILON | ( | std::numeric_limits< float >:: | epsilon() | ) | [static] |
MathConst Mathematical Constants.
double BTK::MATH::length | ( | BTKVector const & | v | ) |
Get the length of a vector (aka, the l2 norm or euclidean norm).
Warning: if you're calling this function from a multi-calculation expression, you might want to directly call uBLAS::norm_2() instead, for efficiency reasons.
BTKVector& BTK::MATH::normalize | ( | BTKVector & | v | ) |
Normalize a vector to unit length.
This function normalizes the input vector.
double BTK::MATH::point_angle | ( | BTKVector const & | v1, | |
BTKVector const & | v2, | |||
BTKVector const & | v3 | |||
) |
calculate the angle formed by v1-v2 amd v3-v2
double point_dihedral | ( | BTKVector const & | a, | |
BTKVector const & | b, | |||
BTKVector const & | c, | |||
BTKVector const & | d | |||
) |
Calculate the dihedral angle between the planes a-b-c and d-c-b.
This offers a more conventional "four point" access to the dihedral function.
Project vector a onto vector b.
Get the component of vector a that is parallel to vector b.
Project the component of vector a that is normal to vector b.
Get the component of a that is perpendicular to b.
double BTK::MATH::rad2deg | ( | double | angle_in_radians | ) |
BTKVector set_vector_from_dihedral | ( | BTKVector const & | v3, | |
BTKVector const & | v2, | |||
BTKVector const & | v1, | |||
double | len34, | |||
double | ang234, | |||
double | dih1234 | |||
) |
calculate vector position from a dihedral angle
Calculates the position of a vector from 3 other atoms that define a a dihedral angle with the build vector
len34 | distance between v3 and v4 | |
ang234 | angle formed by v2 - v3 and v4 - v3 | |
dih1234 | dihedral angle between v4 - v3 and v1 - v2 along the axis formed by v3 - v2 |
BTKVector set_vector_from_two_angles | ( | BTKVector const & | v3, | |
BTKVector const & | v2, | |||
BTKVector const & | v1, | |||
double | len34, | |||
double | ang234, | |||
double | ang134 | |||
) |
Calculate vector position from two vector angles.
Calculates the position of a point, v4, using three other points, v1,v2,v3, given two vector angles (angle(v4-v3,v2-v3) & angle(v4-v3,v1-v3)), and a vector length ( |v4-v3| ), assuming a right-handed relationship between v1-v3,v2-v3 and v4-v3 (see below)
Submit the vectors in order such that the three vectors v1-v3, v2-v3 and v4-v3, form a right-handed system, ie. so that dot(v4-v3,cross(v1-v3,v2-v3)) is a positive number, if you have a left-handed arrangment, then swap the arguments v2 and v1 (and the corresponding angle arguments ang234 and ang134 )
len34 | | v4-v3 | | |
ang234 | vector angle between v2-v3 and v4-v3 | |
ang134 | vector angle between v1-v3 and v4-v3 |
T BTK::MATH::square | ( | T | val | ) |
Square a value.
double BTK::MATH::vector_angle | ( | BTKVector const & | v1, | |
BTKVector const & | v2 | |||
) |
Calculate the angle between two vectors.
Calculate the dihedral angle formed by three vectors.
The dihedral angle is the angle formed between v1 and v3, about vector v2.
const double DEGREES_PER_RADIAN = 180.0/PI [static] |
MathConst Mathematical Constants.
const double PI = 3.1415926535897323 [static] |
MathConst Mathematical Constants.
const double RADIANS_PER_DEGREE = PI/180.0 [static] |
MathConst Mathematical Constants.