Class
List
Hierarchy
Modules
Common
Events
Math
Messages
Physics
Rendering
Sensors
Transport
Links
Gazebo Website
Wiki
Tutorials
Download
•
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
gazebo
math
Vector3.hh
Go to the documentation of this file.
1
/*
2
* Copyright 2012 Nate Koenig
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: The world; all models are collected here
18
* Author: Nate Koenig
19
* Date: 3 Apr 2007
20
*/
21
22
#ifndef _VECTOR3_HH_
23
#define _VECTOR3_HH_
24
25
#include <math.h>
26
#include <iostream>
27
#include <fstream>
28
29
#include "
gazebo/common/CommonTypes.hh
"
30
31
namespace
gazebo
32
{
33
namespace
math
34
{
37
42
class
Vector3
43
{
45
public
:
static
const
Vector3
Zero
;
46
48
public
:
Vector3
();
49
54
public
:
Vector3
(
const
double
&_x,
const
double
&_y,
const
double
&_z);
55
58
public
:
Vector3
(
const
Vector3
&_v);
59
61
public
:
virtual
~Vector3
();
62
65
public
:
double
GetSum
()
const
;
66
70
public
:
double
Distance
(
const
Vector3
&_pt)
const
;
71
77
public
:
double
Distance
(
double
_x,
double
_y,
double
_z)
const
;
78
81
public
:
double
GetLength
()
const
;
82
85
public
:
double
GetSquaredLength
()
const
;
86
89
public
:
Vector3
Normalize
();
90
93
public
:
Vector3
Round
();
94
97
public
:
Vector3
GetRounded
()
const
;
98
103
public
:
inline
void
Set
(
double
_x = 0,
double
_y = 0 ,
double
_z = 0)
104
{
105
this->
x
= _x;
106
this->
y
= _y;
107
this->
z
= _z;
108
}
109
112
public
:
Vector3
Cross
(
const
Vector3
&_pt)
const
;
113
116
public
:
double
Dot
(
const
Vector3
&_pt)
const
;
117
120
public
:
Vector3
GetAbs
()
const
;
121
124
public
:
Vector3
GetPerpendicular
()
const
;
125
131
public
:
static
Vector3
GetNormal
(
const
Vector3
&_v1,
const
Vector3
&_v2,
132
const
Vector3
&_v3);
133
138
public
:
double
GetDistToLine
(
const
Vector3
&_pt1,
const
Vector3
&_pt2);
139
143
public
:
void
SetToMax
(
const
Vector3
&_v);
144
148
public
:
void
SetToMin
(
const
Vector3
&_v);
149
152
public
:
double
GetMax
()
const
;
153
156
public
:
double
GetMin
()
const
;
157
161
public
:
Vector3
&
operator =
(
const
Vector3
&_v);
162
166
public
:
Vector3
&
operator =
(
double
_value);
167
171
public
:
Vector3
operator+
(
const
Vector3
&_v)
const
;
172
175
public
:
const
Vector3
&
operator+=
(
const
Vector3
&_v);
176
180
public
:
inline
Vector3
operator-
(
const
Vector3
&_pt)
const
181
{
182
return
Vector3
(this->
x
- _pt.
x
,
183
this->y - _pt.
y
,
184
this->z - _pt.
z
);
185
}
186
189
public
:
const
Vector3
&
operator-=
(
const
Vector3
&_pt);
190
195
public
:
const
Vector3
operator/
(
const
Vector3
&_pt)
const
;
196
201
public
:
const
Vector3
&
operator/=
(
const
Vector3
&_pt);
202
206
public
:
const
Vector3
operator/
(
double
_v)
const
;
207
211
public
:
const
Vector3
&
operator/=
(
double
_v);
212
216
public
:
Vector3
operator*
(
const
Vector3
&_p)
const
;
217
222
public
:
const
Vector3
&
operator*=
(
const
Vector3
&_v);
223
227
public
:
Vector3
operator*
(
double
_v)
const
;
228
232
public
:
const
Vector3
&
operator*=
(
double
_v);
233
238
public
:
bool
operator ==
(
const
Vector3
&_pt)
const
;
239
244
public
:
bool
operator!=
(
const
Vector3
&_v)
const
;
245
247
public
:
bool
IsFinite
()
const
;
248
250
public
:
inline
void
Correct
()
251
{
252
if
(!finite(this->
x
))
253
this->
x
= 0;
254
if
(!finite(this->
y
))
255
this->
y
= 0;
256
if
(!finite(this->
z
))
257
this->
z
= 0;
258
}
259
261
public
:
double
operator[]
(
unsigned
int
index)
const
;
262
265
public
:
void
Round
(
int
_precision);
266
271
public
:
bool
Equal
(
const
Vector3
&_v)
const
;
272
274
public
:
double
x
;
275
277
public
:
double
y
;
278
280
public
:
double
z
;
281
286
public
:
friend
std::ostream &
operator<<
(std::ostream &_out,
287
const
gazebo::math::Vector3
&_pt)
288
{
289
_out << _pt.
x
<<
" "
<< _pt.
y
<<
" "
<< _pt.
z
;
290
return
_out;
291
}
292
297
public
:
friend
std::istream &
operator>>
(std::istream &_in,
298
gazebo::math::Vector3
&_pt)
299
{
300
// Skip white spaces
301
_in.setf(std::ios_base::skipws);
302
_in >> _pt.
x
>> _pt.
y
>> _pt.
z
;
303
return
_in;
304
}
305
};
307
}
308
}
309
#endif
310