versor  3.0
C++11 library for Geometric algebra
Static Public Member Functions | List of all members
vsr::nga::Round Struct Reference

Operations on Round types (Points, Point Pairs, Circles, Spheres, N-Spheres) More...

#include <vsr_generic_op.h>

Static Public Member Functions

template<class A , class B >
static constexpr GAPnt< A > null (const Multivector< A, B > &v)
 Null Point from Arbitrary Multivector.
 
template<class... T>
static constexpr NPnt< sizeof...(T)+2 > null (T...v)
 Or Null Point from Coordinates (x,y,z,...)
 
template<class... T>
static constexpr NPnt< sizeof...(T)+2 > point (T...v)
 Null Point from Coordinates.
 
template<class... T>
static auto dls (VSR_PRECISION r, T...v) -> NPnt< sizeof...(T)+2 >
 Dual Sphere from Radius FIRST and Coordinate Center. More...
 
template<class... T>
static auto dualSphere (VSR_PRECISION r, T...v) -> auto
 
template<class A , class B >
static auto dls (const Multivector< A, B > &v, VSR_PRECISION r=1.0) -> GAPnt< A >
 Dual Sphere from Element FIRST and Radius. More...
 
template<class T >
static auto dualSphere (const T &t, VSR_PRECISION r=1.0) -> auto
 
template<class S >
static auto sphere (const S &v, VSR_PRECISION r=1.0) -> auto
 Dual Sphere from Element FIRST and Radius. More...
 
template<class A >
static GADls< A > dls_pnt (const GAPnt< A > &p, VSR_PRECISION r=1.0)
 Dual Sphere from Point and Radius (faster) More...
 
template<class A , class B >
static constexpr GAPnt< A > center (const Multivector< A, B > &s)
 Simple Center of A Round Element (not normalized – use loc or location method)
 
template<class A , class B >
static constexpr GAPnt< A > cen (const Multivector< A, B > &s)
 Simple Center of A Round Element (shorthand) More...
 
template<class A >
static constexpr A::space::point location (const A &s)
 Location of A Round Element (normalized) (Shorthand)
 
template<class A >
static constexpr A::space::point loc (const A &s)
 
template<class A >
static VSR_PRECISION size (const A &r, bool dual)
 Squared Size of a General Round Element (could be negative) More...
 
template<class T >
static constexpr VSR_PRECISION radius (const T &s)
 Radius of Round.
 
template<class T >
static constexpr VSR_PRECISION rad (const T &t)
 
template<class A >
static VSR_PRECISION curvature (const A &s)
 Curvature of Round. More...
 
template<class T >
static constexpr VSR_PRECISION cur (const T &t)
 Curvature of Round. More...
 
template<class A >
static constexpr VSR_PRECISION dsize (const GAPnt< A > &dls)
 Squared Size of Normalized Dual Sphere (faster than general case) More...
 
template<class A >
static constexpr VSR_PRECISION squaredDistance (const GAPnt< A > &a, const GAPnt< A > b)
 Squared distance between two points.
 
template<class A >
static constexpr VSR_PRECISION sqd (const A &a, const A &b)
 
template<class A >
static constexpr VSR_PRECISION distance (const GAPnt< A > &a, const GAPnt< A > b)
 Distance between points a and b.
 
template<class A >
static constexpr VSR_PRECISION dist (const A &a, const A &b)
 
template<class A >
static std::vector< GAPnt< A > > split (const GAPar< A > &pp)
 Split Points from Point Pair. More...
 
template<class A >
static std::vector< GAPnt< A > > splitLocation (const GAPar< A > &pp)
 Split Points from Point Pair and normalize. More...
 
template<class A >
static GAPnt< A > split (const GAPar< A > &pp, bool bFirst)
 Split a point pair. More...
 
template<class A >
static std::vector< GAPnt< A > > split (const GACir< A > &nc)
 Split A Circle into its dual point pair poles.
 
template<class A >
static constexpr auto direction (const A &s) -> auto
 Direction of Direct Round Element. More...
 
template<class A >
static constexpr auto dir (const A &s) -> auto
 Direction of Round Element (shorthand) More...
 
template<class A >
static constexpr auto carrier (const A &s) -> auto
 Carrier Flat of Direct Round Element. More...
 
template<class A >
static constexpr auto car (const A &s) -> auto
 Carrier Flat of Direct? Round Element (Shorthand)
 
template<class A >
static constexpr A::space::dual_sphere surround (const A &s)
 Dual Surround of a Direct or Dual Round Element.
 
template<class A >
static constexpr auto sur (const A &s) -> auto
 Dual Surround of a Direct or Dual Round Element (Shorthand)
 
template<class A , class S >
static constexpr auto produce (const A &dls, const S &flat) -> auto
 Direct Round From Dual Sphere and Euclidean Bivector Note: round will be imaginary if dual sphere is real . More...
 
template<class A >
static constexpr auto real (const A &s) -> auto
 Creates a real / imaginary round from an imaginary / real round.
 
template<class A >
static constexpr auto imag (const A &s) -> auto
 Creates an imaginary round from an real round.
 
template<class A >
static constexpr GADls< A > at (const GADls< A > &c, const GADls< A > &p)
 Dual Round from Center and Point on Surface. More...
 
template<class A >
static constexpr GAPnt< A > pnt (const GADls< A > &dls, const GAVec< A > &flat)
 Direct Round From coordinates and Euclidean Bivector Note: round will be imaginary if dual sphere is real . More...
 
