00001 #ifndef COIN_SBXFBOX3F_H
00002 #define COIN_SBXFBOX3F_H
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #include <stdio.h>
00028 #include <Inventor/SbBox3f.h>
00029 #include <Inventor/SbMatrix.h>
00030
00031 class COIN_DLL_API SbXfBox3f : public SbBox3f {
00032 typedef SbBox3f inherited;
00033
00034 public:
00035 SbXfBox3f(void);
00036 SbXfBox3f(const SbVec3f & boxmin, const SbVec3f & boxmax);
00037 SbXfBox3f(const SbBox3f & box);
00038 ~SbXfBox3f();
00039
00040 void setTransform(const SbMatrix & m);
00041 const SbMatrix & getTransform(void) const;
00042 const SbMatrix & getInverse(void) const;
00043 SbVec3f getCenter(void) const;
00044 void extendBy(const SbVec3f & pt);
00045 void extendBy(const SbBox3f & bb);
00046 void extendBy(const SbXfBox3f & bb);
00047 SbBool intersect(const SbVec3f & pt) const;
00048 SbBool intersect(const SbBox3f & bb) const;
00049 SbBool intersect(const SbXfBox3f & bb) const;
00050 void getSpan(const SbVec3f & direction, float & dMin, float & dMax) const;
00051 SbBox3f project(void) const;
00052 friend COIN_DLL_API int operator ==(const SbXfBox3f & b1, const SbXfBox3f & b2);
00053 friend COIN_DLL_API int operator !=(const SbXfBox3f & b1, const SbXfBox3f & b2);
00054
00055
00056
00057 void transform(const SbMatrix & m);
00058
00059 float getVolume(void) const;
00060
00061 void print(FILE * file) const;
00062
00063 private:
00064
00065 const SbVec3f & getMin(void) const {return SbBox3f::getMin(); }
00066 const SbVec3f & getMax(void) const { return SbBox3f::getMax(); }
00067
00068 void calcInverse(void) const;
00069 void makeInvInvalid(void);
00070
00071 SbMatrix matrix, invertedmatrix;
00072 };
00073
00074 COIN_DLL_API int operator ==(const SbXfBox3f & b1, const SbXfBox3f & b2);
00075 COIN_DLL_API int operator !=(const SbXfBox3f & b1, const SbXfBox3f & b2);
00076
00077 #endif // !COIN_SBXFBOX3F_H