Sequoia
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Static Public Attributes | Protected Member Functions | Friends | List of all members
sequoia::maths::coordinates_base< ConvexSpace, Basis, Validator, DisplacementCoordinates > Class Template Reference
Inheritance diagram for sequoia::maths::coordinates_base< ConvexSpace, Basis, Validator, DisplacementCoordinates >:
sequoia::maths::coordinates< ConvexSpace, Basis, Origin, Validator > sequoia::maths::coordinates< ConvexSpace, Basis, Validator > sequoia::physics::physical_value< ValueSpace, Unit, Basis, Origin, Validator >

Public Types

using space_type = ConvexSpace
 
using basis_type = Basis
 
using validator_type = Validator
 
using set_type = ConvexSpace::set_type
 
using free_module_type = free_module_type_of_t< ConvexSpace >
 
using commutative_ring_type = commutative_ring_type_of_t< ConvexSpace >
 
using value_type = commutative_ring_type
 
using displacement_coordinates_type = DisplacementCoordinates
 
using basis_isomorphism_type = basis_isomorphism_type_of_t< Basis >
 

Public Member Functions

constexpr coordinates_base (std::span< const value_type, D > vals) noexcept(has_identity_validator)
 
constexpr coordinates_base (std::span< const value_type, D > vals, basis_isomorphism_type) noexcept(has_identity_validator)
 
template<class... Ts>
requires admits_canonical_basis
&&D &&std::convertible_to< Ts, value_type > &&constexpr explicit (sizeof...(Ts)==1) coordinates_base(Ts... ts) noexcept(has_identity_validator)
 
template<class... Ts>
requires (D > 1) && (sizeof...(Ts) > 1) && is_units_terminated_pack_v<basis_type, value_type, Ts...>
constexpr coordinates_base (Ts... ts) noexcept(has_identity_validator)
 
constexpr coordinates_base (value_type val) noexcept(has_identity_validator) &&(D
 
constexpr const validator_type & validator () const noexcept
 
constexpr std::span< const value_type, D > values () const noexcept
 
constexpr std::span< value_type, D > values () noexcept
 
constexpr const value_type & value () const noexcept
 
constexpr value_type & value () noexcept
 
constexpr operator bool () const noexcept
 This is explicit since otherwise, given two vectors a,b, a/b is well-formed due to implicit boolean conversion.
 
constexpr value_type operator[] (std::size_t i) const
 
constexpr value_type & operator[] (std::size_t i)
 
constexpr auto begin () const noexcept
 
constexpr auto end () const noexcept
 
constexpr auto rbegin () const noexcept
 
constexpr auto rend () const noexcept
 
constexpr auto cbegin () const noexcept
 
constexpr auto cend () const noexcept
 
constexpr auto crbegin () const noexcept
 
constexpr auto crend () const noexcept
 
constexpr auto begin () noexcept
 
constexpr auto end () noexcept
 
constexpr auto rbegin () noexcept
 
constexpr auto rend () noexcept
 

Static Public Attributes

static constexpr bool has_distinguished_origin {has_distinguished_origin_v<ConvexSpace>}
 
static constexpr bool has_identity_validator {defines_identity_validator_v<Validator>}
 
static constexpr bool has_freely_mutable_components {has_identity_validator && has_distinguished_origin}
 
static constexpr bool admits_canonical_basis {admits_canonical_basis_v<free_module_type>}
 
static constexpr std::size_t dimension {free_module_type::dimension}
 
static constexpr std::size_t D {dimension}
 

Protected Member Functions

 coordinates_base (const coordinates_base &)=default
 
 coordinates_base (coordinates_base &&) noexcept=default
 
coordinates_baseoperator= (const coordinates_base &)=default
 
coordinates_baseoperator= (coordinates_base &&) noexcept=default
 
template<class Self , class Fn >
requires std::invocable<Fn, value_type&, value_type>
constexpr Self && apply_to_each_element (this Self &&self, std::span< const value_type, D > rhs, Fn f)
 
template<class Self , class Fn >
requires std::invocable<Fn, value_type&>
constexpr Self & for_each_element (this Self &self, Fn f)
 

Friends

constexpr coordinates_base &&!std ::same_as< Derived, displacement_coordinates_type > friend constexpr Derived::displacement_coordinates_type operator- (const Derived &lhs, const Derived &rhs) noexcept(has_identity_validator)
 
template<class Derived >
requires std::derived_from<Derived, coordinates_base>
constexpr Derived operator+ (Derived c, const displacement_coordinates_type &v) noexcept(has_identity_validator)
 
template<class Derived >
requires std::derived_from<Derived, coordinates_base> && (!std::same_as<Derived, displacement_coordinates_type>)
constexpr Derived operator+ (const displacement_coordinates_type &v, Derived c) noexcept(has_identity_validator)
 
template<class Derived >
requires has_distinguished_origin
constexpr Derived operator+ (Derived c, const Derived &v) noexcept(has_identity_validator)
 
template<class Derived >
requires std::derived_from<Derived, coordinates_base>
constexpr Derived operator- (Derived c, const displacement_coordinates_type &v) noexcept(has_identity_validator)
 
template<class Derived >
requires has_distinguished_origin
constexpr Derived operator* (Derived v, value_type u) noexcept(has_identity_validator)
 
template<class Derived >
requires has_distinguished_origin
constexpr Derived operator* (value_type u, Derived v) noexcept(has_identity_validator)
 
template<class Derived >
requires has_distinguished_origin
constexpr Derived operator* (Derived c, std::span< const value_type, D > u) noexcept(has_identity_validator)
 
template<class Derived >
requires has_distinguished_origin
constexpr Derived operator* (std::span< const value_type, D > u, Derived c) noexcept(has_identity_validator)
 
template<class Derived >
requires has_distinguished_origin
constexpr Derived operator/ (Derived v, value_type u)
 
template<class Derived >
requires has_distinguished_origin
constexpr Derived operator/ (Derived c, std::span< const value_type, D > u) noexcept(has_identity_validator)
 
constexpr bool operator== (const coordinates_base &lhs, const coordinates_base &rhs) noexcept
 
constexpr auto operator<=> (const coordinates_base &lhs, const coordinates_base &rhs) noexcept
 

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