00001 #ifndef COIN_SBSPHEREPROJECTOR_H
00002 #define COIN_SBSPHEREPROJECTOR_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 <Inventor/projectors/SbProjector.h>
00028 #include <Inventor/SbSphere.h>
00029 #include <Inventor/SbRotation.h>
00030
00031 class COIN_DLL_API SbSphereProjector : public SbProjector {
00032 typedef SbProjector inherited;
00033
00034 public:
00035 SbVec3f projectAndGetRotation(const SbVec2f & point, SbRotation & rot);
00036 virtual SbRotation getRotation(const SbVec3f & point1,
00037 const SbVec3f & point2) = 0;
00038
00039 void setSphere(const SbSphere & sph);
00040 const SbSphere & getSphere(void) const;
00041 void setOrientToEye(const SbBool orienttoeye);
00042 SbBool isOrientToEye(void) const;
00043 void setFront(const SbBool infront);
00044 SbBool isFront(void) const;
00045 SbBool isPointInFront(const SbVec3f & point) const;
00046 virtual void setWorkingSpace(const SbMatrix & space);
00047
00048 protected:
00049 SbSphereProjector(const SbBool orienttoeye);
00050 SbSphereProjector(const SbSphere & s, const SbBool orienttoeye);
00051
00052 SbBool intersectSphereFront(const SbLine & l, SbVec3f & result);
00053
00054 SbBool intersectFront;
00055 SbSphere sphere;
00056 SbBool orientToEye;
00057 SbBool needSetup;
00058 SbVec3f lastPoint;
00059 };
00060
00061 #endif // !COIN_SBSPHEREPROJECTOR_H