17 #ifndef __itkInteriorExteriorMeshFilter_txx
18 #define __itkInteriorExteriorMeshFilter_txx
22 #include "itkNumericTraits.h"
31 template <
class TInputMesh,
class TOutputMesh,
class TSpatialFunction>
35 m_SpatialFunction = SpatialFunctionType::New();
37 SpatialFunctionDataObjectType::New();
38 spatialFunctionObject->Set( m_SpatialFunction );
46 template <
class TInputMesh,
class TOutputMesh,
class TSpatialFunction>
51 Superclass::PrintSelf(os,indent);
52 os << indent << m_SpatialFunction << std::endl;
59 template <
class TInputMesh,
class TOutputMesh,
class TSpatialFunction>
65 typedef typename TInputMesh::PointsContainer InputPointsContainer;
66 typedef typename TOutputMesh::PointsContainer OutputPointsContainer;
68 typedef typename TInputMesh::PointsContainerConstPointer InputPointsContainerConstPointer;
69 typedef typename TOutputMesh::PointsContainerPointer OutputPointsContainerPointer;
71 typedef typename TInputMesh::PointDataContainer InputPointDataContainer;
72 typedef typename TOutputMesh::PointDataContainer OutputPointDataContainer;
74 typedef typename TInputMesh::PointDataContainerConstPointer InputPointDataContainerConstPointer;
75 typedef typename TOutputMesh::PointDataContainerPointer OutputPointDataContainerPointer;
96 outputMesh->SetBufferedRegion( outputMesh->GetRequestedRegion() );
98 InputPointsContainerConstPointer inPoints = inputMesh->GetPoints();
99 InputPointDataContainerConstPointer inData = inputMesh->GetPointData();
101 typename InputPointsContainer::ConstIterator inputPoint = inPoints->Begin();
102 typename InputPointDataContainer::ConstIterator inputData;
104 bool inputDataExists =
false;
107 inputDataExists =
true;
110 if( inputDataExists )
112 inputData = inData->Begin();
118 typedef typename TSpatialFunction::OutputType ValueType;
120 typedef typename TOutputMesh::PointIdentifier PointIdType;
121 PointIdType pointId = NumericTraits< PointIdType >::Zero;
123 while( inputPoint != inPoints->End() )
125 ValueType value = m_SpatialFunction->Evaluate( inputPoint.Value() );
129 outputMesh->SetPoint( pointId, inputPoint.Value() );
130 if( inputDataExists )
132 outputMesh->SetPointData( pointId, inputData.Value() );
138 if( inputDataExists )
146 this->CopyInputMeshToOutputMeshCellLinks();
147 this->CopyInputMeshToOutputMeshCells();
148 this->CopyInputMeshToOutputMeshCellData();
150 unsigned int maxDimension = TInputMesh::MaxTopologicalDimension;
152 for(
unsigned int dim = 0; dim < maxDimension; dim++ )
154 outputMesh->SetBoundaryAssignments( dim,
155 inputMesh->GetBoundaryAssignments(dim) );