OpenWalnut  1.5.0dev
WDataCreatorSphere.h
1 //---------------------------------------------------------------------------
2 //
3 // Project: OpenWalnut ( http://www.openwalnut.org )
4 //
5 // Copyright 2009 OpenWalnut Community, BSV@Uni-Leipzig and CNCF@MPI-CBS
6 // For more information see http://www.openwalnut.org/copying
7 //
8 // This file is part of OpenWalnut.
9 //
10 // OpenWalnut is free software: you can redistribute it and/or modify
11 // it under the terms of the GNU Lesser General Public License as published by
12 // the Free Software Foundation, either version 3 of the License, or
13 // (at your option) any later version.
14 //
15 // OpenWalnut is distributed in the hope that it will be useful,
16 // but WITHOUT ANY WARRANTY; without even the implied warranty of
17 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 // GNU Lesser General Public License for more details.
19 //
20 // You should have received a copy of the GNU Lesser General Public License
21 // along with OpenWalnut. If not, see <http://www.gnu.org/licenses/>.
22 //
23 //---------------------------------------------------------------------------
24 
25 #ifndef WDATACREATORSPHERE_H
26 #define WDATACREATORSPHERE_H
27 
28 #include <core/common/WObjectNDIP.h>
29 
30 #include "WDataSetSingleCreatorInterface.h"
31 
32 /**
33  * Creates a sphere inside a given grid. Only works on scalar fields.
34  */
35 class WDataCreatorSphere: public WObjectNDIP< WDataSetSingleCreatorInterface >
36 {
37 public:
38  /**
39  * Default constructor.
40  */
42 
43  /**
44  * Destructor.
45  */
46  virtual ~WDataCreatorSphere();
47 
48  /**
49  * Create the dataset. This needs to be implemented by all the creators you write. This method is designed to be applicable to all kinds of
50  * WDataSetSingle that use WValueSetBase. Your implementation does not need to support all types. If you do not support any order/dimension
51  * combination, throw an exception (like by using WAssert).
52  *
53  * \param order the tensor order of the values stored in this WValueSet
54  * \param dimension the tensor dimension of the values stored in this WValueSet
55  * \param progress the progress instance you should increment each time you fill the value for one voxel.
56  * \param grid the grid on which the value set has to be build
57  * \param type the value type in the value set
58  *
59  * \return the value set for the given grid
60  */
62  WGridRegular3D::ConstSPtr grid, unsigned char order = 0, unsigned char dimension = 1,
63  dataType type = W_DT_FLOAT );
64 
65 protected:
66 private:
67  /**
68  * Relative center coordinates
69  */
70  WPropPosition m_center;
71 
72  /**
73  * The radius of the sphere in relative coordinates.
74  */
75  WPropDouble m_radius;
76 
77  /**
78  * Clamp to 0 for all values below this one
79  */
80  WPropDouble m_lowerClamp;
81 
82  /**
83  * Clamp to 0 for all values above
84  */
85  WPropDouble m_upperClamp;
86 
87  /**
88  * To which value should be clamped?
89  */
90  WPropDouble m_lowerClampValue;
91 
92  /**
93  * To which value should be clamped?
94  */
95  WPropDouble m_upperClampValue;
96 };
97 
98 #endif // WDATACREATORSPHERE_H
99 
Creates a sphere inside a given grid.
WPropDouble m_lowerClampValue
To which value should be clamped?
WPropDouble m_upperClampValue
To which value should be clamped?
virtual ~WDataCreatorSphere()
Destructor.
WPropDouble m_upperClamp
Clamp to 0 for all values above.
WPropDouble m_lowerClamp
Clamp to 0 for all values below this one.
WDataCreatorSphere()
Default constructor.
WPropDouble m_radius
The radius of the sphere in relative coordinates.
WPropPosition m_center
Relative center coordinates.
virtual WValueSetBase::SPtr operator()(WProgress::SPtr progress, WGridRegular3D::ConstSPtr grid, unsigned char order=0, unsigned char dimension=1, dataType type=W_DT_FLOAT)
Create the dataset.
std::shared_ptr< const WGridRegular3DTemplate > ConstSPtr
Convenience typedef for a std::shared_ptr< const WGridRegular3DTemplate >.
This is a base class for everything which has a Name,Description,Icon and Properties (=NDIP).
Definition: WObjectNDIP.h:42
std::shared_ptr< WProgress > SPtr
Shared pointer on a WProgress.
Definition: WProgress.h:48
std::shared_ptr< WValueSetBase > SPtr
Shared pointer to an instance of this class.
Definition: WValueSetBase.h:65
dataType
Data types and number values taken from the nifti1.h, at this point it's unknown if it makes sense to...