normalize_angle.h
Go to the documentation of this file.
1 
2 // Ceres Solver - A fast non-linear least squares minimizer
3 // Copyright 2016 Google Inc. All rights reserved.
4 // http://ceres-solver.org/
5 //
6 // Redistribution and use in source and binary forms, with or without
7 // modification, are permitted provided that the following conditions are met:
8 //
9 // * Redistributions of source code must retain the above copyright notice,
10 // this list of conditions and the following disclaimer.
11 // * Redistributions in binary form must reproduce the above copyright notice,
12 // this list of conditions and the following disclaimer in the documentation
13 // and/or other materials provided with the distribution.
14 // * Neither the name of Google Inc. nor the names of its contributors may be
15 // used to endorse or promote products derived from this software without
16 // specific prior written permission.
17 //
18 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19 // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21 // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
22 // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
23 // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
24 // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
25 // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
26 // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
27 // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
28 // POSSIBILITY OF SUCH DAMAGE.
29 //
30 // Author: vitus@google.com (Michael Vitus)
31 #ifndef CERES_EXAMPLES_POSE_GRAPH_2D_NORMALIZE_ANGLE_H_
32 #define CERES_EXAMPLES_POSE_GRAPH_2D_NORMALIZE_ANGLE_H_
33 #include <cmath>
34 #include "ceres/ceres.h"
35 namespace ceres {
36 namespace examples {
37 // Normalizes the angle in radians between [-pi and pi).
38 template <typename T>
39 inline T NormalizeAngle(const T& angle_radians) {
40  // Use ceres::floor because it is specialized for double and Jet types.
41  T two_pi(2.0 * M_PI);
42  return angle_radians -
43  two_pi * ceres::floor((angle_radians + T(M_PI)) / two_pi);
44 }
45 } // namespace examples
46 } // namespace ceres
47 #endif // CERES_EXAMPLES_POSE_GRAPH_2D_NORMALIZE_ANGLE_H_
T NormalizeAngle(const T &angle_radians)


hector_gps_calibration
Author(s):
autogenerated on Mon Jun 10 2019 13:34:46