00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef __VOLUME_SLICER_DOT_H
00025 #define __VOLUME_SLICER_DOT_H
00026
00027 #include <mathGutz.h>
00028 #include <arrayGutz.h>
00029 #include <volume/Volytope.h>
00030 #include <volume/VolSamples.h>
00031
00032 class VolSlicer : public gutz::Counted {
00033 public:
00034 VolSlicer():_sampleSpace(.01f){}
00035 virtual ~VolSlicer(){}
00036
00037 void setSampleSpace(float sp) {_sampleSpace = sp;}
00038 float getSampleSpace() {return _sampleSpace;}
00039
00040 virtual void slice( gutz::mat4f mv,
00041 VolytopeSP vtp,
00042 VolSamplesSP vs,
00043 gutz::vec3f axis);
00044
00045 protected:
00046
00047
00048 inline int intersect(
00049 const gutz::vec3f &m0, const gutz::vec3f &m1,
00050 const gutz::vec3f &t0, const gutz::vec3f &t1,
00051 const gutz::vec3f &e0, const gutz::vec3f &e1,
00052 const gutz::vec3f &sp, const gutz::vec3f &sn,
00053 gutz::vec3f &mnew,
00054 gutz::vec4f &tnew,
00055 gutz::vec3f &enew);
00056
00057 float _sampleSpace;
00058
00059 };
00060
00061 typedef gutz::SmartPtr<VolSlicer> VolSlicerSP;
00062
00063 #endif
00064