ProjGeom 1.0.11
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Friends | List of all members
fun::pg_object< _K, Self, DualType > Struct Template Reference

Generic projective geometry object (value-type templated) More...

#include <pg_object.hpp>

Public Types

using Dual = DualType
 
using value_type = _K
 

Public Member Functions

constexpr pg_object (std::array< _K, 3 > coord)
 
constexpr pg_object (const _K &x, const _K &y, const _K &z)
 
constexpr auto aux () const -> DualType
 
constexpr auto dot (const DualType &other) const -> _K
 
constexpr auto incident (const DualType &other) const -> bool
 

Static Public Member Functions

static constexpr auto parametrize (const _K &lambda_val, const Self &pt_p, const _K &mu_val, const Self &pt_q) -> Self
 

Public Attributes

std::array< _K, 3 > coord
 

Friends

constexpr auto operator== (const Self &lhs, const Self &rhs) -> bool
 
constexpr auto operator!= (const Self &lhs, const Self &rhs) -> bool
 
constexpr auto operator* (const Self &lhs, const Self &rhs) -> DualType
 

Detailed Description

template<Ring _K, typename Self, typename DualType>
struct fun::pg_object< _K, Self, DualType >

Generic projective geometry object (value-type templated)

Base for pg_point and pg_line. Provides meet/join via operator*, dot product, incidence check, and parametrization.

Template Parameters
_KRing value type (coordinate type)
SelfThe derived type (CRTP)
DualTypeThe dual object type (pg_line for points, pg_point for lines)

Member Typedef Documentation

◆ Dual

template<Ring _K, typename Self , typename DualType >
using fun::pg_object< _K, Self, DualType >::Dual = DualType

◆ value_type

template<Ring _K, typename Self , typename DualType >
using fun::pg_object< _K, Self, DualType >::value_type = _K

Constructor & Destructor Documentation

◆ pg_object() [1/2]

template<Ring _K, typename Self , typename DualType >
constexpr fun::pg_object< _K, Self, DualType >::pg_object ( std::array< _K, 3 >  coord)
inlineexplicitconstexpr

◆ pg_object() [2/2]

template<Ring _K, typename Self , typename DualType >
constexpr fun::pg_object< _K, Self, DualType >::pg_object ( const _K &  x,
const _K &  y,
const _K &  z 
)
inlineconstexpr

Member Function Documentation

◆ aux()

template<Ring _K, typename Self , typename DualType >
constexpr auto fun::pg_object< _K, Self, DualType >::aux ( ) const -> DualType
inlineconstexpr

◆ dot()

template<Ring _K, typename Self , typename DualType >
constexpr auto fun::pg_object< _K, Self, DualType >::dot ( const DualType &  other) const -> _K
inlineconstexpr

◆ incident()

template<Ring _K, typename Self , typename DualType >
constexpr auto fun::pg_object< _K, Self, DualType >::incident ( const DualType &  other) const -> bool
inlineconstexpr

◆ parametrize()

template<Ring _K, typename Self , typename DualType >
static constexpr auto fun::pg_object< _K, Self, DualType >::parametrize ( const _K &  lambda_val,
const Self &  pt_p,
const _K &  mu_val,
const Self &  pt_q 
) -> Self
inlinestaticconstexpr

Friends And Related Symbol Documentation

◆ operator!=

template<Ring _K, typename Self , typename DualType >
constexpr auto operator!= ( const Self &  lhs,
const Self &  rhs 
) -> bool
friend

◆ operator*

template<Ring _K, typename Self , typename DualType >
constexpr auto operator* ( const Self &  lhs,
const Self &  rhs 
) -> DualType
friend

◆ operator==

template<Ring _K, typename Self , typename DualType >
constexpr auto operator== ( const Self &  lhs,
const Self &  rhs 
) -> bool
friend

Member Data Documentation

◆ coord

template<Ring _K, typename Self , typename DualType >
std::array<_K, 3> fun::pg_object< _K, Self, DualType >::coord

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