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 #ifndef IMG_PIXEL_SAMPLING_H
00028 #define IMG_PIXEL_SAMPLING_H
00029
00030 #include <ost/img/module_config.hh>
00031 #include <ost/img/data_types.hh>
00032 #include "vecmat.hh"
00033
00034 #include <ost/message.hh>
00035
00036 namespace ost { namespace img {
00037
00038 class Extent;
00039 class Point;
00040
00041 class DLLEXPORT InvalidSampling: public Error {
00042 public:
00043 InvalidSampling():
00044 Error("invalid sampling value used, must be >0")
00045 {}
00046 };
00047
00049
00050
00051
00052
00053
00054
00055 class DLLEXPORT_OST_IMG_BASE PixelSampling {
00056 public:
00057 PixelSampling();
00058
00059 PixelSampling(const Vec3& spat_sampling, DataDomain d, const Extent& e);
00060
00061 const Vec3& GetPixelSampling() const;
00062 void SetPixelSampling(const Vec3&);
00063
00064 const Vec3& GetSpatialSampling() const;
00065 void SetSpatialSampling(const Vec3& d);
00066
00067 const Vec3& GetFrequencySampling() const;
00068 void SetFrequencySampling(const Vec3& d);
00069
00070 void SetDomain(DataDomain d);
00071 void SetExtent(const Extent& e);
00072
00073 Vec3 Point2Coord(const Point& p) const;
00074 Vec3 Coord2Point(const Vec3& c) const;
00075
00076 Vec3 Vec2Coord(const Vec3& p) const;
00077
00078 private:
00079 DataDomain dom_;
00080 Vec3 spat_scale_, i_spat_scale_;
00081 Vec3 freq_scale_, i_freq_scale_;
00082 Vec3 fac_;
00083
00084 void set_spat_scale(const Vec3& d);
00085 void set_freq_scale(const Vec3& d);
00086 };
00087
00088
00089 }}
00090
00091 #endif