ITK  5.0.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:
43  ITK_DISALLOW_COPY_AND_ASSIGN(TriangleCellSubdivisionQuadEdgeMeshFilter);
44 
49 
69 
86 
87  using SubdivisionCellContainer = std::list< OutputCellIdentifier >;
88  using SubdivisionCellContainerConstIterator = typename SubdivisionCellContainer::const_iterator;
89 
92  itkGetConstReferenceMacro( CellsToBeSubdivided, SubdivisionCellContainer );
94 
95  void SetCellsToBeSubdivided( const SubdivisionCellContainer & cellIdList );
97 
98 protected:
101 
102  virtual void AddNewCellPoints( InputCellType *cell ) = 0;
103  void GenerateOutputPoints() override;
104  void GenerateOutputCells() override;
105 
107  const OutputPointIdentifier * trianglePointIds,
108  const OutputPointIdentifier * edgePointIds,
109  const unsigned int * splitEdges );
111  const OutputPointIdentifier * trianglePointIds,
112  const OutputPointIdentifier * edgePointIds,
113  const unsigned int * splitEdges );
115  const OutputPointIdentifier * trianglePointIds,
116  const OutputPointIdentifier * edgePointIds );
117 
118  void PrintSelf(std::ostream & os, Indent indent) const override;
119 
121  bool m_Uniform;
122 };
123 } // end namespace itk
124 
125 #ifndef ITK_MANUAL_INSTANTIATION
126 #include "itkTriangleCellSubdivisionQuadEdgeMeshFilter.hxx"
127 #endif
128 
129 #endif
void AddSubdividedCellId(OutputCellIdentifier cellId)
typename InputMeshType::CoordRepType InputCoordRepType
typename InputMeshType::CellsContainer InputCellsContainer
typename OutputMeshType::PointsContainerIterator OutputPointsContainerIterator
Light weight base class for most itk classes.
TOutputMesh OutputMeshType
Definition: itkMeshSource.h:68
Abstract base class for itk::QuadEdgeMesh subdivision.
typename InputMeshType::PointType InputPointType
void SplitTriangleFromThreeEdges(OutputMeshType *output, const OutputPointIdentifier *trianglePointIds, const OutputPointIdentifier *edgePointIds)
typename InputMeshType::PointIdentifier InputPointIdentifier
typename OutputMeshType::CoordRepType OutputCoordType
typename OutputMeshType::PointIdIterator OutputPointIdIterator
typename OutputMeshType::CellType OutputCellType
typename InputMeshType::ConstPointer InputMeshConstPointer
void PrintSelf(std::ostream &os, Indent indent) const override
void SetCellsToBeSubdivided(const SubdivisionCellContainer &cellIdList)
typename OutputMeshType::PointsContainerIterator OutputPointsContainerIterator
typename OutputMeshType::PointIdentifier OutputPointIdentifier
typename InputMeshType::CoordRepType InputCoordType
typename InputMeshType::PointsContainer InputPointsContainer
typename OutputMeshType::CellsContainerIterator OutputCellsContainerIterator
typename OutputMeshType::CoordRepType OutputCoordRepType
typename InputMeshType::Pointer InputMeshPointer
typename InputMeshType::ConstPointer InputMeshConstPointer
typename InputMeshType::CellsContainerIterator InputCellsContainerIterator
typename InputMeshType::PointsContainerConstIterator InputPointsContainerConstIterator
void SplitTriangleFromTwoEdges(OutputMeshType *output, const OutputPointIdentifier *trianglePointIds, const OutputPointIdentifier *edgePointIds, const unsigned int *splitEdges)
typename InputMeshType::PointsContainerConstIterator InputPointsContainerConstIterator
typename OutputMeshType::Pointer OutputMeshPointer
typename OutputMeshType::CellsContainerPointer OutputCellsContainerPointer
typename InputMeshType::PointIdentifier InputPointIdentifier
typename InputMeshType::Pointer InputMeshPointer
typename OutputMeshType::Pointer OutputMeshPointer
Definition: itkMeshSource.h:69
typename InputMeshType::CellType InputCellType
void SplitTriangleFromOneEdge(OutputMeshType *output, const OutputPointIdentifier *trianglePointIds, const OutputPointIdentifier *edgePointIds, const unsigned int *splitEdges)
typename SubdivisionCellContainer::const_iterator SubdivisionCellContainerConstIterator
typename InputMeshType::CellsContainerPointer InputCellsContainerPointer
typename OutputMeshType::PointIdentifier OutputPointIdentifier
typename OutputMeshType::PointsContainerPointer OutputPointsContainerPointer
typename InputMeshType::CellsContainerConstIterator InputCellsContainerConstIterator
typename InputMeshType::PointsContainerPointer InputPointsContainerPointer
Control indentation during Print() invocation.
Definition: itkIndent.h:49
typename InputMeshType::PointsContainerIterator InputPointsContainerIterator
typename OutputMeshType::MeshTraits OutputMeshTraits
virtual void AddNewCellPoints(InputCellType *cell)=0
typename InputMeshType::MeshTraits InputMeshTraits
typename OutputMeshType::CellsContainer OutputCellsContainer
typename InputMeshType::PointIdIterator InputPointIdIterator
typename OutputMeshType::PointsContainerPointer OutputPointsContainerPointer
typename InputMeshType::CellsContainerConstIterator InputCellsContainerConstIterator
typename OutputMeshType::CellIdentifier OutputCellIdentifier
typename InputMeshType::CellIdentifier InputCellIdentifier
Abstract class to subdivide triangular surface QuadEdgeMesh.
typename OutputMeshType::PointType OutputPointType
typename OutputMeshType::CellsContainerConstIterator OutputCellsContainerConstIterator