00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef COIN_SBPLANE_H
00021 #define COIN_SBPLANE_H
00022
00023 #include <stdio.h>
00024
00025 #include <Inventor/SbVec3f.h>
00026
00027 class SbLine;
00028 class SbMatrix;
00029
00030 class COIN_DLL_API SbPlane {
00031 public:
00032 SbPlane(void);
00033 SbPlane(const SbVec3f& normal, const float D);
00034 SbPlane(const SbVec3f& p0, const SbVec3f& p1, const SbVec3f& p2);
00035 SbPlane(const SbVec3f& normal, const SbVec3f& point);
00036
00037 void offset(const float d);
00038 SbBool intersect(const SbLine& l, SbVec3f& intersection) const;
00039 void transform(const SbMatrix& matrix);
00040 SbBool isInHalfSpace(const SbVec3f& point) const;
00041 float getDistance(const SbVec3f &point) const;
00042 const SbVec3f& getNormal(void) const;
00043 float getDistanceFromOrigin(void) const;
00044 friend COIN_DLL_API int operator ==(const SbPlane& p1, const SbPlane& p2);
00045 friend COIN_DLL_API int operator !=(const SbPlane& p1, const SbPlane& p2);
00046
00047 void print(FILE * file) const;
00048
00049 private:
00050 SbVec3f normal;
00051 float distance;
00052 };
00053
00054 COIN_DLL_API int operator ==(const SbPlane& p1, const SbPlane& p2);
00055 COIN_DLL_API int operator !=(const SbPlane& p1, const SbPlane& p2);
00056
00057 #endif // !COIN_SBPLANE_H