template<class A >
static GAVec< A > vec (const GACir< A > &c, VSR_PRECISION theta=0)
 Direct Point From Dual Sphere and Euclidean Carrier Flat. More...
 
template<class A >
static GAPar< A > par_cir (const GACir< A > &c, VSR_PRECISION t)
 Point Pair on Direct Circle at angle t.
 
template<class A >
static GAPnt< A > pnt_cir (const GACir< A > &c, VSR_PRECISION t)
 Point on Circle at angle t.
 

Detailed Description

Operations on Round types (Points, Point Pairs, Circles, Spheres, N-Spheres)

Member Function Documentation

template<class A >
static constexpr GADls<A> vsr::nga::Round::at ( const GADls< A > &  c,
const GADls< A > &  p 
)
inlinestatic

Dual Round from Center and Point on Surface.

Parameters
Center
pointon surface
template<class A >
static constexpr auto vsr::nga::Round::carrier ( const A &  s) -> auto
static

Carrier Flat of Direct Round Element.

Parameters
DirectRound
template<class A , class B >
static constexpr GAPnt<A> vsr::nga::Round::cen ( const Multivector< A, B > &  s)
inlinestatic

Simple Center of A Round Element (shorthand)

See also
cga::Round::cen
template<class T >
static constexpr VSR_PRECISION vsr::nga::Round::cur ( const T &  t)
inlinestatic

Curvature of Round.

Parameters
ta Round Element
template<class A >
static VSR_PRECISION vsr::nga::Round::curvature ( const A &  s)
inlinestatic

Curvature of Round.

Parameters
sa Round Element
template<class A >
static constexpr auto vsr::nga::Round::dir ( const A &  s) -> auto
static

Direction of Round Element (shorthand)

Parameters
DirectRound
template<class A >
static constexpr auto vsr::nga::Round::direction ( const A &  s) -> auto
static

Direction of Direct Round Element.

Parameters
DirectRound
template<class... T>
static auto vsr::nga::Round::dls ( VSR_PRECISION  r,
T...  v 
) -> NPnt< sizeof...(T) + 2 >
inlinestatic

Dual Sphere from Radius FIRST and Coordinate Center.

Parameters
Radius(enter a negative radius for an imaginary sphere)
anynumber of coordinates

Note that radius is the first argument in order to enable construction of a sphere in any dimension (depending upon how many coordinates are fed into this function)

template<class A , class B >
static auto vsr::nga::Round::dls ( const Multivector< A, B > &  v,
VSR_PRECISION  r = 1.0 
) -> GAPnt<A>
inlinestatic

Dual Sphere from Element FIRST and Radius.

Parameters
Anyinput Multivector v (function will take first 3 weights)
Radius(enter a negative radius for an imaginary sphere)
template<class A >
static GADls<A> vsr::nga::Round::dls_pnt ( const GAPnt< A > &  p,
VSR_PRECISION  r = 1.0 
)
inlinestatic

Dual Sphere from Point and Radius (faster)

Parameters
Point
Radius(enter a negative radius for an imaginary sphere)
template<class A >
static constexpr VSR_PRECISION vsr::nga::Round::dsize ( const GAPnt< A > &  dls)
inlinestatic

Squared Size of Normalized Dual Sphere (faster than general case)

Parameters
NormalizedDual Sphere
template<class A >
static constexpr GAPnt<A> vsr::nga::Round::pnt ( const GADls< A > &  dls,
const GAVec< A > &  flat 
)
inlinestatic

Direct Round From coordinates and Euclidean Bivector Note: round will be imaginary if dual sphere is real .

. .

Direct Point From Dual Sphere and Euclidean Carrier Flat

template<class A , class S >
static constexpr auto vsr::nga::Round::produce ( const A &  dls,
const S &  flat 
) -> auto
static

Direct Round From Dual Sphere and Euclidean Bivector Note: round will be imaginary if dual sphere is real .

. .

template<class A >
static VSR_PRECISION vsr::nga::Round::size ( const A &  r,
bool  dual 
)
inlinestatic

Squared Size of a General Round Element (could be negative)

Parameters
rinput normalized round (dual sphere, point pair, circle, or direct sphere)
dualduality flag
template<class S >
static auto vsr::nga::Round::sphere ( const S &  v,
VSR_PRECISION  r = 1.0 
) -> auto
static

Dual Sphere from Element FIRST and Radius.

Parameters
Anyinput Multivector v (function will take first 3 weights)
Radius(enter a negative radius for an imaginary sphere)
template<class A >
static std::vector< GAPnt<A> > vsr::nga::Round::split ( const GAPar< A > &  pp)
inlinestatic

Split Points from Point Pair.

Parameters
PointPairinput returns a vector<Pnt>
template<class A >
static GAPnt<A> vsr::nga::Round::split ( const GAPar< A > &  pp,
bool  bFirst 
)
inlinestatic

Split a point pair.

Parameters
PointPair
boolwhich one
template<class A >
static std::vector< GAPnt<A> > vsr::nga::Round::splitLocation ( const GAPar< A > &  pp)
inlinestatic

Split Points from Point Pair and normalize.

Parameters
PointPairinput returns a vector<Pnt>
template<class A >
static GAVec<A> vsr::nga::Round::vec ( const GACir< A > &  c,
VSR_PRECISION  theta = 0 
)
inlinestatic

Direct Point From Dual Sphere and Euclidean Carrier Flat.

Euclidean Vector of Circle at theta


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