00001
00002
00003 #include "DistanceCovImpl.hpp"
00004
00005 #ifndef _GEOM_DISTANCE_HPP_
00006 #define _GEOM_DISTANCE_HPP_
00007
00008 namespace jafar {
00009 namespace geom {
00013 template<int dimension>
00014 inline void distanceCov(const typename Atom<dimension>::HomogenousVecD& pt1,
00015 const typename Atom<dimension>::HomogenousSymMatrixD& pt1Cov,
00016 const typename Atom<dimension>::HomogenousVecD& pt2,
00017 const typename Atom<dimension>::HomogenousSymMatrixD& pt2Cov,
00018 double& distance, double& cov );
00019
00023 template<int dimension>
00024 inline void distanceCov(const Point<dimension>&, const Point<dimension>&, double& distance, double& cov );
00028 template<int dimension>
00029 inline void distanceCov(const Point<dimension>&, const typename Atom<dimension>::HomogenousVecD& pt2,
00030 const typename Atom<dimension>::HomogenousSymMatrixD& pt2Cov,
00031 double& distance, double& cov );
00035 template<int dimension>
00036 inline void distanceCov(const typename Atom<dimension>::HomogenousVecD& pt1,
00037 const typename Atom<dimension>::HomogenousSymMatrixD& pt1Cov,
00038 const Line<dimension>&, double& distance, double& cov );
00039 template<int dimension>
00040 inline void distanceCov(const Line<dimension>& li2,
00041 const typename Atom<dimension>::HomogenousVecD& pt1v,
00042 const typename Atom<dimension>::HomogenousSymMatrixD& pt1vCov,
00043 double& distance, double& cov )
00047 template<int dimension>
00048 inline void distanceCov(const Point<dimension>&, const Line<dimension>&, double& distance, double& cov );
00052 template<int dimension>
00053 inline void distanceCov(const Line<dimension>&, const Point<dimension>&, double& distance, double& cov );
00057 template<int dimension>
00058 inline void distanceCov(const typename Atom<dimension>::HomogenousVecD& pt1,
00059 const typename Atom<dimension>::HomogenousSymMatrixD& pt1Cov,
00060 const HyperPlane<dimension>&, double& distance, double& cov );
00061 template<int dimension>
00062 inline void distanceCov(const HyperPlane<dimension>&,
00063 const typename Atom<dimension>::HomogenousVecD& pt1,
00064 const typename Atom<dimension>::HomogenousSymMatrixD& pt1Cov,
00065 double& distance, double& cov);
00066 template<int dimension>
00067 inline void distanceCov(const Point<dimension>&, const HyperPlane<dimension>&, double& distance, double& cov );
00068 template<int dimension>
00069 inline void distanceCov(const HyperPlane<dimension>&, const Point<dimension>&, double& distance, double& cov );
00070 template<int dimension>
00071 inline void distanceCov(const Segment<dimension>& seg, const Line<dimension>& l, double& distance, double& cov);
00072 template<int dimension>
00073 inline void distanceCov(const Segment<dimension>& seg,
00074 const typename Atom<dimension>::HomogenousVecD& pt1,
00075 const typename Atom<dimension>::HomogenousSymMatrixD& pt1Cov,
00076 double& distance, double& cov);
00077 template<int dimension>
00078 inline void distanceCov(const Segment<dimension>& seg, const Point<dimension>& l, double& distance, double& cov);
00079 template<int dimension>
00080 inline void distanceCov(const Point<dimension>& seg, const Segment<dimension>& l, double& distance, double& cov);
00081 template<int dimension>
00082 inline void distanceCov(const Line<dimension>& seg, const Segment<dimension>& l, double& distance, double& cov);
00083 template<int dimension>
00084 inline void distanceCov(const Segment<dimension>& seg, const HyperPlane<dimension>& hp, double& distance, double& distanceCov);
00085 template<int dimension>
00086 inline void distanceCov(const HyperPlane<dimension>& hp, const Segment<dimension>& seg, double& distance, double& distanceCov);
00087
00088 template<int dimension>
00089 inline void distanceCov(const Segment<dimension>& seg, const PolyLine<dimension>& pl, double& distance, double& distanceCov);
00090 template<int dimension>
00091 inline void distanceCov(const PolyLine<dimension>& pl, const Segment<dimension>& seg, double& distance, double& distanceCov);
00092
00093 template<int dimension>
00094 inline void distanceCov(const Facet<dimension>& hp, const Segment<dimension>& seg, double& distance, double& distanceCov);
00095 template<int dimension>
00096 inline void distanceCov(const Segment<dimension>& seg, const Facet<dimension>& hp, double& distance, double& distanceCov);
00097
00098 template<int dimension>
00099 inline void distanceCov(const Facet<dimension>& hp, const Line<dimension>& seg, double& distance, double& distanceCov);
00100 template<int dimension>
00101 inline void distanceCov(const Line<dimension>& seg, const Facet<dimension>& hp, double& distance, double& distanceCov);
00102
00103 template<int dimension>
00104 inline void distanceCov(const Facet<dimension>& hp, const HyperPlane<dimension>& seg, double& distance, double& distanceCov);
00105 template<int dimension>
00106 inline void distanceCov(const HyperPlane<dimension>& seg, const Facet<dimension>& hp, double& distance, double& distanceCov);
00107
00108 template<int dimension>
00109 inline void distanceCov(const Facet<dimension>& seg, const Facet<dimension>& hp, double& distance, double& distanceCov);
00110 }
00111 }
00112
00113 #endif