topical media & game development

talk show tell print

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



  
ofxPoint3f.h by stefanix

  
  
  ifndef _OFX_POINT3f
  define _OFX_POINT3f
  
  include <ofxVec3f.h>
  include <ofTypes.h>
  
  class ofxPoint3f : public ofPoint {
  
    public:
  
      ofxPoint3f( float _x=0.0f, float _y=0.0f, float _z=0.0f );
  
      ofxPoint3f( const ofPoint& pnt );
  
      // Getters and Setters.
      //
      //
      void set( float _x, float _y, float _z );
  
      void set( const ofPoint& pnt );
  
      float& operator[]( const int& i );
  
      // Check similarity/equality.
      //
      //
      bool operator==( const ofPoint& pnt );
  
      bool operator!=( const ofPoint& pnt );
  
      bool match( const ofPoint& pnt, float tollerance=0.0001);
  
      // Operator overloading for ofPoint
      //
      //
  
     void                 operator=( const ofPoint& vec );
  
      ofxPoint3f         operator+( const ofPoint& pnt ) const;
  
      ofxPoint3f& operator+=( const ofPoint& pnt );
  
      ofxPoint3f         operator-( const ofPoint& vec ) const;
  
      ofxPoint3f& operator-=( const ofPoint& vec );
  
      ofxPoint3f         operator*( const ofPoint& vec ) const;
  
      ofxPoint3f& operator*=( const ofPoint& vec );
  
      ofxPoint3f         operator/( const ofPoint& vec ) const;
  
      ofxPoint3f& operator/=( const ofPoint& vec );
  
      ofxPoint3f         operator-() const;
  
      //operator overloading for float
      //
      //
      void                 operator=( const float f);
  
      ofxPoint3f         operator+( const float f ) const;
  
      ofxPoint3f& operator+=( const float f );
  
           ofxPoint3f         operator-( const float f ) const;
  
      ofxPoint3f& operator-=( const float f );
  
      ofxPoint3f         operator*( const float f ) const;
  
      ofxPoint3f& operator*=( const float f );
  
      ofxPoint3f         operator/( const float f ) const;
  
      ofxPoint3f& operator/=( const float f );
  
      // Rotate point by angle (deg) around line defined by pivot and axis.
      //
      //
  
      ofxPoint3f         getRotated( float angle,
                          const ofxPoint3f& pivot,
                          const ofxVec3f& axis ) const;
  
      ofxPoint3f& rotate( float angle,
                          const ofxPoint3f& pivot,
                          const ofxVec3f& axis );
  
      ofxPoint3f         getRotatedRad( float angle,
                          const ofxPoint3f& pivot,
                          const ofxVec3f& axis ) const;
  
      ofxPoint3f& rotateRad( float angle,
                          const ofxPoint3f& pivot,
                          const ofxVec3f& axis );
  
      // Map point to coordinate system defined by origin, vx, vy, and vz.
      //
      //
  
      ofxPoint3f         getMapped( const ofxPoint3f& origin,
                         const ofxVec3f& vx,
                         const ofxVec3f& vy,
                         const ofxVec3f& vz ) const;
  
      ofxPoint3f& map( const ofxPoint3f& origin,
                       const ofxVec3f& vx,
                       const ofxVec3f& vy,
                       const ofxVec3f& vz );
  
      // Distance between two points.
      //
      //
      float distance( const ofxPoint3f& pnt) const;
  
      float squareDistance( const ofxPoint3f& pnt ) const;
  
      // Linear interpolation.
      //
      //
      
p==0.0 results in this point, p==0.5 results in the midpoint, and p==1.0 results in pnt being returned.

  
  
      ofxPoint3f         getInterpolated( const ofxPoint3f& pnt, float p ) const;
  
      ofxPoint3f& interpolate( const ofxPoint3f& pnt, float p );
  
      ofxPoint3f         getMiddle( const ofxPoint3f& pnt ) const;
  
      ofxPoint3f& middle( const ofxPoint3f& pnt );
  
      // Average (centroid) among points.
      // Addition is sometimes useful for calculating averages too.
      //
      //
      ofxPoint3f& average( const ofxPoint3f* points, int num );
  
      // Perpendicular normalized vector from three points.
      //
      //
  
      ofxVec3f         getPerpendicular( const ofxPoint3f& pnt1,
                              const ofxPoint3f& pnt2 ) const;
  
      //------------------------------------------
      // this methods are deprecated in 006, please use:
  
      // use getRotated
      ofxPoint3f         rotated( float angle,
                              const ofxPoint3f& pivot,
                              const ofxVec3f& axis ) const;
  
      // use getMapped
      ofxPoint3f         mapped( const ofxPoint3f& origin,
                             const ofxVec3f& vx,
                             const ofxVec3f& vy,
                             const ofxVec3f& vz ) const;
  
      // use squareDistance
      float                distanceSquared( const ofxPoint3f& pnt ) const;
  
      // use getInterpolated
      ofxPoint3f         interpolated( const ofxPoint3f& pnt, float p ) const;
  
      // use getMiddle
      ofxPoint3f         middled( const ofxPoint3f& pnt ) const;
  
      // use getPerpendicular
      ofxVec3f         perpendicular( const ofxPoint3f& pnt1,
                                  const ofxPoint3f& pnt2 ) const;
  };
  
  // Non-Member operators
  //
  //
  ofxPoint3f operator+( float f, const ofxPoint3f& pnt );
  
  ofxPoint3f operator-( float f, const ofxPoint3f& pnt );
  
  ofxPoint3f operator*( float f, const ofxPoint3f& pnt );
  
  ofxPoint3f operator/( float f, const ofxPoint3f& pnt );
  
  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.