source: Sophya/trunk/SophyaLib/SkyMap/localmap.h@ 1383

Last change on this file since 1383 was 1217, checked in by ansari, 25 years ago

doc dans les .cc

File size: 4.1 KB
Line 
1// This may look like C code, but it is really -*- C++ -*-
2#ifndef LOCALMAP_SEEN
3#define LOCALMAP_SEEN
4
5#include "pixelmap.h"
6#include "sphericalmap.h"
7#include "ndatablock.h"
8
9#include "anydataobj.h"
10#include "ppersist.h"
11
12
13
14// ***************** Class LocalMap *****************************
15
16
17
18namespace SOPHYA {
19
20
21/* Class LocalMap */
22
23
24template<class T>
25class LocalMap : public PixelMap<T>
26{
27
28public:
29
30LocalMap();
31LocalMap(int_4 nx, int_4 ny);
32LocalMap(const LocalMap<T>& lm, bool share);
33LocalMap(const LocalMap<T>& lm);
34virtual ~LocalMap();
35
36inline virtual bool IsTemp(void) const { return pixels_.IsTemp();}
37
38/*! Setting blockdata to temporary (see ndatablock documentation) */
39inline virtual void SetTemp(bool temp=false) const {pixels_.SetTemp(temp);};
40
41
42// ---------- Overloading of () to access pixel number k ----
43
44inline T& operator()(int_4 k) {return(PixVal(k));}
45inline T const& operator()(int_4 k) const {return(PixVal(k));}
46inline T& operator()(int_4 ix, int_4 iy) {return PixVal(iy*nSzX_+ix);};
47inline T const& operator()(int_4 ix, int_4 iy) const {return PixVal(iy*nSzX_+ix);};
48
49// ---------- Definition of PixelMap abstract methods -------
50
51virtual int_4 NbPixels() const; // D.Y. int change en int_4 rationalisation Mac
52
53virtual T& PixVal(int_4 k);
54virtual T const& PixVal(int_4 k) const;
55
56virtual bool ContainsSph(double theta, double phi) const;
57virtual int_4 PixIndexSph(double theta,double phi) const;
58
59virtual void PixThetaPhi(int_4 k,double& theta,double& phi) const;
60
61virtual T SetPixels(T v);
62
63virtual double PixSolAngle(int_4 k) const;
64
65// ---------- Specific methods ------------------------------
66
67void ReSize(int_4 nx, int_4 ny);
68
69inline virtual char* TypeOfMap() const {return "LOCAL";};
70
71virtual void SetOrigin(double theta=90.,double phi=0.,double angle=0.);
72virtual void SetOrigin(double theta,double phi,int_4 x0,int_4 y0,double angle=0.);
73
74virtual void SetSize(double angleX,double angleY);
75
76/*! Check to see if the local mapping is done */
77inline bool LocalMap_isDone() const {return(originFlag_ && extensFlag_);};
78
79virtual void Project(SphericalMap<T>& sphere) const;
80
81/* There should be a more complex algorithm somewhere to combine *several* local maps to a full sphere.
82 -> static method, or separate class */
83
84/*! provides a integer characterizing the pixelization refinement (here : number of pixels) */
85inline virtual int_4 SizeIndex() const {return(nPix_);}
86inline int_4 Size_x() const {return nSzX_;}
87inline int_4 Size_y() const {return nSzY_;}
88
89/* Je rajoute ces 2 fonctions inlines pour compatibilite d'interface
90 avec TArray - Reza 30/8/2000 */
91inline int_4 SizeX() const {return nSzX_;}
92inline int_4 SizeY() const {return nSzY_;}
93
94inline void Origin(double& theta,double& phi,int_4& x0,int_4& y0,double& angle) const {theta= theta0_; phi= phi0_; x0= x0_; y0= y0_;angle= angle_;}
95
96inline void Aperture(double& anglex,double& angley) const {anglex= angleX_; angley= angleY_;}
97
98
99/* Acces to the DataBlock */
100inline NDataBlock<T>& DataBlock() {return pixels_;}
101inline const NDataBlock<T>& DataBlock() const {return pixels_;}
102
103/* impression */
104void print(ostream& os) const;
105
106inline LocalMap<T>& operator = (const LocalMap<T>& a) {return Set(a);}
107
108
109
110// ---------- Méthodes internes -----------------------------
111
112private :
113
114void InitNul();
115void Getij(int_4 k,int_4& i,int_4& j) const;
116void ReferenceToUser(double& theta,double& phi) const;
117void UserToReference(double& theta,double& phi) const;
118void PixProjToAngle(double x,double y,double& theta,double& phi) const;
119void AngleProjToPix(double theta,double phi,double& x,double& y) const;
120
121void recopierVariablesSimples(const LocalMap<T>& lm);
122LocalMap<T>& Set(const LocalMap<T>& a);
123void CloneOrShare(const LocalMap<T>& a);
124 LocalMap<T>& CopyElt(const LocalMap<T>& a);
125
126
127// ---------- Variables internes ----------------------------
128
129int_4 nSzX_;
130int_4 nSzY_;
131int_4 nPix_;
132bool originFlag_;
133bool extensFlag_;
134int_4 x0_;
135int_4 y0_;
136double theta0_;
137double phi0_;
138double angle_;
139double cos_angle_;
140double sin_angle_;
141double angleX_;
142double angleY_;
143double tgAngleX_;
144double tgAngleY_;
145NDataBlock<T> pixels_;
146};
147
148
149
150} // Fin du namespace
151
152#endif
Note: See TracBrowser for help on using the repository browser.