moab
moab::HomCoord Class Reference

Homogeneous coordinate vector. More...

#include <HomXform.hpp>

List of all members.

Public Member Functions

 HomCoord ()
 constructors
 HomCoord (const int coords[], const int num_coords=4)
 HomCoord (const int coord0, const int coord1, const int coord2, const int coord3)
 HomCoord (const int coord0, const int coord1, const int coord2)
 HomCoord (const HomCoord &coord)
void set (const int coords[])
 set function
void set (const int i, const int j, const int k, const int h=1)
const int * hom_coord () const
 get function
int i () const
 parameter-based access functions
int j () const
int k () const
int h () const
int length_squared () const
 squared length
int length () const
 length
void normalize ()
 normalize
HomCoordoperator*= (const HomXform &rhs2)
 operators
HomCoord operator* (const HomXform &rhs2) const
HomCoordoperator*= (const int mult)
HomCoord operator* (const int mult) const
HomCoordoperator/= (const HomXform &rhs2)
HomCoord operator/ (const HomXform &rhs2) const
HomCoordoperator/= (const int mult)
HomCoord operator/ (const int mult) const
HomCoordoperator+= (const HomCoord &rhs1)
HomCoord operator+ (const HomCoord &rhs1) const
HomCoordoperator-= (const HomCoord &rhs1)
HomCoord operator- (const HomCoord &rhs1) const
HomCoordoperator= (const HomCoord &rhs)
int operator% (const HomCoord &rhs) const
HomCoord operator* (const HomCoord &rhs) const
HomCoordoperator*= (const HomCoord &rhs)
bool operator== (const HomCoord &rhs1) const
bool operator!= (const HomCoord &rhs1) const
bool operator>= (const HomCoord &rhs1) const
bool operator<= (const HomCoord &rhs1) const
bool operator> (const HomCoord &rhs1) const
bool operator< (const HomCoord &rhs1) const
int operator[] (const int &param) const
int & operator[] (const int &param)

Static Public Attributes

static HomCoord unitv [3] = {HomCoord(1,0,0), HomCoord(0,1,0), HomCoord(0,0,1)}
static HomCoord IDENTITY

Private Attributes

int homCoord [4]
 coordinate data

Friends

class HomXform

Detailed Description

Homogeneous coordinate vector.

Examples:
StructuredMeshSimple.cpp.

Definition at line 43 of file HomXform.hpp.


Constructor & Destructor Documentation

constructors

Definition at line 178 of file HomXform.hpp.

{
  homCoord[0] = 0;
  homCoord[1] = 0;
  homCoord[2] = 0;
  homCoord[3] = 0;
}
moab::HomCoord::HomCoord ( const int  coords[],
const int  num_coords = 4 
) [inline]

Definition at line 186 of file HomXform.hpp.

{
  for (int tmpj = 0; tmpj < num_coords; tmpj++) homCoord[tmpj] = coords[tmpj];
  if (num_coords != 4) homCoord[3] = 1;
}
moab::HomCoord::HomCoord ( const int  coord0,
const int  coord1,
const int  coord2,
const int  coord3 
) [inline]

Definition at line 192 of file HomXform.hpp.

{
  homCoord[0] = coord0;
  homCoord[1] = coord1;
  homCoord[2] = coord2;
  homCoord[3] = coord3;
}
moab::HomCoord::HomCoord ( const int  coord0,
const int  coord1,
const int  coord2 
) [inline]

Definition at line 201 of file HomXform.hpp.

{
  homCoord[0] = coord0;
  homCoord[1] = coord1;
  homCoord[2] = coord2;
  homCoord[3] = 1;
}
moab::HomCoord::HomCoord ( const HomCoord coord) [inline]

Definition at line 210 of file HomXform.hpp.

{
#if defined(__INTEL_COMPILER) && (__INTEL_COMPILER < 1310)
  // Hack Intel compiler 12 issues with -O2 optimization
  int coord0 = coords[0];
  int coord1 = coords[1];
  int coord2 = coords[2];
  int coord3 = coords[3];
  homCoord[0] = coord0;
  homCoord[1] = coord1;
  homCoord[2] = coord2;
  homCoord[3] = coord3;
#else
  homCoord[0] = coords[0];
  homCoord[1] = coords[1];
  homCoord[2] = coords[2];
  homCoord[3] = coords[3];
#endif
}

Member Function Documentation

int moab::HomCoord::h ( ) const [inline]

