Index

C++ Code Documentation

template <class A> math::Moebius

File: BASE/math/Moebius.H

Moebius (fractional linear) transforms (a x + b)(c x + d)^(-1) Modified from code by J. Lawrence.

public:
  • typedef typename A::Real Real;
  • Moebius();
  • Moebius( Moebius const &f );
  • Moebius &operator=( Moebius const &f );
  • const A &a() const;
    coefficeients (a x + b)(c x + d)^(-1)
  • const A &b() const;
  • const A &c() const;
  • const A &d() const;
  • void identity();
    *this := 1
  • void mul( Moebius const &a );
    *this := (*this) * a
  • void mul( Moebius const &a, Moebius const &b );
    *this := a * b
  • void mulleft( Moebius const &a );
    *this := a * (*this)
  • void invert( Moebius const &a );
    *this := a^(-1)
  • void invert();
    *this := (*this)^(-1)
  • void rotation( Real a, Real b, Real x, Real y, Real z );
    Sets *this to a rotation FLT This FLT is the element of SO(4) which rotates the (1,v) plane by the angle a and rotates the (1,v)-perp plane by the angle b The orientation of the FLT is positive with 1 rotating toward v NOTE: v = quat(0,x,y,z) must have length one
  • void rotation( Real a, Real b, A const &s, A const &t );
    Sets *this to a rotation FLT This FLT is the element of SO(4) which rotates the (s,t) plane by angle a and rotates the (s,t)-perp plane by angleb Tthe orientation of the FLT is positive with s rotating toward v NOTE: s, t must be orthonormal
  • void translation( Real r, Real x, Real y, Real z );
    sets *this to a translation FLT {{1, q},{0, 1}}, where q = quat(r,x,y,z)
  • void inversion( Real r, Real x, Real y, Real z );
    sets *this to an inversion FLT {{1, 0},{q, 1}}, where q = quat(r,x,y,z)
  • void scale( Real s );
    sets *this to an scale FLT (a,b,c,d) = (s,0,0,1)
  • void apply( A &x );
    apply *this to x
  • friend std::ostream &operator<< NULL_TMPL_ARGS ( std::ostream &, Moebius<A> const &);
  • A _a, _b, _c, _d;
protected:
private:


template <class A> math::Moebius GANG