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 (C) 2012-2014 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
18
#ifndef _ANGLE_HH_
19
#define _ANGLE_HH_
20
21
#include <math.h>
22
#include <iostream>
23
#include "
gazebo/util/system.hh
"
24
28
#define GZ_RTOD(r) ((r) * 180 / M_PI)
29
33
#define GZ_DTOR(d) ((d) * M_PI / 180)
34
38
#define GZ_NORMALIZE(a) (atan2(sin(a), cos(a)))
39
40
namespace
gazebo
41
{
43
45
namespace
math
46
{
49
52
class
GAZEBO_VISIBLE
Angle
53
{
55
public
:
static
const
Angle
Zero
;
56
58
public
:
static
const
Angle
Pi
;
59
61
public
:
static
const
Angle
HalfPi
;
62
64
public
:
static
const
Angle
TwoPi
;
65
67
public
:
Angle
();
68
71
public
:
Angle
(
double
_radian);
72
75
public
:
Angle
(
const
Angle
&_angle);
76
78
public
:
virtual
~
Angle
();
79
82
public
:
void
SetFromRadian(
double
_radian);
83
86
public
:
void
SetFromDegree(
double
_degree);
87
90
public
:
double
Radian()
const
;
91
94
public
:
double
Degree()
const
;
95
97
public
:
void
Normalize();
98
101
public
:
inline
double
operator*
()
const
{
return
value; }
105
public
:
Angle
operator-(
const
Angle
&_angle)
const
;
106
110
public
:
Angle
operator+(
const
Angle
&_angle)
const
;
111
115
public
:
Angle
operator*(
const
Angle
&_angle)
const
;
116
120
public
:
Angle
operator/(
const
Angle
&_angle)
const
;
121
125
public
:
Angle
operator-=(
const
Angle
&_angle);
126
130
public
:
Angle
operator+=(
const
Angle
&_angle);
131
135
public
:
Angle
operator*=(
const
Angle
&_angle);
136
140
public
:
Angle
operator/=(
const
Angle
&_angle);
141
145
public
:
bool
operator ==(
const
Angle
&_angle)
const
;
146
150
public
:
bool
operator!=(
const
Angle
&_angle)
const
;
151
155
public
:
bool
operator<(
const
Angle
&_angle)
const
;
156
160
public
:
bool
operator<=(
const
Angle
&_angle)
const
;
161
165
public
:
bool
operator>(
const
Angle
&_angle)
const
;
166
170
public
:
bool
operator>=(
const
Angle
&_angle)
const
;
171
176
public
:
friend
std::ostream &
operator<<
(std::ostream &_out,
177
const
gazebo::math::Angle
&_a)
178
{
179
_out << _a.
Radian
();
180
return
_out;
181
}
182
187
public
:
friend
std::istream &
operator>>
(std::istream &_in,
188
gazebo::math::Angle
&_a)
189
{
190
// Skip white spaces
191
_in.setf(std::ios_base::skipws);
192
_in >> _a.value;
193
return
_in;
194
}
195
197
private
:
double
value;
198
};
199
201
}
202
}
203
204
#endif
205
206
207