diff options
author | Martin Miller | 2017-03-25 17:24:06 -0500 |
---|---|---|
committer | Martin Miller | 2017-03-25 17:24:06 -0500 |
commit | 8535af062e26f583383174e7c78514bc107efdcb (patch) | |
tree | d70ff608d12c183bc5703f575e10b2f836b5c227 | |
parent | f409d322fd400b412c632b74f76c6c9794fbf6c0 (diff) | |
download | refslam-8535af062e26f583383174e7c78514bc107efdcb.zip refslam-8535af062e26f583383174e7c78514bc107efdcb.tar.gz |
Add Feature method to test if in FOV
Added a boolean function that returns if the feature is in the FOV. This
method does not use the camera calibration, it just tests if the
feature's angle w.r.t. the body.
-rw-r--r-- | src/feature.cpp | 25 | ||||
-rw-r--r-- | src/feature.h | 1 |
2 files changed, 26 insertions, 0 deletions
diff --git a/src/feature.cpp b/src/feature.cpp index 136f820..23a7fb7 100644 --- a/src/feature.cpp +++ b/src/feature.cpp @@ -513,3 +513,28 @@ Feature::dx ( const Vector3d &del ) return ; } /* ----- end of method Feature::dx ----- */ +/* + *-------------------------------------------------------------------------------------- + * Class: Feature + * Method: Feature :: inFOV + * Description: Returns true if the feature is in the field of view. This is a + * somewhat loose interpretation of that because we don't know the actual camera + * parameters. + *-------------------------------------------------------------------------------------- + */ +bool +Feature::inFOV ( ) +{ + bool rv; + double angle; + angle = atan2(1./X[2],X[0]/X[2]); + if (X[2]>1) { + rv = false; + } else if (angle<M_PI_4 || angle>(3*M_PI_4)) { + rv = false; + } else { + rv = true; + } + return rv; +} /* ----- end of method Feature::inFOV ----- */ + diff --git a/src/feature.h b/src/feature.h index b921d8b..d7015f2 100644 --- a/src/feature.h +++ b/src/feature.h @@ -37,6 +37,7 @@ class Feature /* ==================== OPERATORS ======================================= */ bool sane(); + bool inFOV(); Vector3d findDepth( const Quaterniond &q, double z, const Vector3d &xs, const Vector3d &xr); Matrix<double,3,9> Fx( double dt ); |