ITK  4.9.0
Insight Segmentation and Registration Toolkit
itkTriangleCellSubdivisionQuadEdgeMeshFilter.h
Go to the documentation of this file.
1 /*=========================================================================
2  *
3  * Copyright Insight Software Consortium
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0.txt
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  *=========================================================================*/
18 
19 #ifndef itkTriangleCellSubdivisionQuadEdgeMeshFilter_h
20 #define itkTriangleCellSubdivisionQuadEdgeMeshFilter_h
21 
23 
24 namespace itk
25 {
38 template< typename TInputMesh, typename TOutputMesh >
40  public SubdivisionQuadEdgeMeshFilter< TInputMesh, TOutputMesh >
41 {
42 public:
47 
67 
84 
85  typedef std::list< OutputCellIdentifier > SubdivisionCellContainer;
86  typedef typename SubdivisionCellContainer::const_iterator SubdivisionCellContainerConstIterator;
87 
90  itkGetConstReferenceMacro( CellsToBeSubdivided, SubdivisionCellContainer );
92 
93  void SetCellsToBeSubdivided( const SubdivisionCellContainer & cellIdList );
95 
96 protected:
99 
100  virtual void AddNewCellPoints( InputCellType *cell ) = 0;
101  virtual void GenerateOutputPoints() ITK_OVERRIDE;
102  virtual void GenerateOutputCells() ITK_OVERRIDE;
103 
105  const OutputPointIdentifier * trianglePointIds,
106  const OutputPointIdentifier * edgePointIds,
107  const unsigned int * splitEdges );
109  const OutputPointIdentifier * trianglePointIds,
110  const OutputPointIdentifier * edgePointIds,
111  const unsigned int * splitEdges );
113  const OutputPointIdentifier * trianglePointIds,
114  const OutputPointIdentifier * edgePointIds );
115 
116  void PrintSelf(std::ostream & os, Indent indent) const ITK_OVERRIDE;
117 
119  bool m_Uniform;
120 
121 private:
122  TriangleCellSubdivisionQuadEdgeMeshFilter( const Self & ); // purposely not implemented
123  void operator=( const Self & ); // purposely not implemented
124 };
125 } // end namespace itk
126 
127 #ifndef ITK_MANUAL_INSTANTIATION
128 #include "itkTriangleCellSubdivisionQuadEdgeMeshFilter.hxx"
129 #endif
130 
131 #endif
void AddSubdividedCellId(OutputCellIdentifier cellId)
InputMeshType::PointIdIterator InputPointIdIterator
Light weight base class for most itk classes.
InputMeshType::PointsContainerIterator InputPointsContainerIterator
OutputMeshType::PointsContainerIterator OutputPointsContainerIterator
Abstract base class for itk::QuadEdgeMesh subdivision.
void SplitTriangleFromThreeEdges(OutputMeshType *output, const OutputPointIdentifier *trianglePointIds, const OutputPointIdentifier *edgePointIds)
Superclass::InputCellsContainerConstIterator InputCellsContainerConstIterator
InputMeshType::PointsContainerPointer InputPointsContainerPointer
void PrintSelf(std::ostream &os, Indent indent) const override
void SetCellsToBeSubdivided(const SubdivisionCellContainer &cellIdList)
OutputMeshType::PointIdIterator OutputPointIdIterator
SubdivisionQuadEdgeMeshFilter< TInputMesh, TOutputMesh > Superclass
Superclass::InputPointsContainerConstIterator InputPointsContainerConstIterator
void SplitTriangleFromTwoEdges(OutputMeshType *output, const OutputPointIdentifier *trianglePointIds, const OutputPointIdentifier *edgePointIds, const unsigned int *splitEdges)
OutputMeshType::PointIdentifier OutputPointIdentifier
InputMeshType::PointsContainer InputPointsContainer
OutputMeshType::PointsContainerPointer OutputPointsContainerPointer
OutputMeshType::CellsContainerPointer OutputCellsContainerPointer
SubdivisionCellContainer::const_iterator SubdivisionCellContainerConstIterator
InputMeshType::CellsContainerIterator InputCellsContainerIterator
void SplitTriangleFromOneEdge(OutputMeshType *output, const OutputPointIdentifier *trianglePointIds, const OutputPointIdentifier *edgePointIds, const unsigned int *splitEdges)
InputMeshType::PointsContainerConstIterator InputPointsContainerConstIterator
OutputMeshType::CellsContainerIterator OutputCellsContainerIterator
OutputMeshType::CellIdentifier OutputCellIdentifier
Control indentation during Print() invocation.
Definition: itkIndent.h:49
virtual void AddNewCellPoints(InputCellType *cell)=0
InputMeshType::PointIdentifier InputPointIdentifier
InputMeshType::CellsContainerConstIterator InputCellsContainerConstIterator
Superclass::OutputCellsContainerConstIterator OutputCellsContainerConstIterator
Abstract class to subdivide triangular surface QuadEdgeMesh.
OutputMeshType::CellsContainerConstIterator OutputCellsContainerConstIterator
InputMeshType::CellsContainerPointer InputCellsContainerPointer
OutputMeshType::CellsContainer OutputCellsContainer