The Vish Visualization Shell 0.3
Vish
Public Member Functions | Friends | List of all members
Eagle::PhysicalSpace::bivector Class Reference

A three-dimensional Bi-Vector which is span by two vectors to define a plane. More...

#include <elementary/eagle/PhysicalSpace.hpp>

Inheritance diagram for Eagle::PhysicalSpace::bivector:

Public Member Functions

 bivector ()
 Default constructor, sets all elements to zero.
 
template<OperatorID_t CompType>
 bivector (const bivector &l, const bivector &r, const Operator< CompType > &C)
 Generic Computational Constructor for operations on two bi-vectors.
 
template<OperatorID_t CompType>
 bivector (const bivector &l, const double &scalar, const Operator< CompType > &C)
 Generic Computational Constructor for operations on bi-vector and scalar.
 
template<OperatorID_t CompType>
 bivector (const double &scalar, const bivector &l, const Operator< CompType > &C)
 Generic Computational Constructor for operations on scalar and bi-vector.
 
 bivector (const vector &a, const vector &b)
 Construct bivector from two vectors (numerically equivalent to the cross product)
 
 bivector (double x, double y, double z)
 Component-wise construction of a bivector.
 
bivector inv () const
 Compute the inverse bivector.
 
vector operator() (const vector &v) const
 Compute UvU, which is a 90 degree rotation of the vector v along the plane U.
 
vector operator* () const
 Star operator, yields the vector that is dual to this bi-vector.
 
bivector operator+ (const bivector &r) const
 Addition operator.
 
bivector operator- () const
 Unary minus.
 
bivector operator- (const bivector &r) const
 Subtraction operator.
 
bivector unit () const
 Yield a bivector of unit area.
 

Friends

double dot (const bivector &a, const bivector &b)
 Inner product of two bivectors (note: this actually involves an implicit metric!)
 
bivector operator* (const bivector &v, double r)
 Scale bivector.
 
bivector operator* (double r, const bivector &b)
 Scale bivector.
 
bivector operator/ (const bivector &b, double r)
 Divide bivector by scalar.
 

Detailed Description

A three-dimensional Bi-Vector which is span by two vectors to define a plane.

It is represented by three numbers, like a vector, but has different algebraic properties.

Bi-vectors are useful specify rotations. The sum of a bivector and a scalar yields a rotor, which can be applied to any object such as a vector (sweeping a direction) or another bivector (sweeping a plane).

A bi-vector is constructed from two vectors:

vector A, B;
A three-dimensional Bi-Vector which is span by two vectors to define a plane.
Definition elementary/eagle/PhysicalSpace.hpp:556
bivector()
Default constructor, sets all elements to zero.
Definition elementary/eagle/PhysicalSpace.hpp:612
3-dimensional vector.
Definition elementary/eagle/PhysicalSpace.hpp:170
Definition RefPtrPerformance.cpp:24

The wedge operator of two vectors also yields a bi-vector and is the same operation:

vector A, B;
bivector& AB = A^B;

Alternatively the bivector can be setup by explicit specification of its component, which corresponds to a normal vector. Given a bivector, the associated normal vector can be retrieved using the star operator:

vector normalA = *A;

Member Function Documentation

◆ operator()()

vector Eagle::PhysicalSpace::bivector::operator() ( const vector v) const
inline

Compute UvU, which is a 90 degree rotation of the vector v along the plane U.

Parameters
thisThe bivector U.
vector v_rotated = U(v);

References dot.