The Vish Visualization Shell 0.3
Vish
Classes | Typedefs | Functions
Eagle::PhysicalSpace Namespace Reference

Geometric algebra of the physical 3D-space, by which we mean the Clifford algebara over Euclidean, three-dimensional space. More...

Classes

struct  AABB
 Simplistic class for Axis-Aligned Bounding Box. More...
 
struct  AABB_2D
 Axis-aligned bounding box in 2D dimensions out of 3D, allowing for projections other than XY. More...
 
struct  AnalyticFunction
 Abstract base class for analytical functions that are evaluated on a physical space. More...
 
class  bivector
 A three-dimensional Bi-Vector which is span by two vectors to define a plane. More...
 
struct  Frustum
 A frustum and operations on it, as described by either a set of corner points or six planes. More...
 
struct  HessianNormalPlane
 
class  MultiVector
 A full multivector in 3D consists of $2^3$ components. More...
 
class  OddMultiVector
 The combination of a vector and a trivector yields an odd multivector, which is dual to a rotor. More...
 
struct  Plane
 Normal form of a plane. More...
 
class  point
 A point in physical 3D space. More...
 
class  rotor
 A rotor is the sum of scalar with a bivector. More...
 
struct  Span
 
struct  Span< 1 >
 A one-dimensional span, also a known as a Ray. More...
 
struct  Span< 2 >
 A two-dimensional span, also a known as the parametric form of a plane. More...
 
struct  Span< 3 >
 
class  trivector
 A Tri-Vector, or oriented volume in 3D space. More...
 
class  vector
 3-dimensional vector. More...
 
struct  Viewport
 A helper class describing an axis-aligned rectangle. More...
 

Typedefs

typedef rotor EvenMultiVector
 A rotor is an even multivector.
 

Functions

double computeIntersectionDistance (const Plane &P, const Ray &R)
 Compute the intersection parameter $\lambda$ for a Ray hitting a Plane.
 
vector dot (const bivector &a, const vector &b)
 Inner (dot) product of a bivector and a vector.
 
vector dot (const trivector &a, const bivector &b)
 xyz ( xy + yz + zx ) = xyz xy + xyz yz + xyz zx = -xzy xy - xyz zy - yxz zx = zxy xy = -zyx xy - xyz zy - yxz zx z x y
 
vector dot (const vector &a, const bivector &b)
 Inner (dot) product of a vector and bivector.
 
double dot (const vector &a, const vector &b)
 Euclidan Inner (dot) product of two vectors.
 
Metric dyadic (const vector &a, const vector &b)
 Tensor product or dyadic product of two vectors.
 
Ray makeRay (const point &A, const point &B)
 Make a ray from two points, starting from the first one.
 
OddMultiVector operator* (const bivector &a, const vector &b)
 Geometric product of bivector and vector yields an odd multivector, the sum of a vector and trivector.
 
OddMultiVector operator* (const rotor &R, const vector &v)
 
point operator- (const point &P, const vector &v)
 
trivector operator^ (const bivector &a, const vector &b)
 Compute outer product of bivector and vector.
 
trivector operator^ (const vector &a, const bivector &b)
 Compute outer product of vector and bivector.
 
bivector operator^ (const vector &a, const vector &b)
 Wedge product of two vectors yields a bivector.
 

Detailed Description

Geometric algebra of the physical 3D-space, by which we mean the Clifford algebara over Euclidean, three-dimensional space.

It can reflect the properties of a flat, 3-dimensional manifold or the tangential space of a curved, 3-dimensional manifold.

Note
The classes in PhysicalSpace are currently implemented to operate on the double type. It were easy to change this to a generic template instead, in case the need arises. For now, this appears to be an overhead to always write <> in an instance, even though a typedef could fix that easily as well. If there is a real need to instantiate geometric algebra over other types than doubles, we can do it then.

Typedef Documentation

◆ EvenMultiVector

A rotor is an even multivector.

A rotor is an even MultiVector.

Function Documentation

◆ computeIntersectionDistance()

double Eagle::PhysicalSpace::computeIntersectionDistance ( const Plane P,
const Ray R 
)
inline

Compute the intersection parameter $\lambda$ for a Ray hitting a Plane.

The actual intersection point can be computed as R( $\lambda$) .

References dot().

◆ dot() [1/2]

vector Eagle::PhysicalSpace::dot ( const bivector a,
const vector b 
)
inline

Inner (dot) product of a bivector and a vector.

(A xy + B yz + C zx)|(ax+ by+ cz) = ( -Aa y + Ca z + Ab x - Bb z + Bc y - Cc x) = (Ab-Cc) x + (Bc - Aa) y + ( Ca - Bb) z

◆ dot() [2/2]

double Eagle::PhysicalSpace::dot ( const vector a,
const vector b 
)
inline

Euclidan Inner (dot) product of two vectors.

Compute the Euclidean dot product (inner product) of two vectors.

Referenced by computeIntersectionDistance(), Eagle::PhysicalSpace::rotor::operator()(), operator*(), and Eagle::PhysicalSpace::rotor::operator*().

◆ dyadic()

Metric Eagle::PhysicalSpace::dyadic ( const vector a,
const vector b 
)
inline

Tensor product or dyadic product of two vectors.

Creates a tensor of order two.

◆ operator*() [1/2]

OddMultiVector Eagle::PhysicalSpace::operator* ( const bivector a,
const vector b 
)
inline

Geometric product of bivector and vector yields an odd multivector, the sum of a vector and trivector.

An odd multivector is dual to a rotor, an even multivector.

References dot().

◆ operator*() [2/2]

OddMultiVector Eagle::PhysicalSpace::operator* ( const rotor R,
const vector v 
)
inline

Use its vec() member function to retrieve the vectorial part.

◆ operator-()

point Eagle::PhysicalSpace::operator- ( const point P,
const vector v 
)
inline
Todo:
Use computational constructor for '-'