From e6eb0bb0bc3f766953affe28cda7f8afbaab0985 Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Tue, 18 Aug 2015 05:52:26 +0200 Subject: pt, aruco: another take at focal length formula Aspect ratio is meant to be viewport's ratio, not diagonal to axis. --- ftnoir_tracker_pt/ftnoir_tracker_pt.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) mode change 100644 => 100755 ftnoir_tracker_pt/ftnoir_tracker_pt.cpp (limited to 'ftnoir_tracker_pt') diff --git a/ftnoir_tracker_pt/ftnoir_tracker_pt.cpp b/ftnoir_tracker_pt/ftnoir_tracker_pt.cpp old mode 100644 new mode 100755 index e10cfea0..4fa70ccf --- a/ftnoir_tracker_pt/ftnoir_tracker_pt.cpp +++ b/ftnoir_tracker_pt/ftnoir_tracker_pt.cpp @@ -57,8 +57,9 @@ bool Tracker_PT::get_focal_length(float& ret) { static constexpr double pi = 3.14159265359; const int w = info.res_x, h = info.res_y; - const double diag = sqrt(w * w + h * h)/w, diag_fov = static_cast(s.fov) * pi / 180.; - const double fov = 2.*atan(tan(diag_fov/2.0)/sqrt(1. + diag*diag)); + const double diag = sqrt(1. + h/(double)w * h/(double)w); + const double diag_fov = static_cast(s.fov) * pi / 180.; + const double fov = 2.*atan(tan(diag_fov/2.0)/diag); ret = .5 / tan(.5 * fov); return true; } -- cgit v1.2.3