00001 #ifndef _VU_VOLUME_LIGHTFIELD_UNIMODAL_VUSPHERICINTERACTIVE_H_
00002 #define _VU_VOLUME_LIGHTFIELD_UNIMODAL_VUSPHERICINTERACTIVE_H_
00003
00011 #include "ibr.h"
00012
00013 template <int SIZE, class TYPE>
00014 class vuSphericInteractive{
00015
00016 public:
00017 vuSphericInteractive();
00018 ~vuSphericInteractive();
00019
00021 void setVolume(vu1611_2<SIZE,TYPE> *volume);
00022
00024 vu1611_2<SIZE,TYPE> *getVolume();
00025
00026 void reset();
00027 bool *getAlreadyVisitedIndices();
00028 int indexOfNearestView();
00029
00030 vuSphericView<SIZE,TYPE> *nearestView();
00031
00032 bool vuSphericInteractive<SIZE,TYPE>::isVisited(dword idx);
00033 void vuSphericInteractive<SIZE,TYPE>::setIsVisited(dword idx, bool flag);
00034
00035 dword getNumberOfVisited();
00036
00037 dword getNumberOfViews();
00038
00039 private:
00040 void _ensureList();
00041
00042 protected:
00043 dword m_NumberOfVisited;
00044 dword m_NumberOfViews;
00045 bool *m_AlreadyVisited;
00046 vu1611_2<SIZE,TYPE> *m_Volume;
00047 };
00048
00049 template class vuSphericInteractive<1,byte>;
00050 template class vuSphericInteractive<2,byte>;
00051 template class vuSphericInteractive<3,byte>;
00052 template class vuSphericInteractive<1,float>;
00053 template class vuSphericInteractive<2,float>;
00054 template class vuSphericInteractive<3,float>;
00055
00056 typedef vuSphericInteractive<1,byte> vuSphericInteractive1B;
00057 typedef vuSphericInteractive<2,byte> vuSphericInteractive2B;
00058 typedef vuSphericInteractive<3,byte> vuSphericInteractive3B;
00059 typedef vuSphericInteractive<1,float> vuSphericInteractive1F;
00060 typedef vuSphericInteractive<2,float> vuSphericInteractive2F;
00061 typedef vuSphericInteractive<3,float> vuSphericInteractive3F;
00062
00063 #endif