17 #ifndef __itkSpatialObjectToPointSetFilter_txx
18 #define __itkSpatialObjectToPointSetFilter_txx
26 template <
class TInputSpatialObject,
class TOutputPo
intSet>
30 this->SetNumberOfRequiredInputs(1);
36 template <
class TInputSpatialObject,
class TOutputPo
intSet>
44 template <
class TInputSpatialObject,
class TOutputPo
intSet>
51 const_cast< InputSpatialObjectType * >( input ) );
56 template <
class TInputSpatialObject,
class TOutputPo
intSet>
59 ::SetInput(
unsigned int index,
const TInputSpatialObject *
object )
63 const_cast< TInputSpatialObject *>(
object ) );
68 template <
class TInputSpatialObject,
class TOutputPo
intSet>
73 if (this->GetNumberOfInputs() < 1)
78 return static_cast<const TInputSpatialObject *
>
83 template <
class TInputSpatialObject,
class TOutputPo
intSet>
88 return static_cast< const TInputSpatialObject *
>
94 template <
class TInputSpatialObject,
class TOutputPo
intSet>
99 itkDebugMacro(<<
"SpatialObjectToPointSetFilter::Update() called");
103 typename OutputPointSetType::Pointer outputPointSet = this->GetOutput();
106 unsigned long numberOfPoints = 0;
107 if(dynamic_cast<const PointBasedSpatialObjectType*>(inputObject))
113 typename ChildrenListType::const_iterator it = children->begin();
115 for(;it!=children->end();it++)
117 if(dynamic_cast<const PointBasedSpatialObjectType*>((*it).GetPointer()))
123 typedef typename OutputPointSetType::PointDataContainer DataContainer;
124 outputPointSet->SetPointData( DataContainer::New());
126 outputPointSet->GetPoints()->Reserve( numberOfPoints );
127 outputPointSet->GetPointData()->Reserve( numberOfPoints );
129 typename OutputPointSetType::PointIdentifier pointId = 0;
130 typename OutputPointSetType::PointType point;
134 if(dynamic_cast<const PointBasedSpatialObjectType*>(inputObject))
137 for(
unsigned int i=0;i<n;i+=m_SamplingFactor)
139 typename InputSpatialObjectType::PointType transformedPoint
141 dynamic_cast<const PointBasedSpatialObjectType*>(inputObject)->GetPoint(i)->GetPosition());
143 for(
unsigned int j=0;j< itkGetStaticConstMacro(ObjectDimension); j++)
145 point[j] = transformedPoint[j];
147 outputPointSet->SetPoint(pointId++, point );
152 it = children->begin();
154 for(;it!=children->end();it++)
156 if(dynamic_cast<const PointBasedSpatialObjectType*>((*it).GetPointer()))
159 for(
unsigned int i=0;i<n;i+=m_SamplingFactor)
161 typename InputSpatialObjectType::PointType transformedPoint
164 for(
unsigned int j=0;j< itkGetStaticConstMacro(ObjectDimension); j++)
166 point[j] = transformedPoint[j];
168 outputPointSet->SetPoint(pointId++, point );
175 itkDebugMacro(<<
"SpatialObjectToPointSetFilter::Update() finished");
180 template<
class TInputSpatialObject,
class TOutputPo
intSet>
185 Superclass::PrintSelf(os, indent);
186 os << indent <<
"Children depth : " << m_ChildrenDepth << std::endl;
187 os << indent <<
"Sampling Factor : " << m_SamplingFactor << std::endl;