HG-MD  1
Public Member Functions | Public Attributes | Friends
Vec3D Class Reference

Implementation of a 3D vector (by Vitaliy). More...

#include <Vector.h>

List of all members.

Public Member Functions

 Vec3D (void)
 Vec3D (const Mdouble x, const Mdouble y, const Mdouble z)
void set_zero ()
Vec3D operator+ (const Vec3D &A) const
Vec3D operator- (const Vec3D &A) const
Vec3D operator+ (const Mdouble A) const
Vec3D operator- (const Mdouble A) const
Vec3D operator* (const Mdouble A) const
Vec3D operator/ (const Mdouble A) const
Vec3Doperator+= (const Vec3D &A)
Vec3Doperator-= (const Vec3D &A)
Vec3Doperator*= (const Mdouble a)
Vec3Doperator/= (const Mdouble a)
void normalize ()
void SetLength (Mdouble length)
Mdouble GetLength2 () const
Mdouble GetLength () const

Public Attributes

Mdouble X
Mdouble Y
Mdouble Z

Friends

Mdouble Dot (const Vec3D &A, const Vec3D &B)
Vec3D max (const Vec3D &A, const Vec3D &B)
Vec3D min (const Vec3D &A, const Vec3D &B)
Vec3D square (const Vec3D &A)
Vec3D sqrt (const Vec3D &A)
Vec3D Cross (const Vec3D &A, const Vec3D &B)
Mdouble GetDistance (const Vec3D &A, const Vec3D &B)
Mdouble GetDistance2 (const Vec3D &A, const Vec3D &B)
Mdouble GetLength2 (const Vec3D &A)
Mdouble GetLength (const Vec3D &A)
Vec3D GetUnitVector (const Vec3D &A)
std::ostream & operator<< (std::ostream &os, const Vec3D &A)
std::istream & operator>> (std::istream &is, Vec3D &A)
Vec3D operator+ (const Mdouble &a, const Vec3D &A)
Vec3D operator- (const Mdouble &a, const Vec3D &A)
Vec3D operator- (const Vec3D &A)
Vec3D operator* (const Mdouble &a, const Vec3D &A)

Detailed Description

Implementation of a 3D vector (by Vitaliy).

Modifications 21:9:2009 - Added the inclusion guards and some include objects

Todo:
Need to generise this to n-dimensional vectors of any type

Constructor & Destructor Documentation

Vec3D::Vec3D ( void  ) [inline]

Referenced by operator*(), operator+(), operator-(), and operator/().

{}
Vec3D::Vec3D ( const Mdouble  x,
const Mdouble  y,
const Mdouble  z 
) [inline]

References X, Y, and Z.

        {       
                X = x; Y = y; Z = z;
        }

Member Function Documentation

Mdouble Vec3D::GetLength ( ) const [inline]
Mdouble Vec3D::GetLength2 ( ) const [inline]

References X, Y, and Z.

Referenced by GetLength().

        {
                return (X * X + Y * Y + Z * Z);
        }
void Vec3D::normalize ( ) [inline]

References GetLength().

Referenced by CWall::setSymmetryAxis().

                                {
                *this  /= this->GetLength();
        }
Vec3D Vec3D::operator* ( const Mdouble  A) const [inline]

References Vec3D(), X, Y, and Z.

        { 
                return Vec3D(X * A, Y * A, Z * A); 
        }
Vec3D& Vec3D::operator*= ( const Mdouble  a) [inline]

References X, Y, and Z.

        {
                X *= a;
                Y *= a;
                Z *= a;
                return *this;
        }
Vec3D Vec3D::operator+ ( const Vec3D A) const [inline]

References Vec3D(), X, Y, and Z.

        { 
                return Vec3D(X + A.X, Y + A.Y, Z + A.Z); 
        }
Vec3D Vec3D::operator+ ( const Mdouble  A) const [inline]

References Vec3D(), X, Y, and Z.

        { 
                return Vec3D(X + A, Y + A, Z + A); 
        }
Vec3D& Vec3D::operator+= ( const Vec3D A) [inline]

References X, Y, and Z.

        {
                X += A.X;
                Y += A.Y;
                Z += A.Z;
                return *this;
        }
Vec3D Vec3D::operator- ( const Vec3D A) const [inline]

