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