Kill templates
parent
22c6b854f7
commit
984232defb
|
@ -63,29 +63,20 @@ template <typename F>
|
||||||
struct TripleF {
|
struct TripleF {
|
||||||
F F01, F12, F20;
|
F F01, F12, F20;
|
||||||
|
|
||||||
/// Transfers a point from two cameras to another.
|
/// Transfers a point from cameras 1,2 to camera 0.
|
||||||
template <size_t Index>
|
Point2 transfer0(const Point2& p1, const Point2& p2) {
|
||||||
Point2 transfer(const Point2& point1, const Point2& point2) {
|
|
||||||
static_assert(Index < 3, "Index must be less than 3");
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Specialization for transferring a point from cameras 1,2 to camera 0.
|
|
||||||
template <>
|
|
||||||
Point2 transfer<0>(const Point2& p1, const Point2& p2) {
|
|
||||||
return FundamentalMatrix::transfer(F01.matrix(), p1,
|
return FundamentalMatrix::transfer(F01.matrix(), p1,
|
||||||
F20.matrix().transpose(), p2);
|
F20.matrix().transpose(), p2);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Specialization for transferring a point from camera 0,2 to camera 1.
|
/// Transfers a point from camera 0,2 to camera 1.
|
||||||
template <>
|
Point2 transfer1(const Point2& p0, const Point2& p2) {
|
||||||
Point2 transfer<1>(const Point2& p0, const Point2& p2) {
|
|
||||||
return FundamentalMatrix::transfer(F01.matrix().transpose(), p0,
|
return FundamentalMatrix::transfer(F01.matrix().transpose(), p0,
|
||||||
F12.matrix(), p2);
|
F12.matrix(), p2);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Specialization for transferring a point from camera 0,1 to camera 2.
|
/// Transfers a point from camera 0,1 to camera 2.
|
||||||
template <>
|
Point2 transfer2(const Point2& p0, const Point2& p1) {
|
||||||
Point2 transfer<2>(const Point2& p0, const Point2& p1) {
|
|
||||||
return FundamentalMatrix::transfer(F01.matrix(), p0,
|
return FundamentalMatrix::transfer(F01.matrix(), p0,
|
||||||
F12.matrix().transpose(), p1);
|
F12.matrix().transpose(), p1);
|
||||||
}
|
}
|
||||||
|
|
|
@ -222,9 +222,9 @@ TEST(TripleF, Transfer) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check that transfer works
|
// Check that transfer works
|
||||||
EXPECT(assert_equal<Point2>(p[0], triplet.transfer<0>(p[1], p[2]), 1e-9));
|
EXPECT(assert_equal<Point2>(p[0], triplet.transfer0(p[1], p[2]), 1e-9));
|
||||||
EXPECT(assert_equal<Point2>(p[1], triplet.transfer<1>(p[0], p[2]), 1e-9));
|
EXPECT(assert_equal<Point2>(p[1], triplet.transfer1(p[0], p[2]), 1e-9));
|
||||||
EXPECT(assert_equal<Point2>(p[2], triplet.transfer<2>(p[0], p[1]), 1e-9));
|
EXPECT(assert_equal<Point2>(p[2], triplet.transfer2(p[0], p[1]), 1e-9));
|
||||||
}
|
}
|
||||||
|
|
||||||
//*************************************************************************
|
//*************************************************************************
|
||||||
|
|
Loading…
Reference in New Issue