Definition at line 82 of file HomXform.hpp.

{return homCoord[3];}
const int* moab::HomCoord::hom_coord ( ) const [inline]

get function

Definition at line 76 of file HomXform.hpp.

{return homCoord;}
int moab::HomCoord::i ( ) const [inline]

parameter-based access functions

Definition at line 79 of file HomXform.hpp.

{return homCoord[0];}
int moab::HomCoord::j ( ) const [inline]

Definition at line 80 of file HomXform.hpp.

{return homCoord[1];}
int moab::HomCoord::k ( ) const [inline]

Definition at line 81 of file HomXform.hpp.

{return homCoord[2];}
int moab::HomCoord::length ( ) const [inline]

length

Definition at line 266 of file HomXform.hpp.

{
  return (int) sqrt((float)length_squared());
}
int moab::HomCoord::length_squared ( ) const [inline]

squared length

Definition at line 257 of file HomXform.hpp.

{
  return homCoord[0]*homCoord[0] +
    homCoord[1]*homCoord[1] +
    homCoord[2]*homCoord[2];
}
void moab::HomCoord::normalize ( ) [inline]

normalize

Definition at line 272 of file HomXform.hpp.

{
  *this /= length();
}
bool moab::HomCoord::operator!= ( const HomCoord rhs1) const [inline]

Definition at line 312 of file HomXform.hpp.

{
  return (homCoord[0] != rhs1.homCoord[0] ||
          homCoord[1] != rhs1.homCoord[1] ||
          homCoord[2] != rhs1.homCoord[2] ||
          homCoord[3] != rhs1.homCoord[3]);
}
int moab::HomCoord::operator% ( const HomCoord rhs) const [inline]

Definition at line 278 of file HomXform.hpp.

{
  return homCoord[0]*rhs.homCoord[0] +
    homCoord[1]*rhs.homCoord[1] +
    homCoord[2]*rhs.homCoord[2];
}
HomCoord moab::HomCoord::operator* ( const HomXform rhs2) const [inline]

Definition at line 352 of file HomXform.hpp.

{
  return HomCoord(
//    homCoord[0]*rhs2[4*0+0] + homCoord[1]*rhs2[4*1+0] + 
//    homCoord[2]*rhs2[4*2+0] + homCoord[3]*rhs2[4*3+0],
    homCoord[0]*rhs2.xForm[0] + homCoord[1]*rhs2.xForm[4] + 
    homCoord[2]*rhs2.xForm[8] + homCoord[3]*rhs2.xForm[12],

//    homCoord[0]*rhs2.xForm[4*0+1] + homCoord[1]*rhs2.xForm[4*1+1] + 
//    homCoord[2]*rhs2.xForm[4*2+1] + homCoord[3]*rhs2.xForm[4*3+1],
    homCoord[0]*rhs2.xForm[1] + homCoord[1]*rhs2.xForm[5] + 
    homCoord[2]*rhs2.xForm[9] + homCoord[3]*rhs2.xForm[13],

//    homCoord[0]*rhs2.xForm[4*0+2] + homCoord[1]*rhs2.xForm[4*1+2] + 
//    homCoord[2]*rhs2.xForm[4*2+2] + homCoord[3]*rhs2.xForm[4*3+2],
    homCoord[0]*rhs2.xForm[2] + homCoord[1]*rhs2.xForm[6] + 
    homCoord[2]*rhs2.xForm[10] + homCoord[3]*rhs2.xForm[14],

//    homCoord[0]*rhs2.xForm[4*0+3] + homCoord[1]*rhs2.xForm[4*1+3] + 
//    homCoord[2]*rhs2.xForm[4*2+3] + homCoord[3]*rhs2.xForm[4*3+3]
    homCoord[0]*rhs2.xForm[3] + homCoord[1]*rhs2.xForm[7] + 
    homCoord[2]*rhs2.xForm[11] + homCoord[3]*rhs2.xForm[15]
    );
}
HomCoord moab::HomCoord::operator* ( const int  mult) const [inline]

Definition at line 403 of file HomXform.hpp.

{
  return HomCoord(mult*homCoord[0], mult*homCoord[1], mult*homCoord[2]);
}
HomCoord moab::HomCoord::operator* ( const HomCoord rhs) const [inline]

Definition at line 286 of file HomXform.hpp.

