1 // This is oxl/mvl/PairMatchSetLineSeg.cxx
2 //:
3 //  \file
4 
5 #include "PairMatchSetLineSeg.h"
6 
7 #include <mvl/MatchSet.h>
8 #include <mvl/LineSegSet.h>
9 
PairMatchSetLineSeg()10 PairMatchSetLineSeg::PairMatchSetLineSeg()
11 {
12   linesegs1_ = nullptr;
13   linesegs2_ = nullptr;
14 }
15 
PairMatchSetLineSeg(LineSegSet & linesegs1,LineSegSet & linesegs2)16 PairMatchSetLineSeg::PairMatchSetLineSeg(LineSegSet& linesegs1, LineSegSet& linesegs2):
17   PairMatchSet(linesegs1.size())
18 {
19   linesegs1_ = &linesegs1;
20   linesegs2_ = &linesegs2;
21 }
22 
23 PairMatchSetLineSeg::~PairMatchSetLineSeg() = default;
24 
25 //: Extract the point vectors for only the valid matches.
extract_matches(std::vector<HomgLineSeg2D> & linesegs1,std::vector<HomgLineSeg2D> & linesegs2) const26 void PairMatchSetLineSeg::extract_matches(std::vector <HomgLineSeg2D>& linesegs1,
27                                           std::vector <HomgLineSeg2D>& linesegs2) const
28 {
29   unsigned n = count();
30   linesegs1.resize(n);
31   linesegs2.resize(n);
32   int i = 0;
33   for (PairMatchSet::iterator match = *this; match; match.next()) {
34     linesegs1[i] = linesegs1_->get_homg(match.get_i1());
35     linesegs2[i] = linesegs2_->get_homg(match.get_i2());
36     ++i;
37   }
38 }
39 
40 
41 //: Set the pair of LineSegSets to which matches refer.
set(LineSegSet * linesegs1,LineSegSet * linesegs2)42 void PairMatchSetLineSeg::set(LineSegSet* linesegs1, LineSegSet* linesegs2)
43 {
44   linesegs1_ = linesegs1;
45   linesegs2_ = linesegs2;
46   set_size(linesegs1_->size());
47 }
48