References Vec3D(), X, Y, and Z.

        {
                return Vec3D(X - A.X, Y - A.Y, Z - A.Z);
        }
Vec3D Vec3D::operator- ( const Mdouble  A) const [inline]

References Vec3D(), X, Y, and Z.

        { 
                return Vec3D(X - A, Y - A, Z - A); 
        }
Vec3D& Vec3D::operator-= ( const Vec3D A) [inline]

References X, Y, and Z.

        {
                X -= A.X;
                Y -= A.Y;
                Z -= A.Z;
                return *this;
        }
Vec3D Vec3D::operator/ ( const Mdouble  A) const [inline]

References Vec3D(), X, Y, and Z.

        { 
                return Vec3D(X / A, Y / A, Z / A); 
        }
Vec3D& Vec3D::operator/= ( const Mdouble  a) [inline]

References X, Y, and Z.

        {
                X /= a;
                Y /= a;
                Z /= a;
                return *this;
        }
void Vec3D::set_zero ( ) [inline]
void Vec3D::SetLength ( Mdouble  length) [inline]

References GetLength().

                                              {
                *this  /= this->GetLength()*length;
        }

Friends And Related Function Documentation

Vec3D Cross ( const Vec3D A,
const Vec3D B 
) [friend]
        {
                return Vec3D(A.Y*B.Z-A.Z*B.Y, A.Z*B.X-A.X*B.Z, A.X*B.Y-A.Y*B.X);
        }
Mdouble Dot ( const Vec3D A,
const Vec3D B 
) [friend]
        {
                return A.X * B.X + A.Y * B.Y + A.Z * B.Z;
        }
Mdouble GetDistance ( const Vec3D A,
const Vec3D B 
) [friend]
        {
                return sqrt(GetDistance2(A, B));
        }
Mdouble GetDistance2 ( const Vec3D A,
const Vec3D B 
) [friend]
        {
                return ((A.X - B.X) * (A.X - B.X) + (A.Y - B.Y) * (A.Y - B.Y) + (A.Z - B.Z) * (A.Z - B.Z));
        }
Mdouble GetLength ( const Vec3D A) [friend]
        {
                return A.GetLength();
        }
Mdouble GetLength2 ( const Vec3D A) [friend]
Vec3D GetUnitVector ( const Vec3D A) [friend]
        {
                Mdouble Length2 = A.GetLength2();
                if (Length2) return A/sqrt(Length2);
                else return Vec3D(0,0,0);
        }
Vec3D max ( const Vec3D A,
const Vec3D B 
) [friend]
        {
                return Vec3D(std::max(A.X,B.X), std::max(A.Y,B.Y), std::max(A.Z,B.Z));
        }
Vec3D min ( const Vec3D A,
const Vec3D B 
) [friend]
        {
                return Vec3D(std::min(A.X,B.X), std::min(A.Y,B.Y), std::min(A.Z,B.Z));
        }
Vec3D operator* ( const Mdouble a,
const Vec3D A 
) [friend]
{return Vec3D(A.X * a, A.Y * a, A.Z * a);}      
Vec3D operator+ ( const Mdouble a,
const Vec3D A 
) [friend]
{return Vec3D(A.X + a, A.Y + a, A.Z + a);} 
Vec3D operator- ( const Mdouble a,
const Vec3D A 
) [friend]
{return Vec3D(A.X - a, A.Y - a, A.Z - a);} 
Vec3D operator- ( const Vec3D A) [friend]
{return Vec3D(-A.X, -A.Y, -A.Z);} 
std::ostream& operator<< ( std::ostream &  os,
const Vec3D A 
) [friend]
        {
                os << A.X << ' ' << A.Y << ' ' << A.Z;
                return os;
        }
std::istream& operator>> ( std::istream &  is,
Vec3D A 
) [friend]
        {
                is >> A.X >> A.Y >> A.Z;
                return is;
        }
Vec3D sqrt ( const Vec3D A) [friend]

Referenced by GetLength().

        {
                return Vec3D(sqrt(A.X), sqrt(A.Y), sqrt(A.Z));
        }
Vec3D square ( const Vec3D A) [friend]
        {
                return Vec3D(A.X * A.X, A.Y * A.Y, A.Z * A.Z);
        }

Member Data Documentation


The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines