Changeset 1419 in Sophya for trunk/SophyaLib/SkyMap/spherehealpix.h
- Timestamp:
- Feb 23, 2001, 12:26:48 PM (25 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaLib/SkyMap/spherehealpix.h
r1217 r1419 127 127 128 128 129 130 131 132 133 134 // Operations diverses = , +=, ... 135 136 137 SphereHEALPix<T>& Set(const SphereHEALPix<T>& a); 129 138 inline SphereHEALPix<T>& operator = (const SphereHEALPix<T>& a) 130 139 {return Set(a);} 131 140 141 // A += -= *= /= x (ajoute, soustrait, ... x a tous les elements) 142 143 //! Fill SphereHEALPix with all elements equal to \b x 144 virtual SphereHEALPix<T>& SetT(T a); 145 inline SphereHEALPix<T>& operator = (T a) {return SetT(a);} 146 147 //! Add \b x to all elements 148 virtual SphereHEALPix<T>& Add(T a); 149 inline SphereHEALPix<T>& operator += (T x) { return Add(x); } 150 //! Substract \b x to all elements 151 virtual SphereHEALPix<T>& Sub(T a); 152 inline SphereHEALPix<T>& operator -= (T x) { return Sub(x); } 153 //! Multiply all elements by \b x 154 virtual SphereHEALPix<T>& Mul(T a); 155 inline SphereHEALPix<T>& operator *= (T x) { return Mul(x); } 156 //! Divide all elements by \b x 157 virtual SphereHEALPix<T>& Div(T a); 158 inline SphereHEALPix<T>& operator /= (T x) { return Div(x); } 159 160 // A += -= (ajoute, soustrait element par element les deux spheres ) 161 //! Operator SphereHEALPix += SphereHEALPix 162 virtual SphereHEALPix<T>& AddElt(const SphereHEALPix<T>& a); 163 inline SphereHEALPix<T>& operator += (const SphereHEALPix<T>& a) { return AddElt(a); } 164 165 166 167 virtual SphereHEALPix<T>& SubElt(const SphereHEALPix<T>& a); 168 //! Operator SphereHEALPix -= SphereHEALPix 169 inline SphereHEALPix<T>& operator -= (const SphereHEALPix<T>& a) { return SubElt(a); } 170 // Multiplication, division element par element les deux SphereHEALPix 171 virtual SphereHEALPix<T>& MulElt(const SphereHEALPix<T>& a); 172 inline SphereHEALPix<T>& operator *= (const SphereHEALPix<T>& a) { return MulElt(a); } 173 174 132 175 void CloneOrShare(const SphereHEALPix<T>& a); 133 SphereHEALPix<T>& Set(const SphereHEALPix<T>& a);176 void Share(const SphereHEALPix<T>& a); 134 177 SphereHEALPix<T>& CopyElt(const SphereHEALPix<T>& a); 135 178 … … 164 207 }; 165 208 166 209 //////////////////////////////////////////////////////////////// 210 // Surcharge d'operateurs A (+,-,*,/) (T) x 211 /*! \ingroup SphereHEALPix \fn operator+(const SphereHEALPix<T>&,T) 212 \brief Operator SphereHEALPix = SphereHEALPix + constant */ 213 template <class T> inline SphereHEALPix<T> operator + (const SphereHEALPix<T>& a, T b) 214 {SphereHEALPix<T> result; result.CloneOrShare(a); result.SetTemp(true); 215 result.Add(b); return result;} 216 /*! \ingroup SphereHEALPix \fn operator+(T,const SphereHEALPix<T>&) 217 \brief Operator SphereHEALPix = constant + SphereHEALPix */ 218 template <class T> inline SphereHEALPix<T> operator + (T b,const SphereHEALPix<T>& a) 219 {SphereHEALPix<T> result; result.CloneOrShare(a); result.SetTemp(true); 220 result.Add(b); return result;} 221 222 223 /*! \ingroup SphereHEALPix\fn operator-(const SphereHEALPix<T>&,T) 224 \brief Operator SphereHEALPix = SphereHEALPix - constant */ 225 template <class T> inline SphereHEALPix<T> operator - (const SphereHEALPix<T>& a, T b) 226 {SphereHEALPix<T> result; result.CloneOrShare(a); result.SetTemp(true); 227 result.Sub(b); return result;} 228 229 /*! \ingroup \fn operator-(T,const SphereHEALPix<T>&) 230 \brief Operator SphereHEALPix = constant - SphereHEALPix */ 231 template <class T> inline SphereHEALPix<T> operator - (T b,const SphereHEALPix<T>& a) 232 {SphereHEALPix<T> result; result.CloneOrShare(a); result.SetTemp(true); 233 result.Sub(b,true); return result;} 234 235 /*! \ingroup SphereHEALPix \fn operator*(const SphereHEALPix<T>&,T) 236 \brief Operator SphereHEALPix = SphereHEALPix * constant */ 237 template <class T> inline SphereHEALPix<T> operator * (const SphereHEALPix<T>& a, T b) 238 {SphereHEALPix<T> result; result.CloneOrShare(a); result.SetTemp(true); 239 result.Mul(b); return result;} 240 241 /*! \ingroup SphereHEALPix \fn operator*(T,const SphereHEALPix<T>&) 242 \brief Operator SphereHEALPix = constant * SphereHEALPix */ 243 template <class T> inline SphereHEALPix<T> operator * (T b,const SphereHEALPix<T>& a) 244 {SphereHEALPix<T> result; result.CloneOrShare(a); result.SetTemp(true); 245 result.Mul(b); return result;} 246 247 /*! \ingroup SphereHEALPix \fn operator/(const SphereHEALPix<T>&,T) 248 \brief Operator SphereHEALPix = SphereHEALPix / constant */ 249 template <class T> inline SphereHEALPix<T> operator / (const SphereHEALPix<T>& a, T b) 250 {SphereHEALPix<T> result; result.CloneOrShare(a); result.SetTemp(true); 251 result.Div(b); return result;} 252 253 /*! \ingroup SphereHEALPix \fn operator/(T,const SphereHEALPix<T>&) 254 \brief Operator SphereHEALPix = constant / SphereHEALPix */ 255 template <class T> inline SphereHEALPix<T> operator / (T b, const SphereHEALPix<T>& a) 256 {SphereHEALPix<T> result; result.CloneOrShare(a); result.SetTemp(true); 257 result.Div(b, true); return result;} 258 259 //////////////////////////////////////////////////////////////// 260 // Surcharge d'operateurs C = A (+,-) B 261 262 /*! \ingroup SphereHEALPix \fn operator+(const SphereHEALPix<T>&,const SphereHEALPix<T>&) 263 \brief Operator SphereHEALPix = SphereHEALPix + SphereHEALPix */ 264 template <class T> 265 inline SphereHEALPix<T> operator + (const SphereHEALPix<T>& a,const SphereHEALPix<T>& b) 266 { SphereHEALPix<T> result; result.SetTemp(true); 267 if (b.IsTemp()) { result.Share(b); result.AddElt(a); } 268 else { result.CloneOrShare(a); result.AddElt(b); } 269 return result; } 270 271 /*! \ingroup SphereHEALPix \fn operator-(const SphereHEALPix<T>&,const SphereHEALPix<T>&) 272 \brief Operator SphereHEALPix = SphereHEALPix - SphereHEALPix */ 273 template <class T> 274 inline SphereHEALPix<T> operator - (const SphereHEALPix<T>& a,const SphereHEALPix<T>& b) 275 { SphereHEALPix<T> result; result.SetTemp(true); 276 if (b.IsTemp()) { result.Share(b); result.SubElt(a, true); } 277 else { result.CloneOrShare(a); result.SubElt(b); } 278 return result; } 167 279 168 280 } // Fin du namespace
Note:
See TracChangeset
for help on using the changeset viewer.