00001 #ifndef COIN_SBCYLINDERPROJECTOR_H
00002 #define COIN_SBCYLINDERPROJECTOR_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/SbCylinder.h>
00029
00030 class COIN_DLL_API SbCylinderProjector : public SbProjector {
00031 typedef SbProjector inherited;
00032
00033 public:
00034 virtual SbVec3f project(const SbVec2f & point) = 0;
00035 SbVec3f projectAndGetRotation(const SbVec2f & point, SbRotation & rot);
00036 virtual SbRotation getRotation(const SbVec3f & point1,
00037 const SbVec3f & point2) = 0;
00038 void setCylinder(const SbCylinder & cyl);
00039 const SbCylinder & getCylinder(void) const;
00040 void setOrientToEye(const SbBool orienttoeye);
00041 SbBool isOrientToEye(void) const;
00042 void setFront(const SbBool infront);
00043 SbBool isFront(void) const;
00044 SbBool isPointInFront(const SbVec3f & point) const;
00045 virtual void setWorkingSpace(const SbMatrix & space);
00046
00047 protected:
00048 SbCylinderProjector(const SbBool orienttoeye);
00049 SbCylinderProjector(const SbCylinder & cylinder, const SbBool orienttoeye);
00050
00051 SbBool intersectCylinderFront(const SbLine & line, SbVec3f & result);
00052
00053 SbBool intersectFront;
00054 SbCylinder cylinder;
00055 SbBool orientToEye;
00056 SbBool needSetup;
00057 SbVec3f lastPoint;
00058 };
00059
00060 #endif // !COIN_SBCYLINDERPROJECTOR_H