source: tags/release-1.1.7/src/PixelMap/Voxel.cc @ 1455

Last change on this file since 1455 was 528, checked in by MatthewWhiting, 15 years ago

Changing the documentation comments to match the askapsoft style. Also have split ChanMap? and Object3D into separate files.

File size: 4.2 KB
Line 
1// -----------------------------------------------------------------------
2// Voxel.cc: Member functions for the Voxel class.
3// -----------------------------------------------------------------------
4// Copyright (C) 2006, Matthew Whiting, ATNF
5//
6// This program is free software; you can redistribute it and/or modify it
7// under the terms of the GNU General Public License as published by the
8// Free Software Foundation; either version 2 of the License, or (at your
9// option) any later version.
10//
11// Duchamp is distributed in the hope that it will be useful, but WITHOUT
12// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13// FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14// for more details.
15//
16// You should have received a copy of the GNU General Public License
17// along with Duchamp; if not, write to the Free Software Foundation,
18// Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
19//
20// Correspondence concerning Duchamp may be directed to:
21//    Internet email: Matthew.Whiting [at] atnf.csiro.au
22//    Postal address: Dr. Matthew Whiting
23//                    Australia Telescope National Facility, CSIRO
24//                    PO Box 76
25//                    Epping NSW 1710
26//                    AUSTRALIA
27// -----------------------------------------------------------------------
28#include <iostream>
29#include <iomanip>
30#include <duchamp/PixelMap/Voxel.hh>
31
32namespace PixelInfo
33{
34
35  Voxel::Voxel(long x, long y, long z, float f)
36  {
37    this->itsX=x;
38    this->itsY=y;
39    this->itsZ=z;
40    this->itsF=f;
41  }
42  //--------------------------------------------------------------------
43
44  Voxel::Voxel(const Voxel& v)
45  {
46    operator=(v);
47  }
48  //--------------------------------------------------------------------
49
50  Voxel& Voxel::operator= (const Voxel& v)
51  {
52    if(this == &v) return *this;
53    this->itsX=v.itsX;
54    this->itsY=v.itsY;
55    this->itsZ=v.itsZ;
56    this->itsF=v.itsF;
57    return *this;
58  }
59  //--------------------------------------------------------------------
60
61  std::ostream& operator<< ( std::ostream& theStream, Voxel& vox)
62  {
63    /// A convenient way of printing the coordinate and flux values of
64    /// a voxel.  They are all printed to a single line (with no
65    /// carriage-return), with the flux to precision of 4.
66
67    theStream << std::setw(4) << vox.itsX ;
68    theStream << " " << std::setw(4) << vox.itsY;
69    theStream << " " << std::setw(4) << vox.itsZ;
70    theStream << std::setprecision(4);
71    theStream << "  " << vox.itsF;
72    return theStream;
73
74  }
75  //------------------------------------------------------
76
77  bool operator== (Voxel lhs, Voxel rhs)
78  {
79    /// For two voxels to be equal, all four parameters must be equal.
80
81    return (lhs.itsX == rhs.itsX) &&
82      (lhs.itsY == rhs.itsY) &&
83      (lhs.itsZ == rhs.itsZ) &&
84      (lhs.itsF == rhs.itsF);
85  }
86  //------------------------------------------------------
87
88  bool Voxel::match(Voxel other)
89  {
90    /// This function just tests for equality of position. The flux is ignored.
91
92    return (this->itsX == other.itsX) &&
93      (this->itsY == other.itsY) &&
94      (this->itsZ == other.itsZ);
95  }
96  //--------------------------------------------------------------------
97
98  long Voxel::arrayIndex(long *dim)
99  {
100    ///  Return the index value corresponding to the Voxel for an array with dimensions given by dim.
101    ///  \param dim Array of dimension values (ie. lengths of x, y and z dimensions)
102    ///  \return Index value for an array with dimensions of dim
103
104    long ind = itsX + dim[0]*itsY + dim[0]*dim[1]*itsZ;
105    return ind;
106
107  }
108
109  //--------------------------------------------------------------------
110  //--------------------------------------------------------------------
111
112  Pixel::Pixel(long x, long y, float f)
113  {
114    this->itsX=x;
115    this->itsY=y;
116    this->itsF=f;
117  }
118  //--------------------------------------------------------------------
119
120  Pixel::Pixel(const Pixel& p)
121  {
122    operator=(p);
123  }
124  //--------------------------------------------------------------------
125
126  Pixel& Pixel::operator= (const Pixel& p)
127  {
128    if(this == &p) return *this;
129    this->itsX=p.itsX;
130    this->itsY=p.itsY;
131    this->itsF=p.itsF;
132    return *this;
133  }
134  //--------------------------------------------------------------------
135
136}
Note: See TracBrowser for help on using the repository browser.