38 const Vector dsv1_dv1(2*v1);
39 const Vector dsv2_dv2(2*v2);
40 const double nn(1.0/sqrt(sv1*sv2));
41 const Vector dnn_dv1(-0.5*nn/sv1*dsv1_dv1);
42 const Vector dnn_dv2(-0.5*nn/sv2*dsv2_dv2);
44 const double dpnn(dp*nn);
56 const Vector ddpnn_dv1(dp*dnn_dv1+dp_dv1*nn);
57 const Vector ddpnn_dv2(dp*dnn_dv2+dp_dv2*nn);
59 const double x(-1.0/sqrt(1-dpnn*dpnn));
65 return std::acos(dpnn);
double modulo() const
Compute the modulo.
double compute(const Vector &v1, const Vector &v2) const
Compute the angle between vectors v1 and v2.
Class implementing fixed size vectors of doubles.
T dotProduct(const std::vector< T > &A, const std::vector< T > &B)
Calculate the dot product between two vectors.
double modulo2() const
compute the squared modulo
const double pi(3.141592653589793238462643383279502884197169399375105820974944592307)
PI.
Vector3d Vector
Alias for three dimensional vectors.