diff options
Diffstat (limited to 'tracker-pt/point_tracker.cpp')
-rw-r--r-- | tracker-pt/point_tracker.cpp | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/tracker-pt/point_tracker.cpp b/tracker-pt/point_tracker.cpp index e209938f..39e96038 100644 --- a/tracker-pt/point_tracker.cpp +++ b/tracker-pt/point_tracker.cpp @@ -68,7 +68,7 @@ void PointModel::set_model(const pt_settings& s) } } -void PointModel::get_d_order(const vec2* points, unsigned* d_order, const vec2& d) const +void PointModel::get_d_order(const vec2* points, unsigned* d_order, const vec2& d) { constexpr unsigned cnt = PointModel::N_POINTS; // fit line to orthographically projected points @@ -76,11 +76,10 @@ void PointModel::get_d_order(const vec2* points, unsigned* d_order, const vec2& t d_vals[cnt]; // get sort indices with respect to d scalar product for (unsigned i = 0; i < cnt; ++i) - d_vals[i] = t(d.dot(points[i]), i); + d_vals[i] = {d.dot(points[i]), i}; - std::sort(d_vals, - d_vals + 3, - [](const t& a, const t& b) { return a.first < b.first; }); + std::sort(std::begin(d_vals), std::end(d_vals), + [](t a, t b) { return a.first < b.first; }); for (unsigned i = 0; i < cnt; ++i) d_order[i] = d_vals[i].second; @@ -94,10 +93,11 @@ PointTracker::PointOrder PointTracker::find_correspondences_previous(const vec2* const pt_camera_info& info) { const f fx = pt_camera_info::get_focal_length(info.fov, info.res_x, info.res_y); - PointTracker::PointOrder p; - p[0] = project(vec3(0,0,0), fx); - p[1] = project(model.M01, fx); - p[2] = project(model.M02, fx); + PointTracker::PointOrder p { + project(vec3(0,0,0), fx), + project(model.M01, fx), + project(model.M02, fx) + }; constexpr unsigned sz = PointModel::N_POINTS; @@ -136,7 +136,9 @@ PointTracker::PointOrder PointTracker::find_correspondences_previous(const vec2* void PointTracker::track(const std::vector<vec2>& points, const PointModel& model, const pt_camera_info& info, - int init_phase_timeout) + int init_phase_timeout, + point_filter& filter, + f deadzone_amount) { const f fx = pt_camera_info::get_focal_length(info.fov, info.res_x, info.res_y); PointOrder order; @@ -149,7 +151,7 @@ void PointTracker::track(const std::vector<vec2>& points, else order = find_correspondences_previous(points.data(), model, info); - if (POSIT(model, order, fx) != -1) + if (POSIT(model, filter(order, deadzone_amount), fx) != -1) { init_phase = false; t.start(); |