00001 #ifndef _VUSAMPLERAY_H_ 00002 #define _VUSAMPLERAY_H_ 00003 00004 #include "vuVector.h" 00005 #include "vuRay.h" 00006 #include "DatGrid.h" 00007 #include "DatPnt.h" 00008 00009 namespace ns_vu1112112 { 00010 using namespace ns_vu1112112; 00011 00013 // 00014 // File: vuSampleRay.h 00015 // Author: Steve Kilthau 00016 // Date: August, 1999 00017 // Adapted to vuVolume by Steven Bergner, 2001 00022 class vuSampleRay : public vuRay 00023 { 00024 friend class DatGrid; 00025 friend class DatPnt; 00026 public: 00028 vuSampleRay(); 00029 vuSampleRay(const vuSampleRay &r); 00030 vuSampleRay(const vuRay &r); 00031 ~vuSampleRay(); 00032 00033 void SamplingDistance(float sd); 00034 float SamplingDistance() const; 00035 00037 vuSampleRay& operator=(vuSampleRay &rhs); 00038 00039 bool advanceRay(); 00040 00045 bool getSamplePoint(DatPnt& dat) const; 00047 bool getSamplePointWithGradient(DatPnt &dat) const; 00048 00051 bool attachToGrid(const DatGrid& grid); 00052 00053 protected: 00054 float m_SmpDist; 00055 00056 const DatGrid *m_Grid; 00057 int grid_index; 00058 int gridPos[3]; 00059 int axis[3]; 00060 int step[3]; 00061 float incr[2][2]; 00062 float dist[3]; 00063 int maxSmp, numSmp; 00064 00065 int m_Side, m_InSide; 00066 00067 int steps; 00068 00069 DatPnt *cell[8]; 00070 float w[8]; 00071 int p[3]; 00072 float t[3]; 00073 bool emptySample; 00074 }; 00075 00076 } // end of namespace 00077 00078 #endif