11 #ifndef Versor_vsr_fiber_h
12 #define Versor_vsr_fiber_h
15 #include "util/vsr_coord.h"
19 namespace vsr{
namespace cga {
43 HopfFiber(
bool hand=
true) : bHanded(hand), mPhase(0) {
48 Cir& cir() {
return mCir; }
49 const Cir cir()
const {
return mCir; }
51 Vec& vec() {
return mVec;}
52 Vec vec()
const {
return mVec; }
54 double& phase() {
return mPhase;}
55 double phase()
const {
return mPhase; }
58 Dll dll(){
return (
Inf(1) <= mCir).runit(); }
60 auto mtt(
double theta,
double phi) -> decltype(
Mot() *
Trv() ) {
61 double ptheta = PIOVERTWO * theta;
72 Trv trv(
double theta,
double phi){
74 double ptheta = PIOVERTWO * theta;
76 Vec v = Vec::x.
rot( Biv::xz * ptheta );
81 Mot mot(
double theta,
double phi){
83 double ptheta = PIOVERTWO * theta;
85 Vec v = Vec::x.
rot( Biv::xz * ptheta );
87 return Gen::ratio( lim.dual().runit(), dll(), phi );
94 double ptheta = PIOVERTWO * theta;
109 Lin lim = mCir.sp( bst );
115 return mCir.sp( mot *
Gen::bst(v ,c , pphi ) ) ;
122 return fiber(cs.theta/PI, cs.phi/PI);
126 Cir fiberA() {
return fiber (mVec); }
127 Cir fiberB() {
return fiber (-mVec); }
129 Lin lim(
double theta){
130 double ptheta = PIOVERTWO * theta;
131 Vec v = Vec::x.rot( Biv::xz * ptheta );
135 vector<Cir> poles(
double theta,
double phi){
137 cp.push_back(
fiber(theta, phi) );
138 double theta2 = theta < 0 ? theta + 1 : theta - 1;
140 cp.push_back(
fiber(theta2, phi2) );
144 Pnt phase(
double theta,
double phi,
double phs){
static Bst bst(const Pair &p)
vsr::cga::Boost from vsr::cga::Pair
Common Operations Specific to CGA3D.
NCir< 5 > Cir
Circle
Definition: vsr_cga3D_types.h:74
static Vec vec(const Circle &c, VSR_PRECISION theta=0)
Euclidean Vector of Circle at theta.
NVec< 5 > Vec
Vector
Definition: vsr_cga3D_types.h:62
Generic Geometric Number Types (templated on an algebra and a basis )
Definition: vsr_algebra.h:69
NLin< 5 > Lin
Line
Definition: vsr_cga3D_types.h:80
#define CXZ(f)
A vsr::cga::Circle in xz plane with radius f.
Definition: vsr_cga3D_op.h:624
static Point loc(const A &s)
Location (normalizd) of a Round Element (shorthand)
Definition: vsr_cga3D_round.h:146
Hopf Fibration
Definition: vsr_fiber.h:26
NInf< 5 > Inf
Infinity
Definition: vsr_cga3D_types.h:68
static VSR_PRECISION rad(const T &t)
Squared Size of a DualSphere (result could be negative)
Definition: vsr_cga3D_round.h:203
static Rot ratio(const Vec &v, const Vec &v2)
vsr::cga::Rotor that takes one vec to another
the versor library namespace
Definition: vsr_algebra.h:29
Multivector rot(const MultivectorB< B > &b) const
static Trv trv(const A &a)
vsr::cga::Transversor from any type
Definition: vsr_cga3D_op.h:142
Definition: vsr_coord.h:23
NPnt< 5 > Pnt
Point
Definition: vsr_cga3D_types.h:72
static Point point(VSR_PRECISION x, VSR_PRECISION y, VSR_PRECISION z)
Null Point from Coordinates.
Cir fiber(double theta, double phi)
Feed in Coordinates of a 2-Sphere, get 3-Sphere Fiber out.
Definition: vsr_fiber.h:92
NTrv< 5 > Trv
Transversor
Definition: vsr_cga3D_types.h:93
NMot< 5 > Mot
Motor
Definition: vsr_cga3D_types.h:92