00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef _SPHERICMIRRORCALCULATOR_HPP_
00022 #define _SPHERICMIRRORCALCULATOR_HPP_
00023
00024 #include "VecMath.hpp"
00025
00026 class QSettings;
00027
00028 class SphericMirrorCalculator {
00029 public:
00030 SphericMirrorCalculator(const QSettings& conf);
00031 float getHorzZoomFactor() const {return horzZoomFactor;}
00032 float getVertZoomFactor() const {return vertZoomFactor;}
00033 bool transform(const Vec3f &v,float &x,float &y) const;
00034 bool retransform(float x,float y,Vec3f &v) const;
00035
00036 bool retransform(float x,float y, Vec3f& v, Vec3f& vX, Vec3f& vY) const;
00037 private:
00038 void initRotMatrix(float alpha,float delta,float phi);
00039 private:
00040 Vec3f P;
00041 Vec3f DomeCenter;
00042 float DomeRadius;
00043 float PP;
00044 float lP;
00045 Vec3f p;
00046 float horzZoomFactor;
00047 float vertZoomFactor;
00048 float alphaDeltaPhi[9];
00049 };
00050
00051 #endif // _SPHERICMIRRORCALCULATOR_HPP_