aimsalgo
6.0.0
Neuroimaging image processing
samplable_cone.h
Go to the documentation of this file.
1
/* This software and supporting documentation are distributed by
2
* Institut Federatif de Recherche 49
3
* CEA/NeuroSpin, Batiment 145,
4
* 91191 Gif-sur-Yvette cedex
5
* France
6
*
7
* This software is governed by the CeCILL-B license under
8
* French law and abiding by the rules of distribution of free software.
9
* You can use, modify and/or redistribute the software under the
10
* terms of the CeCILL-B license as circulated by CEA, CNRS
11
* and INRIA at the following URL "http://www.cecill.info".
12
*
13
* As a counterpart to the access to the source code and rights to copy,
14
* modify and redistribute granted by the license, users are provided only
15
* with a limited warranty and the software's author, the holder of the
16
* economic rights, and the successive licensors have only limited
17
* liability.
18
*
19
* In this respect, the user's attention is drawn to the risks associated
20
* with loading, using, modifying and/or developing or reproducing the
21
* software by the user in light of its specific status of free software,
22
* that may mean that it is complicated to manipulate, and that also
23
* therefore means that it is reserved for developers and experienced
24
* professionals having in-depth computer knowledge. Users are therefore
25
* encouraged to load and test the software's suitability as regards their
26
* requirements in conditions enabling the security of their systems and/or
27
* data to be ensured and, more generally, to use and operate it in the
28
* same conditions as regards security.
29
*
30
* The fact that you are presently reading this means that you have had
31
* knowledge of the CeCILL-B license and that you accept its terms.
32
*/
33
34
35
#ifndef AIMS_RESAMPLING_SAMPLABLE_CONE_H
36
#define AIMS_RESAMPLING_SAMPLABLE_CONE_H
37
38
#include <
aims/resampling/samplable.h
>
39
40
namespace
aims
41
{
42
43
class
ConeSamplable
:
public
aimsalgo::Samplable
<float, 3>
44
{
45
public
:
46
ConeSamplable
(
const
Point3df
& arrow,
const
Point3df
& base,
47
float
radius );
48
virtual
~ConeSamplable
() {}
49
virtual
bool
contains
(
AimsVector<float,3>
& vector )
50
{
51
// std::cout << "ConeSamplable::contains " << vector << std::endl;
52
float
pos = vector.
dot
( _direction );
53
if
( pos >= _proj0 and pos <= _proj1 )
54
{
55
float
rmax = (pos - _proj0) / (_proj1 - _proj0) * _radius;
56
float
r = ( vector - _cax0 - _direction * pos ).
norm
();
57
if
( r <= rmax )
58
return
true
;
59
}
60
return
false
;
61
}
62
63
private
:
64
Point3df
_arrow;
65
Point3df
_base;
66
float
_radius;
67
68
Point3df
_direction;
69
float
_proj0;
70
float
_proj1;
71
Point3df
_cax0;
72
};
73
74
75
inline
ConeSamplable::ConeSamplable
(
const
Point3df
& arrow,
76
const
Point3df
& base,
float
radius )
77
:
aimsalgo
::
Samplable
<float, 3>(), _arrow( arrow ), _base( base ),
78
_radius( radius )
79
{
80
_direction = base - arrow;
81
_direction /= _direction.
norm
();
82
_proj0 = _direction.dot( arrow );
83
_proj1 = _direction.dot( base );
84
_cax0 = _arrow - _direction * _proj0;
85
}
86
87
}
88
89
#endif
90
AimsVector
AimsVector::dot
T dot(const AimsVector< T, D > &other) const
AimsVector::norm
float norm() const
aims::ConeSamplable::ConeSamplable
ConeSamplable(const Point3df &arrow, const Point3df &base, float radius)
Definition
samplable_cone.h:75
aims::ConeSamplable::contains
virtual bool contains(AimsVector< float, 3 > &vector)
Definition
samplable_cone.h:49
aims::ConeSamplable::~ConeSamplable
virtual ~ConeSamplable()
Definition
samplable_cone.h:48
aimsalgo::Samplable
Definition
samplable.h:49
aimsalgo::Samplable< float, 3 >::Samplable
Samplable()
Definition
samplable.h:58
aims
aimsalgo
The virtual template class fo which samplable classes must inherit from.
Definition
bucketmapsampler.h:46
samplable.h
norm
AIMSDATA_API float norm(const Tensor &thing)
Point3df
AimsVector< float, 3 > Point3df
aims
resampling
samplable_cone.h
Generated by
1.13.2