00001
00002
00003 #ifndef _GEOM_COS_ANGLECOV_HPP_
00004 #define _GEOM_COS_ANGLECOV_HPP_
00005
00006 #include <geom/Atom.hpp>
00007
00008 namespace jafar {
00009 namespace geom {
00014 template<int dimension>
00015 inline void cosAngleCov( const typename Atom<dimension>::HomogenousVecD& v1,
00016 const typename Atom<dimension>::HomogenousSymMatrixD& v1Cov,
00017 const typename Atom<dimension>::HomogenousVecD& v2,
00018 const typename Atom<dimension>::HomogenousSymMatrixD& v2Cov,
00019 double& angle, double &cov);
00020 template<int dimension>
00021 inline void cosAngleCov(const Line<dimension>&, const Line<dimension>&, double& angle, double &cov);
00022 template<int dimension>
00023 inline void cosAngleCov(const Line<dimension>& line1, const HyperPlane<dimension>& hp2,
00024 double& angle, double &cov);
00025 template<int dimension>
00026 inline void cosAngleCov(const HyperPlane<dimension>& hp2, const Line<dimension>& line1,
00027 double& angle, double &cov);
00028 template<int dimension>
00029 inline void cosAngleCov(const Segment<dimension>&, const Segment<dimension>&, double& angle, double &cov);
00030 template<int dimension>
00031 inline void cosAngleCov(const Segment<dimension>& line1, const HyperPlane<dimension>& hp2,
00032 double& angle, double &cov);
00033 template<int dimension>
00034 inline void cosAngleCov(const HyperPlane<dimension>& hp2, const Segment<dimension>& line1,
00035 double& angle, double &cov);
00036 template<int dimension>
00037 inline void cosAngleCov(const HyperPlane<dimension>& hp1, const HyperPlane<dimension>& hp2,
00038 double& angle, double &cov);
00039 }
00040 }
00041
00042 #include "CosAngleCovImpl.hpp"
00043
00044 #endif