1 /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2 This file is part of CEPS.
4 CEPS is free software: you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation, either version 3 of the License, or
7 (at your option) any later version.
9 CEPS is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
14 You should have received a copy of the GNU General Public License
15 along with CEPS (see file LICENSE at root of project).
16 If not, see <https://www.gnu.org/licenses/>.
19 Copyright 2019-2024 Inria, Universite de Bordeaux
21 Authors, in alphabetical order:
23 Pierre-Elliott BECUE, Florian CARO, Yves COUDIERE(*), Andjela DAVIDOVIC,
24 Charlie DOUANLA-LONTSI, Marc FUENTES, Mehdi JUHOOR, Michael LEGUEBE(*),
25 Pauline MIGERDITICHAN, Valentin PANNETIER(*), Nejib ZEMZEMI.
26 * : currently active authors
28 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
29 /** @file Class that selects entities located in a sphere */
30 #include "geometry/selectors/SphereSelector.hpp"
31 #include "common/math/CepsVertex.hpp"
33 template <class _Iterator>
34 SphereSelector<_Iterator>::SphereSelector(CepsReal3D center, CepsReal diameter) :
35 AbstractSelector<_Iterator>(),
41 template <class _Iterator>
43 SphereSelector<_Iterator>::selectBetween(_Iterator first, _Iterator last)
45 Selector selector = [&] (Object obj) -> CepsBool {
46 CepsReal r = CepsVertex(obj->getCoordinates()-m_center).norm2();
47 return r < 0.5*m_diameter;
49 return AbstractSelector<_Iterator>::internalRun(&selector,first,last);