00001 #ifndef COIN_SBPLANE_H
00002 #define COIN_SBPLANE_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
00029 #include <Inventor/SbVec3f.h>
00030
00031 class SbLine;
00032 class SbMatrix;
00033
00034 class COIN_DLL_API SbPlane {
00035 public:
00036 SbPlane(void);
00037 SbPlane(const SbVec3f& normal, const float D);
00038 SbPlane(const SbVec3f& p0, const SbVec3f& p1, const SbVec3f& p2);
00039 SbPlane(const SbVec3f& normal, const SbVec3f& point);
00040
00041 void offset(const float d);
00042 SbBool intersect(const SbLine& l, SbVec3f& intersection) const;
00043 void transform(const SbMatrix& matrix);
00044 SbBool isInHalfSpace(const SbVec3f& point) const;
00045 float getDistance(const SbVec3f &point) const;
00046 const SbVec3f& getNormal(void) const;
00047 float getDistanceFromOrigin(void) const;
00048 friend COIN_DLL_API int operator ==(const SbPlane& p1, const SbPlane& p2);
00049 friend COIN_DLL_API int operator !=(const SbPlane& p1, const SbPlane& p2);
00050
00051 void print(FILE * file) const;
00052
00053 SbBool intersect(const SbPlane & pl, SbLine & line);
00054
00055 private:
00056 SbVec3f normal;
00057 float distance;
00058 };
00059
00060 COIN_DLL_API int operator ==(const SbPlane& p1, const SbPlane& p2);
00061 COIN_DLL_API int operator !=(const SbPlane& p1, const SbPlane& p2);
00062
00063 #endif // !COIN_SBPLANE_H