LSST Applications  21.0.0+04719a4bac,21.0.0-1-ga51b5d4+f5e6047307,21.0.0-11-g2b59f77+a9c1acf22d,21.0.0-11-ga42c5b2+86977b0b17,21.0.0-12-gf4ce030+76814010d2,21.0.0-13-g1721dae+760e7a6536,21.0.0-13-g3a573fe+768d78a30a,21.0.0-15-g5a7caf0+f21cbc5713,21.0.0-16-g0fb55c1+b60e2d390c,21.0.0-19-g4cded4ca+71a93a33c0,21.0.0-2-g103fe59+bb20972958,21.0.0-2-g45278ab+04719a4bac,21.0.0-2-g5242d73+3ad5d60fb1,21.0.0-2-g7f82c8f+8babb168e8,21.0.0-2-g8f08a60+06509c8b61,21.0.0-2-g8faa9b5+616205b9df,21.0.0-2-ga326454+8babb168e8,21.0.0-2-gde069b7+5e4aea9c2f,21.0.0-2-gecfae73+1d3a86e577,21.0.0-2-gfc62afb+3ad5d60fb1,21.0.0-25-g1d57be3cd+e73869a214,21.0.0-3-g357aad2+ed88757d29,21.0.0-3-g4a4ce7f+3ad5d60fb1,21.0.0-3-g4be5c26+3ad5d60fb1,21.0.0-3-g65f322c+e0b24896a3,21.0.0-3-g7d9da8d+616205b9df,21.0.0-3-ge02ed75+a9c1acf22d,21.0.0-4-g591bb35+a9c1acf22d,21.0.0-4-g65b4814+b60e2d390c,21.0.0-4-gccdca77+0de219a2bc,21.0.0-4-ge8a399c+6c55c39e83,21.0.0-5-gd00fb1e+05fce91b99,21.0.0-6-gc675373+3ad5d60fb1,21.0.0-64-g1122c245+4fb2b8f86e,21.0.0-7-g04766d7+cd19d05db2,21.0.0-7-gdf92d54+04719a4bac,21.0.0-8-g5674e7b+d1bd76f71f,master-gac4afde19b+a9c1acf22d,w.2021.13
LSST Data Management Base Package
HtmPixelization.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_HTMPIXELIZATION_H_
24 #define LSST_SPHGEOM_HTMPIXELIZATION_H_
25 
29 
30 #include <cstdint>
31 #include <stdexcept>
32 
33 #include "ConvexPolygon.h"
34 #include "Pixelization.h"
35 
36 
37 namespace lsst {
38 namespace sphgeom {
39 
50 class HtmPixelization : public Pixelization {
51 public:
53  static constexpr int MAX_LEVEL = 24;
54 
58  static int level(uint64_t i);
59 
63  static ConvexPolygon triangle(uint64_t i);
64 
76  static std::string asString(uint64_t i);
77 
81  explicit HtmPixelization(int level);
82 
84  int getLevel() const { return _level; }
85 
86  RangeSet universe() const override {
87  return RangeSet(static_cast<uint64_t>(8) << 2 * _level,
88  static_cast<uint64_t>(16) << 2 * _level);
89  }
90 
91  std::unique_ptr<Region> pixel(uint64_t i) const override {
93  }
94 
95  uint64_t index(UnitVector3d const &) const override;
96 
97  std::string toString(uint64_t i) const override { return asString(i); }
98 
99 private:
100  int _level;
101 
102  RangeSet _envelope(Region const &, size_t) const override;
103  RangeSet _interior(Region const &, size_t) const override;
104 };
105 
106 }} // namespace lsst::sphgeom
107 
108 #endif // LSST_SPHGEOM_HTMPIXELIZATION_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.
Definition: ConvexPolygon.h:57
HtmPixelization provides HTM indexing of points and regions.
int getLevel() const
getLevel returns the subdivision level of this pixelization.
static constexpr int MAX_LEVEL
MAX_LEVEL is the maximum supported HTM subdivision level.
std::unique_ptr< Region > pixel(uint64_t i) const override
pixel returns the spherical region corresponding to the pixel with index i.
RangeSet universe() const override
universe returns the set of all pixel indexes for this pixelization.
uint64_t index(UnitVector3d const &) const override
index computes the index of the pixel for v.
std::string toString(uint64_t i) const override
toString converts the given pixel index to a human-readable string.
static std::string asString(uint64_t i)
asString converts the given HTM index to a human readable string.
static int level(uint64_t i)
level returns the subdivision level of the given HTM index.
static ConvexPolygon triangle(uint64_t i)
triangle returns the triangle corresponding to the given HTM index.
HtmPixelization(int level)
This constructor creates an HTM pixelization of the sphere with the given subdivision level.
A Pixelization (or partitioning) of the sphere is a mapping between points on the sphere and a set of...
Definition: Pixelization.h:77
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.
Definition: UnitVector3d.h:55
A base class for image defects.