Class
List
Hierarchy
Modules
Common
Events
Math
Messages
Physics
Rendering
Sensors
Transport
Links
Gazebo Website
Wiki
Tutorials
Download
Report Documentation Issues
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
gazebo
math
Angle.hh
Go to the documentation of this file.
1
/*
2
* Copyright 2012 Open Source Robotics Foundation
3
*
4
* Licensed under the Apache License, Version 2.0 (the "License");
5
* you may not use this file except in compliance with the License.
6
* You may obtain a copy of the License at
7
*
8
* http://www.apache.org/licenses/LICENSE-2.0
9
*
10
* Unless required by applicable law or agreed to in writing, software
11
* distributed under the License is distributed on an "AS IS" BASIS,
12
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
* See the License for the specific language governing permissions and
14
* limitations under the License.
15
*
16
*/
17
/* Desc: Angle class
18
* Author: Nate Koenig
19
* Date: 18 Aug 2008
20
*/
21
22
#ifndef _ANGLE_HH_
23
#define _ANGLE_HH_
24
25
#include <math.h>
26
#include <iostream>
27
31
#define GZ_RTOD(r) ((r) * 180 / M_PI)
32
36
#define GZ_DTOR(d) ((d) * M_PI / 180)
37
41
#define GZ_NORMALIZE(a) (atan2(sin(a), cos(a)))
42
43
namespace
gazebo
44
{
46
48
namespace
math
49
{
52
55
class
Angle
56
{
58
public
:
Angle
();
59
62
public
:
Angle
(
double
_radian);
63
66
public
:
Angle
(
const
Angle
&_angle);
67
69
public
:
virtual
~Angle
();
70
73
public
:
void
SetFromRadian
(
double
_radian);
74
77
public
:
void
SetFromDegree
(
double
_degree);
78
81
public
:
double
Radian
()
const
;
82
85
public
:
double
Degree
()
const
;
86
88
public
:
void
Normalize
();
89
92
public
:
inline
double
operator*
()
const
{
return
value; }
96
public
:
Angle
operator-
(
const
Angle
&_angle)
const
;
97
101
public
:
Angle
operator+
(
const
Angle
&_angle)
const
;
102
106
public
:
Angle
operator*
(
const
Angle
&_angle)
const
;
107
111
public
:
Angle
operator/
(
const
Angle
&_angle)
const
;
112
116
public
:
Angle
operator-=
(
const
Angle
&_angle);
117
121
public
:
Angle
operator+=
(
const
Angle
&_angle);
122
126
public
:
Angle
operator*=
(
const
Angle
&_angle);
127
131
public
:
Angle
operator/=
(
const
Angle
&_angle);
132
136
public
:
bool
operator ==
(
const
Angle
&_angle)
const
;
137
141
public
:
bool
operator!=
(
const
Angle
&_angle)
const
;
142
146
public
:
bool
operator<
(
const
Angle
&_angle)
const
;
147
151
public
:
bool
operator<=
(
const
Angle
&_angle)
const
;
152
156
public
:
bool
operator>
(
const
Angle
&_angle)
const
;
157
161
public
:
bool
operator>=
(
const
Angle
&_angle)
const
;
162
167
public
:
friend
std::ostream &
operator<<
(std::ostream &_out,
168
const
gazebo::math::Angle
&_a)
169
{
170
_out << _a.
Radian
();
171
return
_out;
172
}
173
178
public
:
friend
std::istream &
operator>>
(std::istream &_in,
179
gazebo::math::Angle
&_a)
180
{
181
// Skip white spaces
182
_in.setf(std::ios_base::skipws);
183
_in >> _a.value;
184
return
_in;
185
}
186
188
private
:
double
value;
189
};
190
192
}
193
}
194
195
#endif
196
197
198