ITK  4.8.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( );
102  virtual void GenerateOutputCells( );
103 
104  void SplitTriangleFromOneEdge( OutputMeshType * output, const OutputPointIdentifier * trianglePointIds, const OutputPointIdentifier * edgePointIds, const unsigned int * splitEdges );
105  void SplitTriangleFromTwoEdges( OutputMeshType * output, const OutputPointIdentifier * trianglePointIds, const OutputPointIdentifier * edgePointIds, const unsigned int * splitEdges );
106  void SplitTriangleFromThreeEdges( OutputMeshType * output, const OutputPointIdentifier * trianglePointIds, const OutputPointIdentifier * edgePointIds );
107 
108  void PrintSelf(std::ostream & os, Indent indent) const;
109 
111  bool m_Uniform;
112 
113 private:
114  TriangleCellSubdivisionQuadEdgeMeshFilter( const Self & ); // purposely not implemented
115  void operator=( const Self & ); // purposely not implemented
116 };
117 } // end namespace itk
118 
119 #ifndef ITK_MANUAL_INSTANTIATION
120 #include "itkTriangleCellSubdivisionQuadEdgeMeshFilter.hxx"
121 #endif
122 
123 #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 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
void PrintSelf(std::ostream &os, Indent indent) const
InputMeshType::CellsContainerConstIterator InputCellsContainerConstIterator
Superclass::OutputCellsContainerConstIterator OutputCellsContainerConstIterator
Abstract class to subdivide triangular surface QuadEdgeMesh.
OutputMeshType::CellsContainerConstIterator OutputCellsContainerConstIterator
InputMeshType::CellsContainerPointer InputCellsContainerPointer
OutputMeshType::CellsContainer OutputCellsContainer