Point3D.h

Go to the documentation of this file.
00001 /* $Id: Point3D.h,v 1.2 2002/11/05 14:31:15 anonymous Exp $ */
00002 
00003 #ifndef __POINT_3D_H
00004 #define __POINT_3D_H
00005 
00006 #include <esg/geometry/Geometry.h>
00007 #include <esg/mesh/PointMesh.h>
00008 #include <math.h>
00009 
00010 namespace esg {
00011 
00016 class OGSCENE_EXPORT Point3D : public Geometry {
00017 protected:
00018         Vector3 _position; 
00019 
00020 protected:
00021         virtual Mesh* _mesh (int /* not used */) const { return new PointMesh(_position); }
00022         virtual void  _duplicate_attributes (const Geometry&);
00023         virtual void  _rotateX   (float /* angle */);
00024         virtual void  _rotateY   (float /* angle */);
00025         virtual void  _rotateZ   (float /* angle */);
00026         virtual void  _rotate    (float /* angle */,const Vector3& /* axis */);
00027         virtual void  _rotate    (const Matrix3&);
00028         virtual void  _translate (float /* x */, float /* y */, float /* z */);
00029         virtual void  _transform (const Matrix4&);
00030         virtual void  _scale     (float);
00031 
00032 public:
00036         Point3D ();
00037         
00043         Point3D (const Vector3& v);
00044 
00052         Point3D (float x, float y, float z);
00053 
00061         Point3D (double x, double y, double z);
00062 
00066         virtual ~Point3D() {}
00067 
00068         virtual void rayIntersection (PointEnv*      pPE,
00069                                       int            mask,
00070                                       const Vector3& origin,
00071                                       const Vector3& direction,
00072                                       float          maxD = MAXFLOAT);
00073 
00074         virtual bool mapToUV (const Vector3& v, Vector2& uv);
00075 
00076         virtual void randomSample (int mask, PointEnv& pe, double* pdf);
00077 
00078         virtual bool randomDirection (const Vector3& pov,
00079                                       Vector3&       dir,
00080                                       double*        pdf);
00081 
00082         virtual Interval extent (const Vector3& direction) const;
00083 
00084         virtual Vector3 centroid (void) const;
00085 
00086         virtual double radius (void) const;
00087         
00088         virtual double radius (const Vector3& centroid) const;
00089 
00090         virtual Geometry* clone (const Matrix4* pTrMat) const;
00091 
00092         virtual bool separation (Geometry& geom, Vector3*  pDir);
00093 
00094         virtual double distance (const Geometry& geom, Vector3* pDir);
00095 
00096         virtual void dump (const char* intent, const char* tab);
00097 
00101         void setPosition(const Vector3& p) {
00102             _position.set(p);
00103         }
00104 
00110         void setPosition(float x, float y, float z) {
00111             _position.set(x,y,z);
00112         }
00113 
00117         Vector3 getPosition() const {
00118             return _position;
00119         }
00120 };
00121 
00122 }; // namespace
00123 
00124 #endif // __POINT_3D_H

Generated on Wed Jun 28 12:24:28 2006 for esg by  doxygen 1.4.6