{
  return HomCoord(
    homCoord[1]*rhs.homCoord[2] - homCoord[2]*rhs.homCoord[1],
    homCoord[2]*rhs.homCoord[0] - homCoord[0]*rhs.homCoord[2],
    homCoord[0]*rhs.homCoord[1] - homCoord[1]*rhs.homCoord[0]);
}
HomCoord & moab::HomCoord::operator*= ( const HomXform rhs2) [inline]

operators

Definition at line 377 of file HomXform.hpp.

{
  *this = HomCoord(
//    homCoord[0]*rhs2.xForm[4*0+0] + homCoord[1]*rhs2.xForm[4*1+0] + 
//    homCoord[2]*rhs2.xForm[4*2+0] + homCoord[3]*rhs2.xForm[4*3+0],
    homCoord[0]*rhs2.xForm[0] + homCoord[1]*rhs2.xForm[4] + 
    homCoord[2]*rhs2.xForm[8] + homCoord[3]*rhs2.xForm[12],

//    homCoord[0]*rhs2.xForm[4*0+1] + homCoord[1]*rhs2.xForm[4*1+1] + 
//    homCoord[2]*rhs2.xForm[4*2+1] + homCoord[3]*rhs2.xForm[4*3+1],
    homCoord[0]*rhs2.xForm[1] + homCoord[1]*rhs2.xForm[5] + 
    homCoord[2]*rhs2.xForm[9] + homCoord[3]*rhs2.xForm[13],

//    homCoord[0]*rhs2.xForm[4*0+2] + homCoord[1]*rhs2.xForm[4*1+2] + 
//    homCoord[2]*rhs2.xForm[4*2+2] + homCoord[3]*rhs2.xForm[4*3+2],
    homCoord[0]*rhs2.xForm[2] + homCoord[1]*rhs2.xForm[6] + 
    homCoord[2]*rhs2.xForm[10] + homCoord[3]*rhs2.xForm[14],

//    homCoord[0]*rhs2.xForm[4*0+3] + homCoord[1]*rhs2.xForm[4*1+3] + 
//    homCoord[2]*rhs2.xForm[4*2+3] + homCoord[3]*rhs2.xForm[4*3+3]
    homCoord[0]*rhs2.xForm[3] + homCoord[1]*rhs2.xForm[7] + 
    homCoord[2]*rhs2.xForm[11] + homCoord[3]*rhs2.xForm[15]
    );
  return *this;
}
HomCoord & moab::HomCoord::operator*= ( const int  mult) [inline]

Definition at line 408 of file HomXform.hpp.

{
  homCoord[0] *= mult;
  homCoord[1] *= mult;
  homCoord[2] *= mult;
  return *this;
}
HomCoord & moab::HomCoord::operator*= ( const HomCoord rhs) [inline]

Definition at line 294 of file HomXform.hpp.

{
  *this = HomCoord(
    homCoord[1]*rhs.homCoord[2] - homCoord[2]*rhs.homCoord[1],
    homCoord[2]*rhs.homCoord[0] - homCoord[0]*rhs.homCoord[2],
    homCoord[0]*rhs.homCoord[1] - homCoord[1]*rhs.homCoord[0]);
  
  return *this;
}
HomCoord moab::HomCoord::operator+ ( const HomCoord rhs1) const [inline]

Definition at line 442 of file HomXform.hpp.

{
  return HomCoord(*this) += rhs2;
}
HomCoord & moab::HomCoord::operator+= ( const HomCoord rhs1) [inline]

Definition at line 447 of file HomXform.hpp.

{
  homCoord[0] += rhs2[0];
  homCoord[1] += rhs2[1];
  homCoord[2] += rhs2[2];
  return *this;
}
HomCoord moab::HomCoord::operator- ( const HomCoord rhs1) const [inline]

Definition at line 429 of file HomXform.hpp.

{
  return HomCoord(*this) -= rhs2;
}
HomCoord & moab::HomCoord::operator-= ( const HomCoord rhs1) [inline]

Definition at line 434 of file HomXform.hpp.

{
  homCoord[0] -= rhs2[0];
  homCoord[1] -= rhs2[1];
  homCoord[2] -= rhs2[2];
  return *this;
}
HomCoord moab::HomCoord::operator/ ( const HomXform rhs2) const [inline]

Definition at line 455 of file HomXform.hpp.

{
  return HomCoord(*this) /= rhs2;
}
HomCoord moab::HomCoord::operator/ ( const int  mult) const [inline]

