source: Sophya/trunk/SophyaLib/Samba/pixelmap.h@ 508

Last change on this file since 508 was 473, checked in by ansari, 26 years ago

modifs francois : passage en double etc. 18-OCT-99

File size: 1.9 KB
RevLine 
[228]1#ifndef PIXELMAP_SEEN
2#define PIXELMAP_SEEN
3
4#include "ppersist.h"
5#include "dvlist.h"
6#include <iostream.h>
7
8// General map of pixels on part of sphere or whole sphere
9// Class hierarchy :
10// PixelMap
11// SphericalMap
12// SphereThetaPhi
13// SphereGorski
14// SphereIco
15// LocalMap
16
[470]17template<class T>
18class PixelMap
19{
[228]20
21public:
[470]22
23PixelMap():mInfo_(NULL) {};
24virtual ~PixelMap() {};
25
26// Number of pixels
[473]27virtual int NbPixels() const=0;
[228]28
[470]29// Value of pixel number k
[473]30virtual T& PixVal(int k)=0;
31virtual T const& PixVal(int k) const=0;
[228]32
[470]33// Index of pixel at (theta,phi)
[473]34virtual int PixIndexSph(double theta, double phi) const=0;
[228]35
[470]36// Value of pixel number at (theta,phi)
[473]37virtual T& PixValSph(double theta, double phi)
[228]38 {return PixVal(PixIndexSph(theta,phi));}
[473]39virtual T const& PixValSph(double theta, double phi) const
[470]40 {return PixVal(PixIndexSph(theta,phi));}
[228]41
[470]42// Spherical coordinates of center of pixel number k
[473]43virtual void PixThetaPhi(int k, double& theta, double& phi) const=0;
[228]44
[470]45// provides a integer characterizing the pixelization refinement
46// (depending of the type of the map)
[473]47virtual int SizeIndex() const=0;
[470]48virtual char* TypeOfMap() const =0;
[228]49
[470]50// Pixel (steradians)
[473]51virtual double PixSolAngle(int k) const =0;
[228]52
[470]53// Overloading of () to access pixel number k.
[473]54inline T& operator()(int k) {return(PixVal(k));}
55inline T const& operator()(int k) const {return(PixVal(k));}
[470]56
[473]57// Note : no overloading of (double,double) to access pixel (theta,phi).
58// overloading of (double,double) in SphericalMap
[470]59// overloading of (int,int) in CartesianMap
60
[228]61//++
[470]62DVList& Info()
[228]63//
[470]64// Renvoie une reference sur l''objet DVList Associe
[228]65//--
[470]66 {
67 if (mInfo_ == NULL) mInfo_ = new DVList;
68 return(*mInfo_);
69 }
[228]70
[470]71const DVList* ptrInfo() const
72 {
73 return mInfo_;
74 }
[228]75
[470]76protected :
77
78 DVList* mInfo_; // Infos (variables) attachees
[228]79};
80#endif
Note: See TracBrowser for help on using the repository browser.