18 #include "slam6d/globals.icc" 21 double *source_alignxf,
22 double *
const *q_points,
unsigned int startindex,
unsigned int endindex,
24 int rnd,
double max_dist_match2,
double &sum,
25 double *centroid_m,
double *centroid_d)
30 double local_alignxf_inv[16];
31 M4inv(source_alignxf, local_alignxf_inv);
36 for (
unsigned int i = startindex; i < endindex; i++) {
37 if (rnd > 1 && rand(rnd) != 0)
continue;
39 t[0] = q_points[i][0];
40 t[1] = q_points[i][1];
41 t[2] = q_points[i][2];
43 transform3(local_alignxf_inv, t, s);
45 double *closest = this->
FindClosest(s, max_dist_match2, thread_num);
47 transform3(source_alignxf, closest, s);
50 centroid_m[0] += s[0];
51 centroid_m[1] += s[1];
52 centroid_m[2] += s[2];
53 centroid_d[0] += t[0];
54 centroid_d[1] += t[1];
55 centroid_d[2] += t[2];
61 myPair.
p1.
z - myPair.
p2.
z };
64 pairs->push_back(myPair);
83 double *source_alignxf,
84 const DataXYZ& xyz_r,
unsigned int startindex,
unsigned int endindex,
86 int rnd,
double max_dist_match2,
double &sum,
87 double *centroid_m,
double *centroid_d)
92 double local_alignxf_inv[16];
93 M4inv(source_alignxf, local_alignxf_inv);
98 for (
unsigned int i = startindex; i < endindex; i++) {
99 if (rnd > 1 && rand(rnd) != 0)
continue;
105 transform3(local_alignxf_inv, t, s);
107 double *closest = this->
FindClosest(s, max_dist_match2, thread_num);
109 transform3(source_alignxf, closest, s);
112 centroid_m[0] += s[0];
113 centroid_m[1] += s[1];
114 centroid_m[2] += s[2];
115 centroid_d[0] += t[0];
116 centroid_d[1] += t[1];
117 centroid_d[2] += t[2];
121 myPair.
p1.
x - myPair.
p2.
x,
122 myPair.
p1.
y - myPair.
p2.
y,
123 myPair.
p1.
z - myPair.
p2.
z };
126 pairs->push_back(myPair);
Representation of a general search trees.
virtual double * FindClosest(double *_p, double maxdist2, int threadNum=0) const =0
Point p1
The two points forming the pair.
double z
z coordinate in 3D space
Representing point pairs.
Point p2
The two points forming the pair.
double x
x coordinate in 3D space
virtual void getPtPairs(vector< PtPair > *pairs, double *source_alignxf, double *const *q_points, unsigned int startindex, unsigned int endindex, int thread_num, int rnd, double max_dist_match2, double &sum, double *centroid_m, double *centroid_d)
double y
y coordinate in 3D space