Definition at line 416 of file HomXform.hpp.

{
  return HomCoord(homCoord[0]/div, homCoord[1]/div, homCoord[2]/div);
}
HomCoord & moab::HomCoord::operator/= ( const HomXform rhs2) [inline]

Definition at line 460 of file HomXform.hpp.

{
  HomXform inv = rhs2.inverse();
  *this *= inv;
  return *this;
}
HomCoord & moab::HomCoord::operator/= ( const int  mult) [inline]

Definition at line 421 of file HomXform.hpp.

{
  homCoord[0] /= div;
  homCoord[1] /= div;
  homCoord[2] /= div;
  return *this;
}
bool moab::HomCoord::operator< ( const HomCoord rhs1) const [inline]

Definition at line 336 of file HomXform.hpp.

{
  return (homCoord[0] < rhs1.homCoord[0] &&
          homCoord[1] < rhs1.homCoord[1] &&
          homCoord[2] < rhs1.homCoord[2] &&
          homCoord[3] == rhs1.homCoord[3]);
}
bool moab::HomCoord::operator<= ( const HomCoord rhs1) const [inline]

Definition at line 328 of file HomXform.hpp.

{
  return (homCoord[0] <= rhs1.homCoord[0] &&
          homCoord[1] <= rhs1.homCoord[1] &&
          homCoord[2] <= rhs1.homCoord[2] &&
          homCoord[3] == rhs1.homCoord[3]);
}
HomCoord & moab::HomCoord::operator= ( const HomCoord rhs) [inline]

Definition at line 247 of file HomXform.hpp.

{
  homCoord[0] = rhs1.homCoord[0];
  homCoord[1] = rhs1.homCoord[1];
  homCoord[2] = rhs1.homCoord[2];
  homCoord[3] = rhs1.homCoord[3];
  return *this;
}
bool moab::HomCoord::operator== ( const HomCoord rhs1) const [inline]

Definition at line 304 of file HomXform.hpp.

{
  return (homCoord[0] == rhs1.homCoord[0] &&
          homCoord[1] == rhs1.homCoord[1] &&
          homCoord[2] == rhs1.homCoord[2] &&
          homCoord[3] == rhs1.homCoord[3]);
}
bool moab::HomCoord::operator> ( const HomCoord rhs1) const [inline]

Definition at line 344 of file HomXform.hpp.

{
  return (homCoord[0] > rhs1.homCoord[0] &&
          homCoord[1] > rhs1.homCoord[1] &&
          homCoord[2] > rhs1.homCoord[2] &&
          homCoord[3] == rhs1.homCoord[3]);
}
bool moab::HomCoord::operator>= ( const HomCoord rhs1) const [inline]

Definition at line 320 of file HomXform.hpp.

{
  return (homCoord[0] >= rhs1.homCoord[0] &&
          homCoord[1] >= rhs1.homCoord[1] &&
          homCoord[2] >= rhs1.homCoord[2] &&
          homCoord[3] == rhs1.homCoord[3]);
}
int moab::HomCoord::operator[] ( const int &  param) const [inline]

Definition at line 467 of file HomXform.hpp.

{
  return homCoord[param];
}
int & moab::HomCoord::operator[] ( const int &  param) [inline]

Definition at line 472 of file HomXform.hpp.

{
  return homCoord[param];
}
void moab::HomCoord::set ( const int  coords[]) [inline]

set function

Definition at line 230 of file HomXform.hpp.

{
    homCoord[0] = coords[0];
    homCoord[1] = coords[1];
    homCoord[2] = coords[2];
    homCoord[3] = coords[3];
}
void moab::HomCoord::set ( const int  i,
const int  j,
const int  k,
const int  h = 1 
) [inline]

Definition at line 238 of file HomXform.hpp.

{
    homCoord[0] = ip;
    homCoord[1] = jp;
    homCoord[2] = kp;
    homCoord[3] = hp;
}

Friends And Related Function Documentation

friend class HomXform [friend]

Definition at line 56 of file HomXform.hpp.


Member Data Documentation

int moab::HomCoord::homCoord[4] [private]

coordinate data

Definition at line 52 of file HomXform.hpp.

Definition at line 59 of file HomXform.hpp.

HomCoord moab::HomCoord::unitv = {HomCoord(1,0,0), HomCoord(0,1,0), HomCoord(0,0,1)} [static]

Definition at line 58 of file HomXform.hpp.


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