LSST Applications 27.0.0,g0265f82a02+469cd937ee,g02d81e74bb+21ad69e7e1,g1470d8bcf6+cbe83ee85a,g2079a07aa2+e67c6346a6,g212a7c68fe+04a9158687,g2305ad1205+94392ce272,g295015adf3+81dd352a9d,g2bbee38e9b+469cd937ee,g337abbeb29+469cd937ee,g3939d97d7f+72a9f7b576,g487adcacf7+71499e7cba,g50ff169b8f+5929b3527e,g52b1c1532d+a6fc98d2e7,g591dd9f2cf+df404f777f,g5a732f18d5+be83d3ecdb,g64a986408d+21ad69e7e1,g858d7b2824+21ad69e7e1,g8a8a8dda67+a6fc98d2e7,g99cad8db69+f62e5b0af5,g9ddcbc5298+d4bad12328,ga1e77700b3+9c366c4306,ga8c6da7877+71e4819109,gb0e22166c9+25ba2f69a1,gb6a65358fc+469cd937ee,gbb8dafda3b+69d3c0e320,gc07e1c2157+a98bf949bb,gc120e1dc64+615ec43309,gc28159a63d+469cd937ee,gcf0d15dbbd+72a9f7b576,gdaeeff99f8+a38ce5ea23,ge6526c86ff+3a7c1ac5f1,ge79ae78c31+469cd937ee,gee10cc3b42+a6fc98d2e7,gf1cff7945b+21ad69e7e1,gfbcc870c63+9a11dc8c8f
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: