Gazebo Math
API Reference
8.0.0
insert_drive_file
Tutorials
library_books
Classes
toc
Namespaces
insert_drive_file
Files
launch
Gazebo Website
Index
List
Hierarchy
Members: All
Members: Functions
Members: Variables
Members: Typedefs
Members: Enumerations
Members: Enumerator
List
Members
Functions
Typedefs
Variables
Enumerations
Enumerator
src
gz-math
include
gz
math
AxisAlignedBox.hh
Go to the documentation of this file.
1
/*
2
* Copyright (C) 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
#ifndef GZ_MATH_AXISALIGNEDBOX_HH_
18
#define GZ_MATH_AXISALIGNEDBOX_HH_
19
20
#include <ostream>
21
#include <tuple>
22
#include <gz/math/config.hh>
23
#include <
gz/math/Helpers.hh
>
24
#include <
gz/math/Line3.hh
>
25
#include <
gz/math/MassMatrix3.hh
>
26
#include <
gz/math/Material.hh
>
27
#include <
gz/math/Vector3.hh
>
28
#include <gz/utils/ImplPtr.hh>
29
30
namespace
gz::math
31
{
32
// Inline bracket to help doxygen filtering.
33
inline
namespace
GZ_MATH_VERSION_NAMESPACE {
37
class
GZ_MATH_VISIBLE
AxisAlignedBox
38
{
45
public
:
AxisAlignedBox
();
46
51
public
:
AxisAlignedBox
(
const
Vector3d
&
_vec1
,
const
Vector3d
&
_vec2
);
52
61
public
:
AxisAlignedBox
(
double
_vec1X
,
double
_vec1Y
,
double
_vec1Z
,
62
double
_vec2X
,
double
_vec2Y
,
double
_vec2Z
);
63
66
public
:
double
XLength
()
const
;
67
70
public
:
double
YLength
()
const
;
71
74
public
:
double
ZLength
()
const
;
75
78
public
:
math::Vector3d
Size
()
const
;
79
82
public
:
math::Vector3d
Center
()
const
;
83
86
public
:
void
Merge
(
const
AxisAlignedBox
&
_box
);
87
91
public
:
AxisAlignedBox
operator+
(
const
AxisAlignedBox
&
_b
)
const
;
92
96
public
:
const
AxisAlignedBox
&
operator+=
(
const
AxisAlignedBox
&
_b
);
97
101
public
:
bool
operator==
(
const
AxisAlignedBox
&
_b
)
const
;
102
106
public
:
bool
operator!=
(
const
AxisAlignedBox
&
_b
)
const
;
107
111
public
:
AxisAlignedBox
operator-
(
const
Vector3d
&
_v
);
112
116
public
:
AxisAlignedBox
operator+
(
const
Vector3d
&
_v
);
117
121
public
:
AxisAlignedBox
operator-
(
const
Vector3d
&
_v
)
const
;
122
126
public
:
AxisAlignedBox
operator+
(
const
Vector3d
&
_v
)
const
;
127
132
public
:
friend
std::ostream
&
operator<<
(
std::ostream
&
_out
,
133
const
gz::math::AxisAlignedBox
&
_b
)
134
{
135
_out
<<
"Min["
<<
_b
.Min() <<
"] Max["
<<
_b
.Max() <<
"]"
;
136
return
_out
;
137
}
138
141
public
:
const
Vector3d
&
Min
()
const
;
142
145
public
:
const
Vector3d
&
Max
()
const
;
146
149
public
:
Vector3d
&
Min
();
150
153
public
:
Vector3d
&
Max
();
154
161
public
:
bool
Intersects
(
const
AxisAlignedBox
&
_box
)
const
;
162
166
public
:
bool
Contains
(
const
Vector3d
&
_p
)
const
;
167
174
public
:
bool
IntersectCheck
(
const
Vector3d
&
_origin
,
const
Vector3d
&
_dir
,
175
const
double
_min
,
const
double
_max
)
const
;
176
192
public
:
std::tuple<bool, double>
IntersectDist
(
193
const
Vector3d
&
_origin
,
const
Vector3d
&
_dir
,
194
const
double
_min
,
const
double
_max
)
const
;
195
213
public
:
std::tuple<bool, double, Vector3d>
Intersect
(
214
const
Vector3d
&
_origin
,
const
Vector3d
&
_dir
,
215
const
double
_min
,
const
double
_max
)
const
;
216
225
public
:
std::tuple<bool, double, Vector3d>
Intersect
(
226
const
Line3d
&
_line
)
const
;
227
230
public
:
double
Volume
()
const
;
231
238
private
:
bool
ClipLine(
const
int
_d
,
const
Line3d
&
_line
,
239
double
&
_low
,
double
&
_high
)
const
;
240
242
GZ_UTILS_IMPL_PTR
(dataPtr)
243
};
244
}
// namespace GZ_MATH_VERSION_NAMESPACE
245
}
// namespace gz::math
246
#endif
// GZ_MATH_AXISALIGNEDBOX_HH_