LSST Applications g0265f82a02+0e5473021a,g02d81e74bb+f5613e8b4f,g1470d8bcf6+190ad2ba91,g14a832a312+311607e4ab,g2079a07aa2+86d27d4dc4,g2305ad1205+a8e3196225,g295015adf3+b67ee847e5,g2bbee38e9b+0e5473021a,g337abbeb29+0e5473021a,g3ddfee87b4+a761f810f3,g487adcacf7+17c8fdbcbd,g50ff169b8f+96c6868917,g52b1c1532d+585e252eca,g591dd9f2cf+65b5bd823e,g5a732f18d5+53520f316c,g64a986408d+f5613e8b4f,g6c1bc301e9+51106c2951,g858d7b2824+f5613e8b4f,g8a8a8dda67+585e252eca,g99cad8db69+6729933424,g9ddcbc5298+9a081db1e4,ga1e77700b3+15fc3df1f7,ga8c6da7877+ef4e3a5875,gb0e22166c9+60f28cb32d,gb6a65358fc+0e5473021a,gba4ed39666+c2a2e4ac27,gbb8dafda3b+e9bba80f27,gc120e1dc64+eee469a5e5,gc28159a63d+0e5473021a,gcf0d15dbbd+a761f810f3,gdaeeff99f8+f9a426f77a,ge6526c86ff+d4c1d4bfef,ge79ae78c31+0e5473021a,gee10cc3b42+585e252eca,gf1cff7945b+f5613e8b4f,w.2024.16
LSST Data Management Base Package
Loading...
Searching...
No Matches
Public Member Functions | List of all members
lsst::sphgeom::detail::PixelFinder< Derived, RegionType, InteriorOnly, NumVertices > Class Template Reference

#include <PixelFinder.h>

Public Member Functions

 PixelFinder (RangeSet &ranges, RegionType const &region, int level, size_t maxRanges)
 
void visit (UnitVector3d const *pixel, uint64_t index, int level)
 

Detailed Description

template<typename Derived, typename RegionType, bool InteriorOnly, size_t NumVertices>
class lsst::sphgeom::detail::PixelFinder< Derived, RegionType, InteriorOnly, NumVertices >

Definition at line 75 of file PixelFinder.h.

Constructor & Destructor Documentation

◆ PixelFinder()

template<typename Derived , typename RegionType , bool InteriorOnly, size_t NumVertices>
lsst::sphgeom::detail::PixelFinder< Derived, RegionType, InteriorOnly, NumVertices >::PixelFinder ( RangeSet & ranges,
RegionType const & region,
int level,
size_t maxRanges )
inline

Definition at line 77 of file PixelFinder.h.

80 :
81 _ranges{&ranges},
82 _region{&region},
83 _level{level},
84 _desiredLevel{level},
85 _maxRanges{maxRanges == 0 ? maxRanges - 1 : maxRanges}
86 {}

Member Function Documentation

◆ visit()

template<typename Derived , typename RegionType , bool InteriorOnly, size_t NumVertices>
void lsst::sphgeom::detail::PixelFinder< Derived, RegionType, InteriorOnly, NumVertices >::visit ( UnitVector3d const * pixel,
uint64_t index,
int level )
inline

Definition at line 88 of file PixelFinder.h.

91 {
92 if (level > _level) {
93 // Nothing to do - the subdivision level has been reduced
94 // or a pixel that completely contains the search region
95 // has been found.
96 return;
97 }
98 // Determine the relationship between the pixel and the search region.
99 Relationship r = detail::relate(pixel, pixel + NumVertices, *_region);
100 if ((r & DISJOINT) != 0) {
101 // The pixel is disjoint from the search region.
102 return;
103 }
104 if ((r & WITHIN) != 0) {
105 // The tree traversal has reached a pixel that is entirely within
106 // the search region.
107 _insert(index, level);
108 return;
109 } else if (level == _level) {
110 // The tree traversal has reached a leaf.
111 if (!InteriorOnly) {
112 _insert(index, level);
113 }
114 return;
115 }
116 static_cast<Derived *>(this)->subdivide(pixel, index, level);
117 }
Relationship relate(VertexIterator const begin, VertexIterator const end, Box const &b)
std::bitset< 3 > Relationship
Relationship describes how two sets are related.

The documentation for this class was generated from the following file: