+++ /dev/null
-#include <cmath>
-#include <cstdlib>
-#include <iostream>
-#include <string>
-
-#include <cpm/DataStructures/QuadEdgeMesh.h>
-#include <cpm/IO/MeshReader.h>
-#include <itkRegularSphereMeshSource.h>
-#include <vnl/vnl_math.h>
-
-#include <vtkActor.h>
-#include <vtkCallbackCommand.h>
-#include <vtkProperty.h>
-#include <vtkRenderer.h>
-#include <vtkRenderWindow.h>
-#include <vtkRenderWindowInteractor.h>
-#include <vtkSmartPointer.h>
-#include <cpm/VTK/MeshMapper.h>
-
-#include <cpm/Algorithms/QuadEdge/DecimationCriteria.h>
-#include <cpm/Algorithms/QuadEdge/SquaredEdgeLengthDecimationFilter.h>
-
-
-// -------------------------------------------------------------------------
-const unsigned int Dimension = 3;
-typedef float TScalar;
-typedef cpm::DataStructures::QuadEdgeMesh< TScalar, Dimension > TMesh;
-typedef cpm::VTK::MeshMapper< TMesh > TMeshMapper;
-
-typedef cpm::Algorithms::QuadEdge::NumberOfPointsCriterion< TMesh > TCriterion;
-/*
- typedef cpm::Algorithms::QuadEdge::NumberOfFacesCriterion< TMesh > TCriterion;
- typedef cpm::Algorithms::QuadEdge::MaxMeasureBoundCriterion< TMesh > TCriterion;
- typedef cpm::Algorithms::QuadEdge::MinMeasureBoundCriterion< TMesh > TCriterion;
-*/
-typedef cpm::Algorithms::QuadEdge::SquaredEdgeLengthDecimationFilter< TMesh, TMesh, TCriterion > TDecimator;
-
-// -------------------------------------------------------------------------
-int main( int argc, char* argv[] )
-{
- if( argc < 2 )
- {
- std::cerr
- << "Usage: " << argv[ 0 ]
- << " input_mesh"
- << std::endl;
- return( 1 );
-
- } // fi
-
- typedef cpm::IO::MeshReader< TMesh > TReader;
- TReader::Pointer reader = TReader::New( );
- reader->SetFileName( argv[ 1 ] );
- reader->Update( );
- TMesh::Pointer mesh = reader->GetOutput( );
-
- TCriterion::Pointer criterion = TCriterion::New( );
- criterion->TopologicalChangeOn( );
- criterion->SetNumberOfElements( mesh->GetNumberOfPoints( ) / 10 );
- criterion->SetMeasureBound( 1 );
-
- TDecimator::Pointer decimator = TDecimator::New( );
- decimator->SetInput( mesh );
- decimator->SetCriterion( criterion );
- decimator->Update( );
-
- // Map mesh
- vtkSmartPointer< TMeshMapper > mapper =
- vtkSmartPointer< TMeshMapper >::New( );
- mapper->SetInputData( decimator->GetOutput( ) );
-
- // Create actor
- vtkSmartPointer< vtkActor > actor =
- vtkSmartPointer< vtkActor >::New( );
- actor->SetMapper( mapper );
- actor->GetProperty( )->SetColor( 1, 1, 0 );
- actor->GetProperty( )->SetOpacity( 1 );
-
- // Configure visualization objects
- vtkSmartPointer< vtkRenderer > renderer =
- vtkSmartPointer< vtkRenderer >::New( );
- renderer->SetBackground( 0.1, 0.3, 0.5 );
-
- vtkSmartPointer< vtkRenderWindow > window =
- vtkSmartPointer< vtkRenderWindow >::New( );
- window->AddRenderer( renderer );
- window->SetSize( 800, 800 );
-
- // Set up the interaction
- vtkSmartPointer< vtkRenderWindowInteractor > interactor =
- vtkSmartPointer< vtkRenderWindowInteractor >::New( );
- window->SetInteractor( interactor );
-
- // Associate actors
- renderer->AddActor( actor );
-
- // Begin interaction
- window->Render( );
- interactor->Start( );
-
- return( 0 );
-}
-
-// eof - $RCSfile$