Pangolin
Header-only C++20 plane computational geometry library
Loading...
Searching...
No Matches
rectangle.hpp File Reference

Public declaration of pgl::Rectangle. More...

#include "shape/ray.hpp"
#include <array>
#include <cassert>
#include <concepts>
#include <cstddef>
#include <iterator>
#include <ostream>
#include <ranges>
#include <stdexcept>
#include <type_traits>
#include <optional>
#include <vector>
#include <utility>
#include <variant>

Go to the source code of this file.

Classes

struct  pgl::Rectangle< PointType_, TLabel >
 Axis-aligned rectangle stored by minimum and maximum corners. More...
class  pgl::Rectangle< PointType_, TLabel >::CornerIterator
 Forward iterator over the four corners in counterclockwise order. More...
class  pgl::Rectangle< PointType_, TLabel >::BoundaryIterator< Oriented >
 Forward iterator over the four rectangle boundary edges. More...

Namespaces

namespace  pgl

Functions

 pgl::Rectangle () -> Rectangle< Point<>, NoLabel >
template<class PointType>
 pgl::Rectangle (PointType, PointType) -> Rectangle< PointType, NoLabel >
template<class Number>
 pgl::Rectangle (Number, Number, Number, Number) -> Rectangle< Point< Number >, NoLabel >
template<std::ranges::input_range Range>
requires detail::is_point_v<std::ranges::range_value_t<Range>>
 pgl::Rectangle (Range &&) -> Rectangle< std::remove_cvref_t< std::ranges::range_value_t< Range > >, NoLabel >
template<class PointType, class LabelType, class TranslationNumber, class TranslationLabel>
constexpr auto pgl::operator- (const Rectangle< PointType, LabelType > &rectangle, const Point< TranslationNumber, TranslationLabel > &translation)
 Translates a rectangle by the opposite of a point.
template<class PointType, class LabelType, class Scalar>
requires (!detail::is_point_v<Scalar> && !TransformationConcept<Scalar>)
constexpr auto pgl::operator* (const Rectangle< PointType, LabelType > &rectangle, const Scalar &scalar)
 Scales a rectangle by a scalar.
template<class Scalar, class PointType, class LabelType>
requires (!detail::is_point_v<Scalar> && !TransformationConcept<Scalar>)
constexpr auto pgl::operator* (const Scalar &scalar, const Rectangle< PointType, LabelType > &rectangle)
 Scales a rectangle by a scalar written on the left.
template<class PointType, class LabelType, class Scalar>
requires (!detail::is_point_v<Scalar> && !TransformationConcept<Scalar>)
constexpr auto pgl::operator/ (const Rectangle< PointType, LabelType > &rectangle, const Scalar &scalar)
 Divides both rectangle corners by a scalar.
template<class PointType, class LabelType>
std::ostream & pgl::operator<< (std::ostream &stream, const Rectangle< PointType, LabelType > &rectangle)
 Streams a rectangle as [min,max], or as [] when it is empty.

Detailed Description

Public declaration of pgl::Rectangle.

Rectangles are axis-aligned finite 2D boxes used both as shapes and as exact bounding boxes for other finite geometry.