HikoGUI
A low latency retained GUI
Loading...
Searching...
No Matches
Public Member Functions | Friends
tt::geo::point< D > Class Template Reference

#include <ttauri/geometry/point.hpp>

Public Member Functions

constexpr point (point const &) noexcept=default
 
constexpr point (point &&) noexcept=default
 
constexpr pointoperator= (point const &) noexcept=default
 
constexpr pointoperator= (point &&) noexcept=default
 
template<int E>
requires (E < D)
constexpr point (point< E > const &other) noexcept
 Construct a point from a lower dimension point.
 
constexpr operator f32x4 () const noexcept
 Convert a point to its f32x4-nummeric_array.
 
constexpr point (f32x4 const &other) noexcept
 Construct a point from a f32x4-numeric_array.
 
constexpr point () noexcept
 Construct a point at the origin of the coordinate system.
 
constexpr point (float x, float y) noexcept
 Construct a 2D point from x and y elements.
 
constexpr point (float x, float y, float z=0.0) noexcept
 Construct a 3D point from x, y and z elements.
 
constexpr float & x () noexcept
 Access the x element from the point.
 
constexpr float & y () noexcept
 Access the y element from the point.
 
constexpr float & z () noexcept
 Access the z element from the point.
 
constexpr float const & x () const noexcept
 Access the x element from the point.
 
constexpr float const & y () const noexcept
 Access the y element from the point.
 
constexpr float const & z () const noexcept
 Access the z element from the point.
 
constexpr bool is_valid () const noexcept
 Check if the point is valid.
 

Friends

template<int E>
constexpr friend point< std::max(D, E)> operator+ (point const &lhs, vector< E > const &rhs) noexcept
 Move a point along a vector.
 
template<int E>
constexpr friend point< std::max(D, E)> operator+ (vector< E > const &rhs, point const &lhs) noexcept
 Move a point along a vector.
 
template<int E>
constexpr friend point< std::max(D, E)> operator- (point const &lhs, vector< E > const &rhs) noexcept
 Move a point backward along the vector.
 
constexpr friend vector< D > operator- (point const &lhs, point const &rhs) noexcept
 Find the vector between two points.
 
constexpr friend bool operator== (point const &lhs, point const &rhs) noexcept
 Compare if two points are equal.
 
template<int E>
constexpr auto midpoint (point const &lhs, point< E > const &rhs) noexcept
 
template<int E>
constexpr auto reflect (point const &lhs, point< E > const &rhs) noexcept
 

Detailed Description

template<int D>
class tt::geo::point< D >

A high-level geometric point Part of the high-level vec, point, mat and color types.

A point, for both 2D or 3D is internally represented as a 4D homogeneous vector. Which can be efficiently implemented as a __m128 SSE register.

Constructor & Destructor Documentation

◆ point() [1/5]

template<int D>
template<int E>
requires (E < D)
constexpr tt::geo::point< D >::point ( point< E > const & other)
inlineconstexprnoexcept

Construct a point from a lower dimension point.

◆ point() [2/5]

template<int D>
constexpr tt::geo::point< D >::point ( f32x4 const & other)
inlineexplicitconstexprnoexcept

Construct a point from a f32x4-numeric_array.

◆ point() [3/5]

template<int D>
constexpr tt::geo::point< D >::point ( )
inlineconstexprnoexcept

Construct a point at the origin of the coordinate system.

◆ point() [4/5]

template<int D>
constexpr tt::geo::point< D >::point ( float x,
float y )
inlineconstexprnoexcept

Construct a 2D point from x and y elements.

Parameters
xThe x element.
yThe y element.

◆ point() [5/5]

template<int D>
constexpr tt::geo::point< D >::point ( float x,
float y,
float z = 0.0 )
inlineconstexprnoexcept

Construct a 3D point from x, y and z elements.

Parameters
xThe x element.
yThe y element.
zThe z element.

Member Function Documentation

◆ is_valid()

template<int D>
constexpr bool tt::geo::point< D >::is_valid ( ) const
inlineconstexprnoexcept

Check if the point is valid.

This function will check if w is not zero, and with a 2D point is z is zero.

◆ operator f32x4()

template<int D>
constexpr tt::geo::point< D >::operator f32x4 ( ) const
inlineexplicitconstexprnoexcept

Convert a point to its f32x4-nummeric_array.

◆ x() [1/2]

template<int D>
constexpr float const & tt::geo::point< D >::x ( ) const
inlineconstexprnoexcept

Access the x element from the point.

Returns
a reference to the x element.

◆ x() [2/2]

template<int D>
constexpr float & tt::geo::point< D >::x ( )
inlineconstexprnoexcept

Access the x element from the point.

Returns
a reference to the x element.

◆ y() [1/2]

template<int D>
constexpr float const & tt::geo::point< D >::y ( ) const
inlineconstexprnoexcept

Access the y element from the point.

Returns
a reference to the y element.

◆ y() [2/2]

template<int D>
constexpr float & tt::geo::point< D >::y ( )
inlineconstexprnoexcept

Access the y element from the point.

Returns
a reference to the y element.

◆ z() [1/2]

template<int D>
constexpr float const & tt::geo::point< D >::z ( ) const
inlineconstexprnoexcept

Access the z element from the point.

Returns
a reference to the z element.

◆ z() [2/2]

template<int D>
constexpr float & tt::geo::point< D >::z ( )
inlineconstexprnoexcept

Access the z element from the point.

Returns
a reference to the z element.

Friends And Related Symbol Documentation

◆ operator+ [1/2]

template<int D>
template<int E>
constexpr friend point< std::max(D, E)> operator+ ( point< D > const & lhs,
vector< E > const & rhs )
friend

Move a point along a vector.

Parameters
lhsThe point to move.
rhsThe vector to move along.
Returns
The moved point.

◆ operator+ [2/2]

template<int D>
template<int E>
constexpr friend point< std::max(D, E)> operator+ ( vector< E > const & rhs,
point< D > const & lhs )
friend

Move a point along a vector.

Parameters
lhsThe vector to move along.
rhsThe point to move.
Returns
The moved point.

◆ operator- [1/2]

template<int D>
constexpr friend vector< D > operator- ( point< D > const & lhs,
point< D > const & rhs )
friend

Find the vector between two points.

Parameters
lhsThe first point.
rhsThe second point.
Returns
The vector from the second to first point.

◆ operator- [2/2]

template<int D>
template<int E>
constexpr friend point< std::max(D, E)> operator- ( point< D > const & lhs,
vector< E > const & rhs )
friend

Move a point backward along the vector.

Parameters
lhsThe point to move.
rhsThe vector to move backward.
Returns
The moved point.

◆ operator==

template<int D>
constexpr friend bool operator== ( point< D > const & lhs,
point< D > const & rhs )
friend

Compare if two points are equal.

Parameters
lhsThe first point.
rhsThe second point.
Returns
True if both point are completely equal to each other.

The documentation for this class was generated from the following file: