9#include "translate2.hpp"
10#include "translate3.hpp"
15#include "perspective.hpp"
23#include "rectangle.hpp"
28#include "../macros.hpp"
32namespace hi {
inline namespace v1 {
77[[
nodiscard]]
constexpr matrix2 operator*(translate2
const& lhs, matrix2
const& rhs)
noexcept
82[[
nodiscard]]
constexpr matrix3 operator*(translate3
const& lhs, matrix3
const& rhs)
noexcept
87[[
nodiscard]]
constexpr translate2 operator*(translate2
const& lhs, translate2
const& rhs)
noexcept
92[[
nodiscard]]
constexpr translate3 operator*(translate3
const& lhs, translate3
const& rhs)
noexcept
97[[
nodiscard]]
constexpr matrix2 operator*(translate2
const& lhs, scale2
const& rhs)
noexcept
99 hi_axiom(lhs.holds_invariant() && rhs.holds_invariant());
103[[
nodiscard]]
constexpr matrix3 operator*(translate3
const& lhs, scale3
const& rhs)
noexcept
108[[
nodiscard]]
constexpr matrix2 operator*(translate2
const& lhs, rotate2
const& rhs)
noexcept
110 return lhs * matrix2(rhs);
113[[
nodiscard]]
constexpr matrix3 operator*(translate3
const& lhs, rotate3
const& rhs)
noexcept
115 return lhs * matrix3(rhs);
118[[
nodiscard]]
constexpr matrix2 operator*(scale2
const& lhs, translate2
const& rhs)
noexcept
120 hi_axiom(lhs.holds_invariant() && rhs.holds_invariant());
124[[
nodiscard]]
constexpr matrix3 operator*(scale3
const& lhs, translate3
const& rhs)
noexcept
126 hi_axiom(lhs.holds_invariant() && rhs.holds_invariant());
130[[
nodiscard]]
constexpr scale2 operator*(scale2
const& lhs, scale2
const& rhs)
noexcept
135[[
nodiscard]]
constexpr scale3 operator*(scale3
const& lhs, scale3
const& rhs)
noexcept
170[[
nodiscard]]
constexpr float operator*(translate2
const&,
float const& rhs)
noexcept
175[[
nodiscard]]
constexpr float operator*(translate3
const&,
float const& rhs)
noexcept
180[[
nodiscard]]
constexpr float operator*(scale2
const& lhs,
float const& rhs)
noexcept
182 return lhs.x() * rhs;
185[[
nodiscard]]
constexpr float operator*(scale3
const& lhs,
float const& rhs)
noexcept
187 return lhs.x() * rhs;
190[[
nodiscard]]
constexpr float operator*(rotate2
const&,
float const& rhs)
noexcept
195[[
nodiscard]]
constexpr float operator*(rotate3
const&,
float const& rhs)
noexcept
212[[
nodiscard]]
constexpr vector2 operator*(translate2
const&, vector2
const& rhs)
noexcept
217[[
nodiscard]]
constexpr vector2 operator*(translate3
const&, vector2
const& rhs)
noexcept
222[[
nodiscard]]
constexpr vector2 operator*(scale2
const& lhs, vector2
const& rhs)
noexcept
227[[
nodiscard]]
constexpr vector2 operator*(scale3
const& lhs, vector2
const& rhs)
noexcept
244[[
nodiscard]]
constexpr vector3 operator*(translate3
const&, vector3
const& rhs)
noexcept
249[[
nodiscard]]
constexpr vector3 operator*(scale3
const& lhs, vector3
const& rhs)
noexcept
264[[
nodiscard]]
constexpr point2 operator*(translate2
const& lhs, point2
const& rhs)
noexcept
269[[
nodiscard]]
constexpr point2 operator*(scale2
const& lhs, point2
const& rhs)
noexcept
274[[
nodiscard]]
constexpr point2 operator*(scale3
const& lhs, point2
const& rhs)
noexcept
291[[
nodiscard]]
constexpr point3 operator*(translate3
const& lhs, point3
const& rhs)
noexcept
296[[
nodiscard]]
constexpr point3 operator*(scale3
const& lhs, point3
const& rhs)
noexcept
301[[
nodiscard]]
constexpr extent2 operator*(transformer2
auto const& lhs, extent2
const& rhs)
noexcept
303 return extent2{lhs *vector2{rhs}};
306[[
nodiscard]]
constexpr extent3 operator*(transformer3
auto const& lhs, std::convertible_to<extent3>
auto const& rhs)
noexcept
308 return extent3{lhs *vector3{rhs}};
311[[
nodiscard]]
constexpr aarectangle operator*(translate2
const& lhs, aarectangle
const& rhs)
noexcept
313 return aarectangle{lhs *
get<0>(rhs), lhs *
get<3>(rhs)};
382 return rectangle{lhs * rhs.origin, lhs * rhs.right, lhs * rhs.up};
390[[
nodiscard]]
constexpr quad operator*(transformer
auto const& lhs, quad
const& rhs)
noexcept
392 return quad{lhs * rhs.p0, lhs * rhs.p1, lhs * rhs.p2, lhs * rhs.p3};
402 return circle{lhs * midpoint(rhs), lhs * rhs.radius()};
412 return line_segment{lhs * rhs.origin(), lhs * rhs.direction()};
431template<
typename Lhs, transformer Rhs>
433 requires requires(
Lhs& a,
Rhs const& b) { a = b * a; }
435 return lhs = rhs * lhs;
438[[
nodiscard]]
constexpr aarectangle fit(aarectangle
const& bounds, aarectangle
const&
rectangle)
noexcept
461 hilet
top_extra = (lhs.top() * rhs.x() - lhs.top()) * 0.5f;
462 hilet
bottom_extra = (lhs.bottom() * rhs.x() - lhs.bottom()) * 0.5f;
463 hilet
left_extra = (lhs.left() * rhs.y() - lhs.left()) * 0.5f;
464 hilet
right_extra = (lhs.right() * rhs.y() - lhs.right()) * 0.5f;
Defined the corner_radii type.
Defined the geo::extent, extent2 and extent3 types.
Defined the geo::extent, extent2 and extent3 types.
@ rectangle
The gui_event has rectangle data.
DOXYGEN BUG.
Definition algorithm.hpp:16
geometry/margins.hpp
Definition lookahead_iterator.hpp:5
constexpr aarectangle fast_mul(matrix2 const &lhs, aarectangle const &rhs) noexcept
Transform an axis-aligned rectangle without rotation by the matrix.
Definition transform.hpp:369
constexpr rectangle full_mul(matrix2 const &lhs, aarectangle const &rhs) noexcept
Transform an axis-aligned rectangle without rotation by the matrix.
Definition transform.hpp:357
constexpr Out narrow_cast(In const &rhs) noexcept
Cast numeric values without loss of precision.
Definition cast.hpp:377
constexpr Lhs & operator*=(Lhs &lhs, Rhs const &rhs) noexcept
Inplace geometric translation.
Definition transform.hpp:432
constexpr quad scale_from_center(quad const &lhs, scale2 const &rhs) noexcept
scale the quad.
Definition transform.hpp:459
Class which represents an axis-aligned rectangle.
Definition aarectangle.hpp:29
A type defining a 2D circle.
Definition circle.hpp:19
The 4 radii of the corners of a quad or rectangle.
Definition corner_radii.hpp:19
Line segment.
Definition line_segment.hpp:21
A 2D or 3D homogenius matrix for transforming homogenious vectors and points.
Definition matrix2.hpp:27
A 2D or 3D homogenius matrix for transforming homogenious vectors and points.
Definition matrix3.hpp:30
Perspective transform.
Definition perspective.hpp:18
A rectangle / parallelogram in 3D space.
Definition rectangle.hpp:21
Definition rotate2.hpp:10
Definition rotate3.hpp:12
Definition transform.hpp:35
Definition transform.hpp:37
Definition translate2.hpp:14
Definition translate3.hpp:18
A high-level geometric vector Part of the high-level vector, point, mat and color types.
Definition vector2.hpp:19
A high-level geometric vector Part of the high-level vector, point, mat and color types.
Definition vector3.hpp:20
Definition transform.hpp:57
Definition transform.hpp:59
Definition transform.hpp:61