include
mcl_3dl
raycast.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2016-2017, the mcl_3dl authors
3
* All rights reserved.
4
*
5
* Redistribution and use in source and binary forms, with or without
6
* modification, are permitted provided that the following conditions are met:
7
*
8
* * Redistributions of source code must retain the above copyright
9
* notice, this list of conditions and the following disclaimer.
10
* * Redistributions in binary form must reproduce the above copyright
11
* notice, this list of conditions and the following disclaimer in the
12
* documentation and/or other materials provided with the distribution.
13
* * Neither the name of the copyright holder nor the names of its
14
* contributors may be used to endorse or promote products derived from
15
* this software without specific prior written permission.
16
*
17
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
21
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27
* POSSIBILITY OF SUCH DAMAGE.
28
*/
29
30
#ifndef MCL_3DL_RAYCAST_H
31
#define MCL_3DL_RAYCAST_H
32
33
#include <cmath>
34
#include <vector>
35
36
#include <
mcl_3dl/chunked_kdtree.h
>
37
#include <
mcl_3dl/vec3.h
>
38
39
namespace
mcl_3dl
40
{
41
template
<
typename
POINT_TYPE>
42
class
Raycast
43
{
44
public
:
45
class
CastResult
46
{
47
public
:
48
Vec3
pos_
;
49
bool
collision_
;
50
float
sin_angle_
;
51
const
POINT_TYPE*
point_
;
52
53
CastResult
()
54
:
pos_
(0, 0, 0)
55
,
collision_
(false)
56
,
sin_angle_
(0)
57
,
point_
(nullptr)
58
{
59
}
60
61
CastResult
(
const
Vec3
& pos,
bool
collision,
float
sin_angle,
const
POINT_TYPE* point)
62
:
pos_
(pos)
63
,
collision_
(collision)
64
,
sin_angle_
(sin_angle)
65
,
point_
(point)
66
{
67
}
68
};
69
70
Raycast
()
71
{
72
}
73
virtual
void
setRay
(
typename
ChunkedKdtree<POINT_TYPE>::Ptr
kdtree,
const
Vec3
ray_begin,
const
Vec3
ray_end) = 0;
74
virtual
bool
getNextCastResult
(CastResult& result) = 0;
75
};
76
}
// namespace mcl_3dl
77
78
#endif // MCL_3DL_RAYCAST_H
mcl_3dl::ChunkedKdtree::Ptr
std::shared_ptr< ChunkedKdtree > Ptr
Definition:
chunked_kdtree.h:49
mcl_3dl::Raycast::CastResult::point_
const POINT_TYPE * point_
Definition:
raycast.h:51
vec3.h
mcl_3dl::Raycast
Definition:
raycast.h:42
mcl_3dl::Raycast::CastResult::CastResult
CastResult()
Definition:
raycast.h:53
mcl_3dl::Raycast::Raycast
Raycast()
Definition:
raycast.h:70
mcl_3dl
Definition:
chunked_kdtree.h:43
mcl_3dl::Raycast::CastResult::CastResult
CastResult(const Vec3 &pos, bool collision, float sin_angle, const POINT_TYPE *point)
Definition:
raycast.h:61
mcl_3dl::Raycast::CastResult::sin_angle_
float sin_angle_
Definition:
raycast.h:50
mcl_3dl::Raycast::CastResult::collision_
bool collision_
Definition:
raycast.h:49
mcl_3dl::Raycast::CastResult
Definition:
raycast.h:45
mcl_3dl::Raycast::getNextCastResult
virtual bool getNextCastResult(CastResult &result)=0
mcl_3dl::Raycast::CastResult::pos_
Vec3 pos_
Definition:
raycast.h:48
mcl_3dl::Vec3
Definition:
vec3.h:37
chunked_kdtree.h
mcl_3dl::Raycast::setRay
virtual void setRay(typename ChunkedKdtree< POINT_TYPE >::Ptr kdtree, const Vec3 ray_begin, const Vec3 ray_end)=0
mcl_3dl
Author(s): Atsushi Watanabe
autogenerated on Thu Oct 17 2024 02:18:04