ITK  5.4.0
Insight Toolkit
SphinxExamples/src/Filtering/QuadEdgeMeshFiltering/ComputePlanarParameterizationOfAMesh/Code.cxx
/*=========================================================================
*
* Copyright NumFOCUS
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0.txt
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*=========================================================================*/
int
main(int argc, char * argv[])
{
if (argc != 5)
{
std::cout << "Requires 4 arguments: " << std::endl;
std::cout << "1-Input file name " << std::endl;
std::cout << "2-Border Type" << std::endl;
std::cout << " * 0: SQUARE" << std::endl;
std::cout << " * 1: DISK" << std::endl;
std::cout << "3-CoefficientType Type" << std::endl;
std::cout << " * 0: OnesMatrixCoefficients" << std::endl;
std::cout << " * 1: InverseEuclideanDistanceMatrixCoefficients" << std::endl;
std::cout << " * 2: ConformalMatrixCoefficients" << std::endl;
std::cout << " * 3: AuthalicMatrixCoefficients" << std::endl;
std::cout << " * 4: HarmonicMatrixCoefficients" << std::endl;
std::cout << "4-Output file name " << std::endl;
return EXIT_FAILURE;
}
const char * inputFileName = argv[1];
const char * outputFileName = argv[4];
using CoordType = double;
constexpr unsigned int Dimension = 3;
using ReaderType = itk::MeshFileReader<MeshType>;
using WriterType = itk::MeshFileWriter<MeshType>;
auto reader = ReaderType::New();
reader->SetFileName(inputFileName);
MeshType::Pointer mesh = reader->GetOutput();
auto border_transform = BorderTransformType::New();
border_transform->SetInput(reader->GetOutput());
int border;
std::stringstream ssout(argv[2]);
ssout >> border;
switch (border) // choose border type
{
case 0: // square shaped domain
break;
case 1: // disk shaped domain
break;
default: // handle .... user ....
std::cerr << "2nd argument must be " << std::endl;
std::cerr << "0 for SQUARE BORDER TRANSFORM or "
<< "1 for DISK BORDER TRANSFORM" << std::endl;
return EXIT_FAILURE;
}
std::cout << "Transform type is: " << border_transform->GetTransformType() << std::endl;
// ** CHOOSE AND SET BARYCENTRIC WEIGHTS **
auto param = ParametrizationType::New();
param->SetInput(mesh);
param->SetBorderTransform(border_transform);
int param_type;
std::stringstream ssout3(argv[3]);
ssout3 >> param_type;
switch (param_type)
{
case 0:
param->SetCoefficientsMethod(&coeff0);
break;
case 1:
param->SetCoefficientsMethod(&coeff1);
break;
case 2:
param->SetCoefficientsMethod(&coeff2);
break;
case 3:
param->SetCoefficientsMethod(&coeff3);
break;
case 4:
param->SetCoefficientsMethod(&coeff4);
break;
default:
std::cerr << "3rd argument must be " << std::endl;
std::cerr << "0, 1, 2, 3 or 4" << std::endl;
std::cerr << "Here it is: " << param_type << std::endl;
return EXIT_FAILURE;
}
auto writer = WriterType::New();
writer->SetInput(param->GetOutput());
writer->SetFileName(outputFileName);
try
{
writer->Update();
}
catch (const itk::ExceptionObject & error)
{
std::cerr << "Error: " << error << std::endl;
return EXIT_FAILURE;
}
return EXIT_SUCCESS;
}
Pointer
SmartPointer< Self > Pointer
Definition: itkAddImageFilter.h:93
itk::MeshFileWriter
Writes mesh data to a single file.
Definition: itkMeshFileWriter.h:52
VNLIterativeSparseSolverTraits.h
itk::MeshFileReader
Mesh source that reads mesh data from a single file.
Definition: itkMeshFileReader.h:81
itk::AuthalicMatrixCoefficients
Compute a matrix filled with Authalic Coefficients of the edge, wherever two vertices are connected w...
Definition: itkQuadEdgeMeshParamMatrixCoefficients.h:182
itk::HarmonicMatrixCoefficients
Compute a matrix filled with Harmonic coefficients, wherever two vertices are connected by an edge.
Definition: itkQuadEdgeMeshParamMatrixCoefficients.h:274
itk::BorderQuadEdgeMeshFilterEnums::BorderTransform::SQUARE_BORDER_TRANSFORM
itk::BorderQuadEdgeMeshFilterEnums::BorderTransform::DISK_BORDER_TRANSFORM
itkMeshFileReader.h
itk::OnesMatrixCoefficients
Compute a matrix filled by 1s wherever two vertices are connected by an edge.
Definition: itkQuadEdgeMeshParamMatrixCoefficients.h:55
VNLIterativeSparseSolverTraits
Generic interface for iterative sparse linear solver.
Definition: VNLIterativeSparseSolverTraits.h:43
itk::QuadEdgeMesh
Mesh class for 2D manifolds embedded in ND space.
Definition: itkQuadEdgeMesh.h:53
itk::BorderQuadEdgeMeshFilter
Transform one border of a QuadEdgeMesh into either a circle (conformal) or a square (arclength-wise).
Definition: itkBorderQuadEdgeMeshFilter.h:82
itk::ConformalMatrixCoefficients
Compute a matrix filed by Conformal Coefficients of the edge wherever two vertices are connected by a...
Definition: itkQuadEdgeMeshParamMatrixCoefficients.h:127
itk::InverseEuclideanDistanceMatrixCoefficients
Compute a matrix filed with the inverse of the euclidean distance wherever two vertices are connected...
Definition: itkQuadEdgeMeshParamMatrixCoefficients.h:84
itk::ParameterizationQuadEdgeMeshFilter
Compute a planar parameterization of the input mesh.
Definition: itkParameterizationQuadEdgeMeshFilter.h:56
itkQuadEdgeMesh.h
itkParameterizationQuadEdgeMeshFilter.h
New
static Pointer New()
itkMeshFileWriter.h
itk::GTest::TypedefsAndConstructors::Dimension2::Dimension
constexpr unsigned int Dimension
Definition: itkGTestTypedefsAndConstructors.h:44