LSST Applications 26.0.0,g0265f82a02+6660c170cc,g07994bdeae+30b05a742e,g0a0026dc87+17526d298f,g0a60f58ba1+17526d298f,g0e4bf8285c+96dd2c2ea9,g0ecae5effc+c266a536c8,g1e7d6db67d+6f7cb1f4bb,g26482f50c6+6346c0633c,g2bbee38e9b+6660c170cc,g2cc88a2952+0a4e78cd49,g3273194fdb+f6908454ef,g337abbeb29+6660c170cc,g337c41fc51+9a8f8f0815,g37c6e7c3d5+7bbafe9d37,g44018dc512+6660c170cc,g4a941329ef+4f7594a38e,g4c90b7bd52+5145c320d2,g58be5f913a+bea990ba40,g635b316a6c+8d6b3a3e56,g67924a670a+bfead8c487,g6ae5381d9b+81bc2a20b4,g93c4d6e787+26b17396bd,g98cecbdb62+ed2cb6d659,g98ffbb4407+81bc2a20b4,g9ddcbc5298+7f7571301f,ga1e77700b3+99e9273977,gae46bcf261+6660c170cc,gb2715bf1a1+17526d298f,gc86a011abf+17526d298f,gcf0d15dbbd+96dd2c2ea9,gdaeeff99f8+0d8dbea60f,gdb4ec4c597+6660c170cc,ge23793e450+96dd2c2ea9,gf041782ebf+171108ac67
LSST Data Management Base Package
Loading...
Searching...
No Matches
Q3cPixelization.h
Go to the documentation of this file.
1/*
2 * LSST Data Management System
3 * Copyright 2016 AURA/LSST.
4 *
5 * This product includes software developed by the
6 * LSST Project (http://www.lsst.org/).
7 *
8 * This program is free software: you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation, either version 3 of the License, or
11 * (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the LSST License Statement and
19 * the GNU General Public License along with this program. If not,
20 * see <https://www.lsstcorp.org/LegalNotices/>.
21 */
22
23#ifndef LSST_SPHGEOM_Q3CPIXELIZATION_H_
24#define LSST_SPHGEOM_Q3CPIXELIZATION_H_
25
29
30#include <cstdint>
31#include <vector>
32
33#include "ConvexPolygon.h"
34#include "Pixelization.h"
35
36
37namespace lsst {
38namespace sphgeom {
39
51public:
53 static constexpr int MAX_LEVEL = 30;
54
58 explicit Q3cPixelization(int level);
59
61 int getLevel() const { return _level; }
62
67 ConvexPolygon quad(uint64_t i) const;
68
75 std::vector<uint64_t> neighborhood(uint64_t i) const;
76
77 RangeSet universe() const override {
78 return RangeSet(0, static_cast<uint64_t>(6) << 2 * _level);
79 }
80
81 std::unique_ptr<Region> pixel(uint64_t i) const override;
82
83 uint64_t index(UnitVector3d const & v) const override;
84
95 std::string toString(uint64_t i) const override;
96
97private:
98 int _level;
99
100 RangeSet _envelope(Region const & r, size_t maxRanges) const override;
101 RangeSet _interior(Region const & r, size_t maxRanges) const override;
102};
103
104}} // namespace lsst::sphgeom
105
106#endif // LSST_SPHGEOM_Q3CPIXELIZATION_H_
This file declares a class for representing convex polygons with great circle edges on the unit spher...
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::string toString(uint64_t i) const override
toString converts the given Q3C index to a human readable string.
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.
uint64_t index(UnitVector3d const &v) const override
index computes the index of the pixel for v.
std::vector< uint64_t > neighborhood(uint64_t i) const
neighborhood returns the indexes of all pixels that share a vertex with pixel i (including i itself).
static constexpr int MAX_LEVEL
The maximum supported cube-face grid resolution is 2^30 by 2^30.
ConvexPolygon quad(uint64_t i) const
quad returns the quadrilateral corresponding to the Q3C pixel with index i.
RangeSet _envelope(Region const &r, size_t maxRanges) const override
A RangeSet is a set of unsigned 64 bit integers.
Definition RangeSet.h:99
Region is a minimal interface for 2-dimensional regions on the unit sphere.
Definition Region.h:79
UnitVector3d is a unit vector in ℝ³ with components stored in double precision.