Rosetta 3.5

xyzVector is a fast 3 coordinate ( x, y, z ) vector template class. Functions are inlined and loopfree for optimal speed. The destructor is declared nonvirtual for speed so xyzVector is not set up for use as a base class. As a template class, xyzVector can hold various value types.
Forward declarations and typedefs for common value types are provided in the file xyzVector.fwd.hh. This header should be included in files that only use the names of the xyzVector types (e.g., function declarations and functions that just pass the types through to other functions by pointer or reference).
Common operations that are normally coded in loops are provided and include:
normalize()
normalize_or_zero()  Zero xyzVector if length is zero
normalize_any()  Arbitrary normalized xyzVector if length is zero
project_normal()  Project normally onto input xyzVector
project_parallel()  Project in direction of input xyzVector
distance()  Distance between two xyzVectors
distance_squared()  Distance squared between two xyzVectors
dot(), dot_product(), inner_product()  dot or inner product of two xyzVectors
cross(), cross_product()  cross product of two xyzVectors
midpoint()  midpoint between two xyzVectors.
Many operations also have 'ed' versions; e.g., normalize() and normalized() which do not modify the xyzVector, but generates an xyzVector.
Additionally, the header xyz_functions.hh contains common functions that interact with xyzVector such as:
product()  xyzMatrix xyzVector product
inplace_product()  xyzMatrix xyzVector product, input xyzVector is modified
outer_product()  xyzVector xyzVector outer product
projection_matrix()  projection matrix onto the line through an xyzVector
dihedral()  dihedral (torsion) angle with respect to four positions in a chain
rotation_matrix()  rotation matrix about a helical axis through the origin through an angle
rotation_axis()  transformation from rotation matrix to helical axis of rotation
eigenvalue_jacobi()  classic Jacobi algorithm for the eigenvalues of a real symmetric matrix
eigenvector_jacobi()  classic Jacobi algorithm for the eigenvalues and eigenvectors of a real symmetric matrix