/VectorField2D.h

http://nscow.googlecode.com/ · C Header · 64 lines · 42 code · 16 blank · 6 comment · 0 complexity · fd891d5d419280ee829bbab6ad948b91 MD5 · raw file

  1. /*
  2. * VectorField2D.h
  3. *
  4. * Created on: Apr 25, 2010
  5. * Author: wto
  6. */
  7. #ifndef VECTORFIELD2D_H_
  8. #define VECTORFIELD2D_H_
  9. class VectorField2D {
  10. public:
  11. VectorField2D(int xdim, int ydim, double boundryScale = 1, double* data = 0);
  12. ~VectorField2D();
  13. VectorField2D(const VectorField2D&);
  14. VectorField2D& operator=(const VectorField2D&);
  15. double& value(int x, int y, int k);
  16. double value(int x, int y, int k) const;
  17. double checkBoundry(int x, int y, int k) const;
  18. void print() const;
  19. double *begin() const;
  20. double *end() const;
  21. int size() const;
  22. double min() const;
  23. double max() const;
  24. double mean() const;
  25. void fill(double val);
  26. const int xdim;
  27. const int ydim;
  28. private:
  29. double *itsData;
  30. bool ownsData;
  31. double itsBoundryScale;
  32. };
  33. inline double *VectorField2D::begin() const {
  34. return itsData;
  35. }
  36. inline double *VectorField2D::end() const {
  37. return itsData+size();
  38. }
  39. inline int VectorField2D::size() const {
  40. return 2*xdim*ydim;
  41. }
  42. inline double& VectorField2D::value(int x, int y, int k) {
  43. return itsData[(k * xdim * ydim) + (y * xdim) + x];
  44. }
  45. inline double VectorField2D::value(int x, int y, int k) const {
  46. return itsData[(k * xdim * ydim) + (y * xdim) + x];
  47. }
  48. #endif /* VECTORFIELD2D_H_ */