LSST Applications g0f08755f38+82efc23009,g12f32b3c4e+e7bdf1200e,g1653933729+a8ce1bb630,g1a0ca8cf93+50eff2b06f,g28da252d5a+52db39f6a5,g2bbee38e9b+37c5a29d61,g2bc492864f+37c5a29d61,g2cdde0e794+c05ff076ad,g3156d2b45e+41e33cbcdc,g347aa1857d+37c5a29d61,g35bb328faa+a8ce1bb630,g3a166c0a6a+37c5a29d61,g3e281a1b8c+fb992f5633,g414038480c+7f03dfc1b0,g41af890bb2+11b950c980,g5fbc88fb19+17cd334064,g6b1c1869cb+12dd639c9a,g781aacb6e4+a8ce1bb630,g80478fca09+72e9651da0,g82479be7b0+04c31367b4,g858d7b2824+82efc23009,g9125e01d80+a8ce1bb630,g9726552aa6+8047e3811d,ga5288a1d22+e532dc0a0b,gae0086650b+a8ce1bb630,gb58c049af0+d64f4d3760,gc28159a63d+37c5a29d61,gcf0d15dbbd+2acd6d4d48,gd7358e8bfb+778a810b6e,gda3e153d99+82efc23009,gda6a2b7d83+2acd6d4d48,gdaeeff99f8+1711a396fd,ge2409df99d+6b12de1076,ge79ae78c31+37c5a29d61,gf0baf85859+d0a5978c5a,gf3967379c6+4954f8c433,gfb92a5be7c+82efc23009,gfec2e1e490+2aaed99252,w.2024.46
LSST Data Management Base Package
Loading...
Searching...
No Matches
Q3cPixelization.h
Go to the documentation of this file.
1/*
2 * This file is part of sphgeom.
3 *
4 * Developed for the LSST Data Management System.
5 * This product includes software developed by the LSST Project
6 * (http://www.lsst.org).
7 * See the COPYRIGHT file at the top-level directory of this distribution
8 * for details of code ownership.
9 *
10 * This software is dual licensed under the GNU General Public License and also
11 * under a 3-clause BSD license. Recipients may choose which of these licenses
12 * to use; please see the files gpl-3.0.txt and/or bsd_license.txt,
13 * respectively. If you choose the GPL option then the following text applies
14 * (but note that there is still no warranty even if you opt for BSD instead):
15 *
16 * This program is free software: you can redistribute it and/or modify
17 * it under the terms of the GNU General Public License as published by
18 * the Free Software Foundation, either version 3 of the License, or
19 * (at your option) any later version.
20 *
21 * This program is distributed in the hope that it will be useful,
22 * but WITHOUT ANY WARRANTY; without even the implied warranty of
23 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
24 * GNU General Public License for more details.
25 *
26 * You should have received a copy of the GNU General Public License
27 * along with this program. If not, see <http://www.gnu.org/licenses/>.
28 */
29
30#ifndef LSST_SPHGEOM_Q3CPIXELIZATION_H_
31#define LSST_SPHGEOM_Q3CPIXELIZATION_H_
32
36
37#include <cstdint>
38#include <vector>
39
40#include "ConvexPolygon.h"
41#include "Pixelization.h"
42
43
44namespace lsst {
45namespace sphgeom {
46
58public:
60 static constexpr int MAX_LEVEL = 30;
61
65 explicit Q3cPixelization(int level);
66
68 int getLevel() const { return _level; }
69
75
83
84 RangeSet universe() const override {
85 return RangeSet(0, static_cast<std::uint64_t>(6) << 2 * _level);
86 }
87
89
90 std::uint64_t index(UnitVector3d const & v) const override;
91
102 std::string toString(std::uint64_t i) const override;
103
104private:
105 int _level;
106
107 RangeSet _envelope(Region const & r, size_t maxRanges) const override;
108 RangeSet _interior(Region const & r, size_t maxRanges) const override;
109};
110
111}} // namespace lsst::sphgeom
112
113#endif // LSST_SPHGEOM_Q3CPIXELIZATION_H_
This file declares a class for representing convex polygons with great circle edges on the unit spher...
table::PointKey< int > pixel
This file defines an interface for pixelizations of the sphere.
ConvexPolygon is a closed convex polygon on the unit sphere.
A Pixelization (or partitioning) of the sphere is a mapping between points on the sphere and a set of...
Q3cPixelization provides Q3C indexing of points and regions.
std::uint64_t index(UnitVector3d const &v) const override
index computes the index of the pixel for v.
ConvexPolygon quad(std::uint64_t i) const
quad returns the quadrilateral corresponding to the Q3C pixel with index i.
RangeSet _interior(Region const &r, size_t maxRanges) const override
RangeSet universe() const override
universe returns the set of all pixel indexes for this pixelization.
int getLevel() const
getLevel returns the subdivision level of this pixelization.
std::string toString(std::uint64_t i) const override
toString converts the given Q3C index to a human readable string.
Q3cPixelization(int level)
This constructor creates a Q3C pixelization of the sphere with the given subdivision level.
static constexpr int MAX_LEVEL
The maximum supported cube-face grid resolution is 2^30 by 2^30.
std::vector< std::uint64_t > neighborhood(std::uint64_t i) const
neighborhood returns the indexes of all pixels that share a vertex with pixel i (including i itself).
RangeSet _envelope(Region const &r, size_t maxRanges) const override
A RangeSet is a set of unsigned 64 bit integers.
Definition RangeSet.h:106
Region is a minimal interface for 2-dimensional regions on the unit sphere.
Definition Region.h:87
UnitVector3d is a unit vector in ℝ³ with components stored in double precision.