00001
00002
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
00028
00029
00030
00031
00032
00033 #ifndef _VRJ_TRACKED_WALL_PROJECTION_H_
00034 #define _VRJ_TRACKED_WALL_PROJECTION_H_
00035
00036 #include <vrj/vrjConfig.h>
00037 #include <vrj/Display/SurfaceProjection.h>
00038 #include <vrj/Util/Debug.h>
00039 #include <gadget/Type/PositionInterface.h>
00040
00041
00042 namespace vrj
00043 {
00044
00045 class Matrix;
00046
00055 class TrackedSurfaceProjection : public SurfaceProjection
00056 {
00057 public:
00067 TrackedSurfaceProjection(const gmtl::Point3f& llCorner,
00068 const gmtl::Point3f& lrCorner,
00069 const gmtl::Point3f& urCorner,
00070 const gmtl::Point3f& ulCorner,
00071 const std::string& trackerName)
00072 : SurfaceProjection(llCorner, lrCorner, urCorner, ulCorner)
00073 , mOriginalLLCorner(llCorner)
00074 , mOriginalLRCorner(lrCorner)
00075 , mOriginalURCorner(urCorner)
00076 , mOriginalULCorner(ulCorner)
00077 {
00078
00079
00080 mTracker.init(trackerName);
00081 }
00082
00083 virtual ~TrackedSurfaceProjection()
00084 {
00085 ;
00086 }
00087
00088 virtual void config(jccl::ConfigElementPtr element)
00089 {
00090 Projection::config(element);
00091 }
00092
00100 virtual void calcViewMatrix(const gmtl::Matrix44f& eyePos,
00101 const float scaleFactor);
00102
00104 void updateSurfaceParams(const float scaleFactor);
00105
00106 std::ostream& outStream(std::ostream& out,
00107 const unsigned int indentLevel = 0);
00108
00109 private:
00115 gadget::PositionInterface mTracker;
00116
00123 gmtl::Point3f mOriginalLLCorner;
00124 gmtl::Point3f mOriginalLRCorner;
00125 gmtl::Point3f mOriginalURCorner;
00126 gmtl::Point3f mOriginalULCorner;
00128 };
00129
00130 }
00131
00132
00133 #endif