topical media & game development

talk show tell print

lib-of-vs-addons-ofxVectorMath-src-ofxVec3f.h / h



  ifndef _OFX_VEC3f
  define _OFX_VEC3f
  
  include <ofConstants.h>
  include <ofTypes.h>
  
  class ofxVec3f : public ofPoint {
  
    public:
  
      ofxVec3f( float _x=0.0f,
                float _y=0.0f,
                float _z=0.0f );
  
      ofxVec3f( const ofPoint& pnt );
  
      // Getters and Setters.
      //
      //
      void set( float _x, float _y, float _z );
  
      void set( const ofPoint& vec );
  
      float &operator[]( const int& i );
  
      // Check similarity/equality.
      //
      //
      bool operator==( const ofPoint& vec );
  
      bool operator!=( const ofPoint& vec );
  
      bool match( const ofPoint& vec, float tollerance=0.0001 );
  
      
Checks if vectors look in the same direction.

  
      bool align( const ofxVec3f& vec, float tollerance=0.0001 ) const;
      bool alignRad( const ofxVec3f& vec, float tollerance=0.0001 ) const;
  
      // Operator overloading for ofPoint
      //
      //
  
      void           operator=( const ofPoint& vec );
  
      ofxVec3f  operator+( const ofPoint& pnt ) const;
  
      ofxVec3f& operator+=( const ofPoint& pnt );
  
      ofxVec3f  operator-( const ofPoint& vec ) const;
  
      ofxVec3f& operator-=( const ofPoint& vec );
  
      ofxVec3f  operator*( const ofPoint& vec ) const;
  
      ofxVec3f& operator*=( const ofPoint& vec );
  
      ofxVec3f  operator/( const ofPoint& vec ) const;
  
      ofxVec3f& operator/=( const ofPoint& vec );
  
      ofxVec3f  operator-() const;
  
      //operator overloading for float
      //
      //
      void           operator=( const float f);
  
      ofxVec3f  operator+( const float f ) const;
  
      ofxVec3f& operator+=( const float f );
  
           ofxVec3f  operator-( const float f ) const;
  
      ofxVec3f& operator-=( const float f );
  
      ofxVec3f  operator*( const float f ) const;
  
      ofxVec3f& operator*=( const float f );
  
      ofxVec3f  operator/( const float f ) const;
  
      ofxVec3f& operator/=( const float f );
  
      //Scale
      //
      //
      ofxVec3f  getScaled( const float length ) const;
  
      ofxVec3f& scale( const float length );
  
      // Rotation
      //
      //
      ofxVec3f  getRotated( float angle, const ofxVec3f& axis ) const;
      ofxVec3f  getRotatedRad( float angle, const ofxVec3f& axis ) const;
  
      ofxVec3f& rotate( float angle, const ofxVec3f& axis );
      ofxVec3f& rotateRad( float angle, const ofxVec3f& axis );
  
      ofxVec3f  getRotated(float ax, float ay, float az) const;
      ofxVec3f  getRotatedRad(float ax, float ay, float az) const;
  
      ofxVec3f& rotate(float ax, float ay, float az);
      ofxVec3f& rotateRad(float ax, float ay, float az);
  
      // Normalization
      //
      //
      ofxVec3f  getNormalized() const;
  
      ofxVec3f& normalize();
  
      // Limit length.
      //
      //
  
      ofxVec3f  getLimited(float max) const;
  
      ofxVec3f& limit(float max);
  
      // Perpendicular vector.
      //
      //
      ofxVec3f  getCrossed( const ofxVec3f& vec ) const;
  
      ofxVec3f& cross( const ofxVec3f& vec );
  
      
Normalized perpendicular.

  
      ofxVec3f  getPerpendicular( const ofxVec3f& vec ) const;
  
      ofxVec3f& perpendicular( const ofxVec3f& vec );
  
      // Length
      //
      //
      float length() const;
  
      float squareLength() const;
  
      
Angle (deg) between two vectors. This is an unsigned relative angle from 0 to 180. http://www.euclideanspace.com/maths/algebra/vectors/angleBetween/index.htm

  
      float angle( const ofxVec3f& vec ) const;
      float angleRad( const ofxVec3f& vec ) const;
  
      
Dot Product.

  
      float dot( const ofxVec3f& vec ) const;
  
      //-----------------------------------------------
      // this methods are deprecated in 006 please use:
  
      // getScaled
      ofxVec3f rescaled( const float length ) const;
  
      // scale
      ofxVec3f& rescale( const float length );
  
      // getRotated
      ofxVec3f rotated( float angle, const ofxVec3f& axis ) const;
  
      // getRotated should this be const???
      ofxVec3f rotated(float ax, float ay, float az);
  
      // getNormalized
      ofxVec3f normalized() const;
  
      // getLimited
      ofxVec3f limited(float max) const;
  
      // getCrossed
      ofxVec3f crossed( const ofxVec3f& vec ) const;
  
      // getPerpendicular
      ofxVec3f perpendiculared( const ofxVec3f& vec ) const;
  
      // squareLength
      float lengthSquared() const;
  };
  
  // Non-Member operators
  //
  //
  ofxVec3f operator+( float f, const ofxVec3f& vec );
  
  ofxVec3f operator-( float f, const ofxVec3f& vec );
  
  ofxVec3f operator*( float f, const ofxVec3f& vec );
  
  ofxVec3f operator/( float f, const ofxVec3f& vec );
  
  endif
  


(C) Æliens 04/09/2009

You may not copy or print any of this material without explicit permission of the author or the publisher. In case of other copyright issues, contact the author.