mirror of https://github.com/CGAL/cgal
Merge branch 'to-be-tested/Stop_testing_taucs-sloriot'
Taucs, Lapack and Blas supports are no longer tested Approved by the Release Manager Tested in CGAL-4.5-Ic-97 Conflicts: Polyhedron/demo/Polyhedron/CMakeLists.txt
This commit is contained in:
commit
6ed1ba826e
|
|
@ -623,7 +623,6 @@ Point_set_processing_3/examples/Point_set_processing_3/normal_estimation
|
|||
Point_set_processing_3/examples/Point_set_processing_3/oni_copy.xyz
|
||||
Point_set_processing_3/examples/Point_set_processing_3/property_map
|
||||
Point_set_processing_3/examples/Point_set_processing_3/sphere_20k_copy.xyz
|
||||
Point_set_processing_3/include/CGAL/*.Taucs_symmetric_solver_traits
|
||||
Point_set_processing_3/include/CGAL/*.object_pool
|
||||
Point_set_processing_3/include/CGAL/*.pool
|
||||
Point_set_processing_3/include/CGAL/*.reserve_RAM
|
||||
|
|
@ -879,7 +878,6 @@ Surface_reconstruction_points_3/examples/Surface_reconstruction_points_3/APSS_re
|
|||
Surface_reconstruction_points_3/examples/Surface_reconstruction_points_3/AQtimeProject
|
||||
Surface_reconstruction_points_3/examples/Surface_reconstruction_points_3/Makefile
|
||||
Surface_reconstruction_points_3/examples/Surface_reconstruction_points_3/poisson_reconstruction
|
||||
Surface_reconstruction_points_3/include/CGAL/*.Taucs_symmetric_solver_traits
|
||||
Surface_reconstruction_points_3/include/CGAL/*.object_pool
|
||||
Surface_reconstruction_points_3/include/CGAL/*.pool
|
||||
Surface_reconstruction_points_3/include/CGAL/*.reserve_RAM
|
||||
|
|
|
|||
|
|
@ -703,7 +703,7 @@ cmake -DWITH_examples=OFF -DWITH_demos=OFF -DCMAKE_BUILD_TYPE=Release
|
|||
-- Build type: Release
|
||||
-- USING CXXFLAGS = ' -frounding-math -O3 -DNDEBUG'
|
||||
-- USING LDFLAGS = ' '
|
||||
-- External libraries supported: GMP;GMPXX;MPFR;zlib;OpenGL;LEDA;MPFI;RS;RS3;OpenNL;TAUCS;EIGEN3;BLAS;LAPACK;QGLViewer;ESBTL;NTL
|
||||
-- External libraries supported: GMP;GMPXX;MPFR;zlib;OpenGL;LEDA;MPFI;RS;RS3;OpenNL;EIGEN3;BLAS;LAPACK;QGLViewer;ESBTL;NTL
|
||||
-- Preconfiguring library: GMP ...
|
||||
-- GMP has been preconfigured:
|
||||
-- CGAL_UseGMP-file:
|
||||
|
|
|
|||
|
|
@ -512,7 +512,7 @@ endmacro()
|
|||
# External libs Qt3 and Qt34are configured when Qt3 or Qt4 as lib of cgal are required
|
||||
# Coin is used in KDS, but no FindCoin or FindCOIN exists
|
||||
# There exists FindF2C, FindIPE, FindMKL, but they are only used to support supporting libs
|
||||
list (INSERT CGAL_SUPPORTING_3RD_PARTY_LIBRARIES 0 GMP MPFR ZLIB OpenGL LEDA MPFI RS RS3 OpenNL TAUCS Eigen3 BLAS LAPACK QGLViewer ESBTL Coin3D NTL IPE)
|
||||
list (INSERT CGAL_SUPPORTING_3RD_PARTY_LIBRARIES 0 GMP MPFR ZLIB OpenGL LEDA MPFI RS RS3 OpenNL Eigen3 BLAS LAPACK QGLViewer ESBTL Coin3D NTL IPE)
|
||||
if (NOT WIN32)
|
||||
# GMPXX is not supported on WIN32 machines
|
||||
list (INSERT CGAL_SUPPORTING_3RD_PARTY_LIBRARIES 1 GMPXX)
|
||||
|
|
@ -856,11 +856,6 @@ if ( GMP_IN_AUXILIARY )
|
|||
install(DIRECTORY auxiliary/gmp/lib/ DESTINATION ${CGAL_INSTALL_LIB_DIR} )
|
||||
endif()
|
||||
|
||||
if ( TAUCS_IN_AUXILIARY )
|
||||
install(DIRECTORY auxiliary/taucs/include/ DESTINATION ${CGAL_INSTALL_INC_DIR} )
|
||||
install(DIRECTORY auxiliary/taucs/lib/ DESTINATION ${CGAL_INSTALL_LIB_DIR} )
|
||||
endif()
|
||||
|
||||
if ( ZLIB_IN_AUXILIARY )
|
||||
install(DIRECTORY auxiliary/zlib/include/ DESTINATION ${CGAL_INSTALL_INC_DIR} )
|
||||
install(DIRECTORY auxiliary/zlib/lib/ DESTINATION ${CGAL_INSTALL_LIB_DIR} )
|
||||
|
|
|
|||
|
|
@ -95,16 +95,6 @@ CGAL packages, some are only needed for demos.
|
|||
http://www.netlib.org/blas/, http://www.netlib.org/lapack/
|
||||
or precompiled version that can be downloaded with CGAL-x.y-Setup.exe
|
||||
|
||||
- TAUCS (sparse matrix solver)
|
||||
Required by the package (if EIGEN is not available):
|
||||
o Surface Reconstruction from Point Sets
|
||||
Accelerates the package:
|
||||
o Planar Parameterization of Triangulated Surface Meshes
|
||||
http://www.tau.ac.il/~stoledo/taucs/
|
||||
The version to used is available at
|
||||
https://gforge.inria.fr/frs/download.php/24628/taucs_full.tgz
|
||||
or automatically downloaded with CGAL-x.y-Setup.exe on Windows.
|
||||
|
||||
- MPFI
|
||||
Required by the package:
|
||||
o Algebraic Kernel
|
||||
|
|
|
|||
|
|
@ -1,2 +0,0 @@
|
|||
If the Windows installer is used, this directory will contain headers of
|
||||
the BLAS, LAPACK, and TAUCS libraries.
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
If the Windows installer is used, this directory will contain precompiled
|
||||
binaries of the BLAS, LAPACK, and TAUCS libraries.
|
||||
|
|
@ -1,37 +0,0 @@
|
|||
// Copyright (c) 2004
|
||||
// Utrecht University (The Netherlands),
|
||||
// ETH Zurich (Switzerland),
|
||||
// INRIA Sophia-Antipolis (France),
|
||||
// Max-Planck-Institute Saarbruecken (Germany),
|
||||
// and Tel-Aviv University (Israel). All rights reserved.
|
||||
//
|
||||
// This file is part of CGAL (www.cgal.org); you can redistribute it and/or
|
||||
// modify it under the terms of the GNU Lesser General Public License as
|
||||
// published by the Free Software Foundation; either version 3 of the License,
|
||||
// or (at your option) any later version.
|
||||
//
|
||||
// Licensees holding a valid commercial license may use this file in
|
||||
// accordance with the commercial license agreement provided with the software.
|
||||
//
|
||||
// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
|
||||
// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
//
|
||||
// $URL: svn+ssh://fcacciola@scm.gforge.inria.fr/svn/cgal/trunk/Installation/config/support/test_TAUCS.cpp $
|
||||
// $Id: test_TAUCS.cpp 41686 2008-01-18 20:33:57Z spion $
|
||||
//
|
||||
// Author(s) : Laurent Saboret
|
||||
|
||||
// Test if TAUCS is available
|
||||
|
||||
|
||||
#include <iostream>
|
||||
|
||||
|
||||
int main(int argc, char* argv[])
|
||||
{
|
||||
// TAUCS provides no version number :-(
|
||||
// Version 1 is obsolete, thus we assume version 2 (latest is 2.2 on 03/2006)
|
||||
std::cout << "version=2.x" << std::endl;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -1,96 +0,0 @@
|
|||
// Copyright (c) 2004
|
||||
// Utrecht University (The Netherlands),
|
||||
// ETH Zurich (Switzerland),
|
||||
// INRIA Sophia-Antipolis (France),
|
||||
// Max-Planck-Institute Saarbruecken (Germany),
|
||||
// and Tel-Aviv University (Israel). All rights reserved.
|
||||
//
|
||||
// This file is part of CGAL (www.cgal.org); you can redistribute it and/or
|
||||
// modify it under the terms of the GNU Lesser General Public License as
|
||||
// published by the Free Software Foundation; either version 3 of the License,
|
||||
// or (at your option) any later version.
|
||||
//
|
||||
// Licensees holding a valid commercial license may use this file in
|
||||
// accordance with the commercial license agreement provided with the software.
|
||||
//
|
||||
// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
|
||||
// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
//
|
||||
// $URL$
|
||||
// $Id$
|
||||
//
|
||||
// Author(s) : Laurent Saboret
|
||||
|
||||
// Test if TAUCS is available
|
||||
|
||||
|
||||
#include <iostream>
|
||||
#include <cstdlib>
|
||||
#include <cstdio>
|
||||
#include <sys/types.h>
|
||||
#include <sys/timeb.h>
|
||||
|
||||
#define TAUCS_CORE_DOUBLE
|
||||
|
||||
// In GCC 3.x, <complex.h> includes <complex> and
|
||||
// complains if we include <complex.h> within "extern C {}"
|
||||
#if defined(__GNUC__)
|
||||
#undef __DEPRECATED
|
||||
#include <complex.h>
|
||||
#endif
|
||||
|
||||
extern "C"
|
||||
{
|
||||
// Include TAUCS main header taucs.h
|
||||
#include <taucs.h>
|
||||
}
|
||||
|
||||
// Avoid error with std::min() and std::max()
|
||||
#undef min
|
||||
#undef max
|
||||
|
||||
|
||||
int main(int argc, char* argv[])
|
||||
{
|
||||
// Create a TAUCS matrix to link with TAUCS main library
|
||||
int m = 4,n = 4,nnz = 4, i;
|
||||
taucs_ccs_matrix* pMatrix = taucs_ccs_create(m, n, nnz, TAUCS_DOUBLE);
|
||||
pMatrix->colptr[0] = 0;
|
||||
pMatrix->colptr[1] = 4;
|
||||
for ( i = 0; i < 4; i++ )
|
||||
{
|
||||
pMatrix->rowind[i] = i;
|
||||
pMatrix->taucs_values[i] = i;
|
||||
}
|
||||
|
||||
// Call a method needing TAUCS external library Metis
|
||||
int* perm;
|
||||
int* invperm;
|
||||
taucs_ccs_order(pMatrix,
|
||||
&perm,
|
||||
&invperm,
|
||||
(char*)"metis");
|
||||
|
||||
// Call dpotrf() Lapack routine (Cholesky factorization)
|
||||
int sn_size = 0;
|
||||
int lda = 1;
|
||||
int info;
|
||||
taucs_potrf((char*)"LOWER",
|
||||
&sn_size,
|
||||
NULL,
|
||||
&lda,
|
||||
&info);
|
||||
|
||||
// ftime() is in compat lib. on FreeBSD and crypto lib. on MacOSX
|
||||
struct timeb tb;
|
||||
ftime(&tb);
|
||||
|
||||
// TAUCS provides no version number :-(
|
||||
// Version 1 is obsolete, thus we assume version 2 (latest is 2.2 on 03/2006)
|
||||
std::cout << "version=2.x" << std::endl;
|
||||
|
||||
// clean up
|
||||
taucs_dccs_free(pMatrix);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -84,18 +84,9 @@ sub reformat_results($)
|
|||
if (/ZLIB_VERSION = '([^']+)'/) {
|
||||
$ZLIB="$1";
|
||||
}
|
||||
# if (/BLAS_VERSION = '([^']+)'/) {
|
||||
# $BLAS="+";
|
||||
# }
|
||||
# if (/LAPACK_VERSION = '([^']+)'/) {
|
||||
# $LAPACK="+";
|
||||
# }
|
||||
if (/OPENGL_VERSION = '([^']+)'/) {
|
||||
$OPENGL="$1";
|
||||
}
|
||||
# if (/TAUCS_VERSION = '([^']+)'/) {
|
||||
# $TAUCS="$1";
|
||||
# }
|
||||
if (/GMP_VERSION = '([^']+)'/) {
|
||||
$GMP="$1";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -27,10 +27,6 @@ if ( CGAL_FOUND )
|
|||
|
||||
# VisualC++ optimization for applications dealing with large data
|
||||
if (MSVC)
|
||||
# Use /EHa option to catch stack overflows.
|
||||
# Note: TAUCS needs a stack >= 2MB. CGAL default is 10MB.
|
||||
string(REGEX REPLACE "/EH[asc]*" "/EHa" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
|
||||
|
||||
# Use /FR to turn on IntelliSense
|
||||
SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /FR")
|
||||
|
||||
|
|
|
|||
|
|
@ -25,10 +25,6 @@ if ( CGAL_FOUND )
|
|||
|
||||
# VisualC++ optimization for applications dealing with large data
|
||||
if (MSVC)
|
||||
# Use /EHa option to catch stack overflows.
|
||||
# Note: TAUCS needs a stack >= 2MB. CGAL default is 10MB.
|
||||
string(REGEX REPLACE "/EH[asc]*" "/EHa" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
|
||||
|
||||
# Use /FR to turn on IntelliSense
|
||||
SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /FR")
|
||||
|
||||
|
|
|
|||
|
|
@ -61,14 +61,10 @@ endif(QT4_FOUND)
|
|||
|
||||
|
||||
|
||||
# Eigen is required by default
|
||||
find_package(Eigen3 3.1.0) #(requires 3.1.0 or greater)
|
||||
if (EIGEN3_FOUND)
|
||||
include( ${EIGEN3_USE_FILE} )
|
||||
else()
|
||||
message(STATUS "NOTICE: parametrization, poisson reconstruction and curvatures estimation plugins require Eigen 3.1 (or greater) and will not be available.")
|
||||
endif()
|
||||
|
||||
endif(EIGEN3_FOUND)
|
||||
|
||||
if(CGAL_Qt4_FOUND AND QT4_FOUND AND OPENGL_FOUND AND QGLVIEWER_FOUND)
|
||||
|
||||
|
|
@ -330,21 +326,11 @@ if(CGAL_Qt4_FOUND AND QT4_FOUND AND OPENGL_FOUND AND QGLVIEWER_FOUND)
|
|||
if(EIGEN3_FOUND)
|
||||
polyhedron_demo_plugin(parameterization_plugin Polyhedron_demo_parameterization_plugin)
|
||||
target_link_libraries(parameterization_plugin scene_polyhedron_item scene_textured_polyhedron_item )
|
||||
endif()
|
||||
|
||||
if(EIGEN3_FOUND)
|
||||
qt4_wrap_ui( poissonUI_FILES Polyhedron_demo_poisson_plugin.ui)
|
||||
polyhedron_demo_plugin(poisson_plugin Polyhedron_demo_poisson_plugin Polyhedron_demo_poisson_plugin_impl.cpp ${poissonUI_FILES})
|
||||
target_link_libraries(poisson_plugin scene_polyhedron_item scene_points_with_normal_item)
|
||||
endif()
|
||||
|
||||
|
||||
# Link with BLAS and LAPACK only (optional), for Jet Fitting
|
||||
if (NOT EIGEN3_FOUND AND LAPACK_FOUND)
|
||||
include( ${LAPACK_USE_FILE} )
|
||||
endif()
|
||||
|
||||
if(EIGEN3_FOUND OR LAPACK_FOUND)
|
||||
qt4_wrap_ui( normal_estimationUI_FILES Polyhedron_demo_normal_estimation_plugin.ui)
|
||||
polyhedron_demo_plugin(normal_estimation_plugin Polyhedron_demo_normal_estimation_plugin ${normal_estimationUI_FILES})
|
||||
target_link_libraries(normal_estimation_plugin scene_points_with_normal_item)
|
||||
|
|
@ -357,10 +343,14 @@ if(CGAL_Qt4_FOUND AND QT4_FOUND AND OPENGL_FOUND AND QGLVIEWER_FOUND)
|
|||
|
||||
polyhedron_demo_plugin(jet_fitting_plugin Polyhedron_demo_jet_fitting_plugin)
|
||||
target_link_libraries(jet_fitting_plugin scene_polyhedron_item scene_polylines_item)
|
||||
|
||||
else(EIGEN3_FOUND OR LAPACK_FOUND)
|
||||
message(STATUS "NOTICE: Normal estimation and smoothing plugins require Eigen 3.1 (or greater) or LAPACK libraries and will not be available.")
|
||||
endif(EIGEN3_FOUND OR LAPACK_FOUND)
|
||||
else(EIGEN3_FOUND)
|
||||
message(STATUS "NOTICE: Eigen 3.1 (or greater) was not found. Parameterization plugin will not be available.")
|
||||
message(STATUS "NOTICE: Eigen 3.1 (or greater) was not found. Poisson reconstruction plugin will not be available.")
|
||||
message(STATUS "NOTICE: Eigen 3.1 (or greater) was not found. Normal estimation plugin will not be available.")
|
||||
message(STATUS "NOTICE: Eigen 3.1 (or greater) was not found. Smoothing plugin will not be available.")
|
||||
message(STATUS "NOTICE: Eigen 3.1 (or greater) was not found. Average spacing plugin will not be available.")
|
||||
message(STATUS "NOTICE: Eigen 3.1 (or greater) was not found. Jet fitting plugin will not be available.")
|
||||
endif(EIGEN3_FOUND)
|
||||
|
||||
polyhedron_demo_plugin(self_intersection_plugin Polyhedron_demo_self_intersection_plugin)
|
||||
target_link_libraries(self_intersection_plugin scene_polyhedron_item)
|
||||
|
|
|
|||
|
|
@ -61,10 +61,6 @@ class Polyhedron_demo_poisson_plugin_dialog : public QDialog, private Ui::Poisso
|
|||
{
|
||||
setupUi(this);
|
||||
|
||||
#ifdef CGAL_TAUCS_ENABLED
|
||||
m_inputSolver->addItem("Taucs");
|
||||
#endif
|
||||
|
||||
#ifdef CGAL_EIGEN3_ENABLED
|
||||
m_inputSolver->addItem("Eigen - built-in simplicial LDLt");
|
||||
m_inputSolver->addItem("Eigen - built-in CG");
|
||||
|
|
|
|||
|
|
@ -16,9 +16,6 @@
|
|||
#include <CGAL/Poisson_reconstruction_function.h>
|
||||
#include <CGAL/compute_average_spacing.h>
|
||||
|
||||
#ifdef CGAL_TAUCS_ENABLED
|
||||
#include <CGAL/Taucs_solver_traits.h>
|
||||
#endif
|
||||
#ifdef CGAL_EIGEN3_ENABLED
|
||||
#include <CGAL/Eigen_solver_traits.h>
|
||||
#endif
|
||||
|
|
@ -91,26 +88,6 @@ Polyhedron* poisson_reconstruct(const Point_set& points,
|
|||
CGAL::make_normal_of_point_with_normal_pmap(Point_set::value_type()));
|
||||
|
||||
bool ok = false;
|
||||
#ifdef CGAL_TAUCS_ENABLED
|
||||
if(solver_name=="Taucs")
|
||||
{
|
||||
// Creates sparse linear solver:
|
||||
// TAUCS out-of-core Multifrontal Supernodal Cholesky Factorization
|
||||
const char* OOC_SUPERNODAL_CHOLESKY_FACTORIZATION[] =
|
||||
{
|
||||
"taucs.factor.LLT=true",
|
||||
"taucs.factor.mf=true",
|
||||
"taucs.factor.ordering=metis",
|
||||
"taucs.ooc=true", "taucs.ooc.basename=taucs-ooc",
|
||||
NULL
|
||||
};
|
||||
unlink("taucs-ooc.0"); // make sure TAUCS ooc file does not exist
|
||||
CGAL::Taucs_symmetric_solver_traits<double> solver(OOC_SUPERNODAL_CHOLESKY_FACTORIZATION);
|
||||
|
||||
ok = function.compute_implicit_function(solver, use_two_passes);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CGAL_EIGEN3_ENABLED
|
||||
if(solver_name=="Eigen - built-in simplicial LDLt")
|
||||
{
|
||||
|
|
|
|||
|
|
@ -123,7 +123,6 @@ foreach( component ${CGAL_COMPONENTS})
|
|||
set(component ${rewrote_component})
|
||||
string(REGEX REPLACE "([o|O][p|P][e|E][n|N][n|N][l|L])" "OpenNL" rewrote_component ${component})
|
||||
set(component ${rewrote_component})
|
||||
string(REGEX REPLACE "([t|T][a|A][u|U][c|C][s|S])" "TAUCS" rewrote_component ${component})
|
||||
set(component ${rewrote_component})
|
||||
string(REGEX REPLACE "([b|B][l|L][a|A][s|S])" "BLAS" rewrote_component ${component})
|
||||
set(component ${rewrote_component})
|
||||
|
|
|
|||
|
|
@ -33,7 +33,6 @@
|
|||
#MPFR
|
||||
#MPFI
|
||||
#RS
|
||||
#TAUCS
|
||||
#BLAS
|
||||
#LAPACK
|
||||
#OPENNL
|
||||
|
|
@ -157,7 +156,6 @@ fi
|
|||
CGAL_COMPONENTS=${CGAL_COMPONENTS//[r|R][s|S]/RS}
|
||||
|
||||
CGAL_COMPONENTS=${CGAL_COMPONENTS//[o|O][p|P][e|E][n|N][n|N][l|L]/OpenNL}
|
||||
CGAL_COMPONENTS=${CGAL_COMPONENTS//[t|T][a|A][u|U][c|C][s|S]/TAUCS}
|
||||
CGAL_COMPONENTS=${CGAL_COMPONENTS//[b|B][l|L][a|A][s|S]/BLAS}
|
||||
CGAL_COMPONENTS=${CGAL_COMPONENTS//[l|L][a|A][p|P][a|A][c|C][k|K]/LAPACK}
|
||||
|
||||
|
|
|
|||
|
|
@ -93,7 +93,7 @@ public:
|
|||
m_triplets.reserve(rows);
|
||||
}
|
||||
|
||||
/// Delete this object and the wrapped TAUCS matrix.
|
||||
/// Delete this object and the wrapped matrix.
|
||||
~Eigen_sparse_matrix()
|
||||
{
|
||||
}
|
||||
|
|
|
|||
|
|
@ -75,7 +75,7 @@ public:
|
|||
return this->size();
|
||||
}
|
||||
|
||||
/// Get TAUCS vector wrapped by this object.
|
||||
/// Get vector wrapped by this object.
|
||||
const EigenType& eigen_object() const {
|
||||
return *this;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -26,10 +26,6 @@ if ( CGAL_FOUND )
|
|||
|
||||
# VisualC++ optimization for applications dealing with large data
|
||||
if (MSVC)
|
||||
# Use /EHa option to catch stack overflows.
|
||||
# Note: TAUCS needs a stack >= 2MB. CGAL default is 10MB.
|
||||
string(REGEX REPLACE "/EH[asc]*" "/EHa" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
|
||||
|
||||
# Use /FR to turn on IntelliSense
|
||||
SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /FR")
|
||||
|
||||
|
|
@ -70,41 +66,23 @@ if ( CGAL_FOUND )
|
|||
list(APPEND CGAL_3RD_PARTY_LIBRARIES ${Boost_PROGRAM_OPTIONS_LIBRARY})
|
||||
endif()
|
||||
|
||||
# Executables that do *not* use TAUCS
|
||||
# Executables that do *not* require Eigen
|
||||
create_single_source_cgal_program( "Authalic_parameterization.cpp" )
|
||||
create_single_source_cgal_program( "Mesh_cutting_parameterization.cpp" )
|
||||
create_single_source_cgal_program( "Simple_parameterization.cpp" )
|
||||
create_single_source_cgal_program( "Square_border_parameterization.cpp" )
|
||||
|
||||
|
||||
# use either Eigen or TAUCS BLAS/LAPACK
|
||||
find_package(Eigen3 3.1.0) #(requires 3.1.0 or greater)
|
||||
if (EIGEN3_FOUND)
|
||||
include( ${EIGEN3_USE_FILE} )
|
||||
endif()
|
||||
|
||||
# Link with BLAS, LAPACK and TAUCS (optional)
|
||||
find_package(TAUCS)
|
||||
if(TAUCS_FOUND)
|
||||
include( ${TAUCS_USE_FILE} )
|
||||
endif(TAUCS_FOUND)
|
||||
|
||||
if (EIGEN3_FOUND)
|
||||
# Executables that require Eigen 3.1
|
||||
include( ${EIGEN3_USE_FILE} )
|
||||
create_single_source_cgal_program( "Complete_parameterization_example.cpp" )
|
||||
create_single_source_cgal_program( "Eigen_parameterization.cpp" )
|
||||
else(EIGEN3_FOUND)
|
||||
message(STATUS "NOTICE: Example Complete_parameterization_example.cpp requires Eigen 3.1 (or greater) and will not be compiled.")
|
||||
message(STATUS "NOTICE: Some examples require Eigen 3.1 (or greater) and will not be compiled.")
|
||||
endif(EIGEN3_FOUND)
|
||||
|
||||
if (TAUCS_FOUND)
|
||||
# Executables that require TAUCS (thus BLAS and LAPACK)
|
||||
create_single_source_cgal_program( "Taucs_parameterization.cpp" )
|
||||
else(TAUCS_FOUND)
|
||||
message(STATUS "NOTICE: Example Taucs_parameterization.cpp requires TAUCS and will not be compiled.")
|
||||
endif(TAUCS_FOUND)
|
||||
|
||||
# Executable that can use TAUCS or not, depending on the macro CGAL_USE_TAUCS
|
||||
create_single_source_cgal_program( "polyhedron_ex_parameterization.cpp" )
|
||||
|
||||
else()
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
data/sphere966.off sphere966_authalic_square_taucs_parameterized.eps
|
||||
data/sphere966.off sphere966_authalic_square_opennl_parameterized.eps
|
||||
|
|
|
|||
|
|
@ -1 +0,0 @@
|
|||
data/mannequin-devil.off
|
||||
|
|
@ -1,122 +0,0 @@
|
|||
#include <CGAL/Simple_cartesian.h>
|
||||
#include <CGAL/Polyhedron_3.h>
|
||||
#include <CGAL/IO/Polyhedron_iostream.h>
|
||||
#include <CGAL/Parameterization_polyhedron_adaptor_3.h>
|
||||
#include <CGAL/parameterize.h>
|
||||
|
||||
#include <CGAL/Taucs_solver_traits.h>
|
||||
|
||||
#include <iostream>
|
||||
#include <fstream>
|
||||
#include <cstdlib>
|
||||
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// Private types
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
typedef CGAL::Simple_cartesian<double> Kernel;
|
||||
typedef CGAL::Polyhedron_3<Kernel> Polyhedron;
|
||||
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// main()
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
int main(int argc, char * argv[])
|
||||
{
|
||||
std::cerr << "PARAMETERIZATION" << std::endl;
|
||||
std::cerr << " Floater parameterization" << std::endl;
|
||||
std::cerr << " Circle border" << std::endl;
|
||||
std::cerr << " TAUCS solver" << std::endl;
|
||||
|
||||
//***************************************
|
||||
// decode parameters
|
||||
//***************************************
|
||||
|
||||
if (argc-1 != 1)
|
||||
{
|
||||
std::cerr << "Usage: " << argv[0] << " input_file.off" << std::endl;
|
||||
return(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
// File name is:
|
||||
const char* input_filename = argv[1];
|
||||
|
||||
//***************************************
|
||||
// Read the mesh
|
||||
//***************************************
|
||||
|
||||
// Read the mesh
|
||||
std::ifstream stream(input_filename);
|
||||
Polyhedron mesh;
|
||||
stream >> mesh;
|
||||
if(!stream || !mesh.is_valid() || mesh.empty())
|
||||
{
|
||||
std::cerr << "Error: cannot read OFF file " << input_filename << std::endl;
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
//***************************************
|
||||
// Create Polyhedron adaptor
|
||||
// Note: no cutting => we support only
|
||||
// meshes that are topological disks
|
||||
//***************************************
|
||||
|
||||
typedef CGAL::Parameterization_polyhedron_adaptor_3<Polyhedron>
|
||||
Parameterization_polyhedron_adaptor;
|
||||
Parameterization_polyhedron_adaptor mesh_adaptor(mesh);
|
||||
|
||||
//***************************************
|
||||
// Floater Mean Value Coordinates parameterization
|
||||
// (circular border) with TAUCS solver
|
||||
//***************************************
|
||||
|
||||
// Circular border parameterizer (the default)
|
||||
typedef CGAL::Circular_border_arc_length_parameterizer_3<Parameterization_polyhedron_adaptor>
|
||||
Border_parameterizer;
|
||||
// TAUCS solver
|
||||
typedef CGAL::Taucs_solver_traits<double> Solver;
|
||||
|
||||
// Floater Mean Value Coordinates parameterization
|
||||
// (circular border) with TAUCS solver
|
||||
typedef CGAL::Mean_value_coordinates_parameterizer_3<Parameterization_polyhedron_adaptor,
|
||||
Border_parameterizer,
|
||||
Solver>
|
||||
Parameterizer;
|
||||
|
||||
Parameterizer::Error_code err = CGAL::parameterize(mesh_adaptor, Parameterizer());
|
||||
switch(err) {
|
||||
case Parameterizer::OK: // Success
|
||||
break;
|
||||
case Parameterizer::ERROR_EMPTY_MESH: // Input mesh not supported
|
||||
case Parameterizer::ERROR_NON_TRIANGULAR_MESH:
|
||||
case Parameterizer::ERROR_NO_TOPOLOGICAL_DISC:
|
||||
case Parameterizer::ERROR_BORDER_TOO_SHORT:
|
||||
std::cerr << "Input mesh not supported: " << Parameterizer::get_error_message(err) << std::endl;
|
||||
return EXIT_FAILURE;
|
||||
break;
|
||||
default: // Error
|
||||
std::cerr << "Error: " << Parameterizer::get_error_message(err) << std::endl;
|
||||
return EXIT_FAILURE;
|
||||
break;
|
||||
};
|
||||
|
||||
//***************************************
|
||||
// Output
|
||||
//***************************************
|
||||
|
||||
// Raw output: dump (u,v) pairs
|
||||
Polyhedron::Vertex_const_iterator pVertex;
|
||||
for (pVertex = mesh.vertices_begin();
|
||||
pVertex != mesh.vertices_end();
|
||||
pVertex++)
|
||||
{
|
||||
// (u,v) pair is stored in any halfedge
|
||||
double u = mesh_adaptor.info(pVertex->halfedge())->uv().x();
|
||||
double v = mesh_adaptor.info(pVertex->halfedge())->uv().y();
|
||||
std::cout << "(u,v) = (" << u << "," << v << ")" << std::endl;
|
||||
}
|
||||
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
|
@ -11,15 +11,6 @@
|
|||
//----------------------------------------------------------
|
||||
// polyhedron_ex_parameterization -t conformal -b circle mesh.off mesh.eps
|
||||
|
||||
//----------------------------------------------------------
|
||||
// floater parameterization
|
||||
// square border
|
||||
// TAUCS solver
|
||||
// output is a eps map
|
||||
// input file is mesh.off
|
||||
//----------------------------------------------------------
|
||||
// polyhedron_ex_parameterization -t floater -b square -s taucs mesh.off mesh.eps
|
||||
|
||||
//----------------------------------------------------------
|
||||
// Least Squares Conformal Maps parameterization
|
||||
// two pinned vertices (automatically picked)
|
||||
|
|
@ -44,9 +35,6 @@
|
|||
#include <CGAL/Parameterization_mesh_feature_extractor.h>
|
||||
|
||||
#include <CGAL/OpenNL/linear_solver.h>
|
||||
#ifdef CGAL_USE_TAUCS
|
||||
#include <CGAL/Taucs_solver_traits.h>
|
||||
#endif
|
||||
|
||||
#include "Polyhedron_ex.h"
|
||||
#include "Mesh_cutter.h"
|
||||
|
|
@ -326,7 +314,7 @@ int main()
|
|||
("border,b", po::value<std::string>(&border)->default_value("circle"),
|
||||
"border shape: circle, square or 2pts (lscm only)")
|
||||
("solver,s", po::value<std::string>(&solver)->default_value("opennl"),
|
||||
"solver: opennl or taucs")
|
||||
"solver: opennl")
|
||||
("input,i", po::value<std::string>(&input)->default_value(""),
|
||||
"input mesh (OFF)")
|
||||
("output,o", po::value<std::string>(&output)->default_value("out.eps"),
|
||||
|
|
@ -434,18 +422,6 @@ int main()
|
|||
OpenNL::SymmetricLinearSolverTraits<double>
|
||||
>(mesh_patch, type, border);
|
||||
}
|
||||
else if (solver == std::string("taucs"))
|
||||
{
|
||||
#ifdef CGAL_USE_TAUCS
|
||||
err = parameterize<Mesh_patch_polyhedron,
|
||||
CGAL::Taucs_solver_traits<double>,
|
||||
CGAL::Taucs_symmetric_solver_traits<double>
|
||||
>(mesh_patch, type, border);
|
||||
#else
|
||||
std::cerr << "Error: TAUCS is not installed" << std::endl;
|
||||
err = Parameterizer::ERROR_WRONG_PARAMETER;
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
std::cerr << "Error: invalid solver parameter " << solver << std::endl;
|
||||
|
|
|
|||
|
|
@ -91,7 +91,6 @@ else
|
|||
run polyhedron_ex_parameterization
|
||||
run Simple_parameterization
|
||||
run Square_border_parameterization
|
||||
run Taucs_parameterization
|
||||
fi
|
||||
|
||||
#---------------------------------------------------------------------#
|
||||
|
|
|
|||
|
|
@ -3,7 +3,6 @@
|
|||
# Utility script to run the surface parameterization example without knowing the executable name
|
||||
# Usage: test.sh parameterization-method border-parameterization solver output-format source-file-root
|
||||
# Example: test.sh floater circle opennl obj sphere966
|
||||
# Example: test.sh lscm 2pts taucs eps sphere966
|
||||
|
||||
# Find executable name (different on Windows and Unix)
|
||||
[ -f ./debug/polyhedron_ex_parameterization.exe ] && PARAM_APPLICATION="./debug/polyhedron_ex_parameterization.exe"
|
||||
|
|
|
|||
|
|
@ -10,24 +10,14 @@ echo ""
|
|||
|
||||
./test.sh barycentric square opennl eps "$1"
|
||||
echo " -"
|
||||
./test.sh barycentric circle taucs obj "$1"
|
||||
echo " -"
|
||||
./test.sh floater circle opennl obj "$1"
|
||||
echo " -"
|
||||
./test.sh floater square taucs eps "$1"
|
||||
echo " -"
|
||||
./test.sh conformal circle taucs obj "$1"
|
||||
echo " -"
|
||||
./test.sh conformal square opennl eps "$1"
|
||||
echo " -"
|
||||
./test.sh authalic square taucs obj "$1"
|
||||
echo " -"
|
||||
# Skip authalic/opennl test which is very unstable
|
||||
# ./test.sh authalic circle opennl eps "$1"
|
||||
# echo " -"
|
||||
./test.sh lscm 2pts opennl obj "$1"
|
||||
echo " -"
|
||||
./test.sh lscm 2pts taucs eps "$1"
|
||||
|
||||
echo ""
|
||||
echo " ************************"
|
||||
|
|
|
|||
|
|
@ -14,6 +14,6 @@ The package proposes currently an interface with CGAL Polyhedron_3 data structur
|
|||
|
||||
Since parameterizing meshes require efficient representation of sparse matrices
|
||||
and efficient iterative or direct linear solvers, we provide links to standard
|
||||
libraries (TAUCS) and propose a separate package devoted to OpenNL
|
||||
libraries (Eigen3) and propose a separate package devoted to OpenNL
|
||||
sparse linear solver (Levy).
|
||||
|
||||
|
|
|
|||
|
|
@ -26,10 +26,6 @@ if ( CGAL_FOUND )
|
|||
|
||||
# VisualC++ optimization for applications dealing with large data
|
||||
if (MSVC)
|
||||
# Use /EHa option to catch stack overflows.
|
||||
# Note: TAUCS needs a stack >= 2MB. CGAL default is 10MB.
|
||||
string(REGEX REPLACE "/EH[asc]*" "/EHa" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
|
||||
|
||||
# Use /FR to turn on IntelliSense
|
||||
SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /FR")
|
||||
|
||||
|
|
@ -65,21 +61,11 @@ if ( CGAL_FOUND )
|
|||
include( ${EIGEN3_USE_FILE} )
|
||||
endif()
|
||||
|
||||
#find TAUCS
|
||||
find_package(TAUCS)
|
||||
if(TAUCS_FOUND)
|
||||
include( ${TAUCS_USE_FILE} )
|
||||
endif(TAUCS_FOUND)
|
||||
|
||||
if(NOT TAUCS_FOUND)
|
||||
message(STATUS "NOTICE: This directory requires the TAUCS library, and some features will not be available.")
|
||||
endif(NOT TAUCS_FOUND)
|
||||
|
||||
if(NOT EIGEN3_FOUND)
|
||||
message(STATUS "NOTICE: This directory requires Eigen 3.1 (or greater), and some features will not be available.")
|
||||
endif()
|
||||
|
||||
# Executable that can use EIGEN/TAUCS or not, depending on the macro CGAL_EIGEN3_ENABLED/CGAL_USE_TAUCS
|
||||
# Executable that can use EIGEN or not, depending on the macro CGAL_EIGEN3_ENABLED
|
||||
create_single_source_cgal_program( "extensive_parameterization_test.cpp" )
|
||||
|
||||
else()
|
||||
|
|
|
|||
|
|
@ -34,9 +34,6 @@
|
|||
#ifdef CGAL_EIGEN3_ENABLED
|
||||
#include <CGAL/Eigen_solver_traits.h>
|
||||
#endif
|
||||
#ifdef CGAL_USE_TAUCS
|
||||
#include <CGAL/Taucs_solver_traits.h>
|
||||
#endif
|
||||
|
||||
// This test
|
||||
#include "Polyhedron_ex.h"
|
||||
|
|
@ -359,121 +356,6 @@ int main(int argc, char * argv[])
|
|||
std::cerr << "Parameterization: " << task_timer.time() << " seconds." << std::endl << std::endl;
|
||||
task_timer.reset();
|
||||
|
||||
#ifdef CGAL_USE_TAUCS
|
||||
|
||||
//***************************************
|
||||
// Discrete Conformal Map parameterization
|
||||
// with circular arc length border parameterization
|
||||
// TAUCS solver (if installed)
|
||||
//***************************************
|
||||
|
||||
std::cerr << "Discrete Conformal Map parameterization" << std::endl;
|
||||
std::cerr << "with circular arc length border parameterization" << std::endl;
|
||||
std::cerr << "TAUCS solver" << std::endl;
|
||||
|
||||
err = CGAL::parameterize(
|
||||
mesh_patch,
|
||||
CGAL::Discrete_conformal_map_parameterizer_3<
|
||||
Mesh_patch_polyhedron,
|
||||
CGAL::Circular_border_arc_length_parameterizer_3<Mesh_patch_polyhedron>,
|
||||
CGAL::Taucs_solver_traits<double>
|
||||
>());
|
||||
switch(err) {
|
||||
case Parameterizer::OK: // Success
|
||||
break;
|
||||
case Parameterizer::ERROR_EMPTY_MESH: // Input mesh not supported
|
||||
case Parameterizer::ERROR_NON_TRIANGULAR_MESH:
|
||||
case Parameterizer::ERROR_NO_TOPOLOGICAL_DISC:
|
||||
case Parameterizer::ERROR_BORDER_TOO_SHORT:
|
||||
std::cerr << "Input mesh not supported: " << Parameterizer::get_error_message(err) << std::endl;
|
||||
// this is not a bug => do not set accumulated_fatal_err
|
||||
break;
|
||||
default: // Error
|
||||
std::cerr << "Error: " << Parameterizer::get_error_message(err) << std::endl;
|
||||
accumulated_fatal_err = EXIT_FAILURE;
|
||||
break;
|
||||
};
|
||||
|
||||
std::cerr << "Parameterization: " << task_timer.time() << " seconds." << std::endl << std::endl;
|
||||
task_timer.reset();
|
||||
|
||||
//***************************************
|
||||
// Discrete Authalic Parameterization
|
||||
// with square arc length border parameterization
|
||||
// TAUCS solver (if installed)
|
||||
//***************************************
|
||||
|
||||
std::cerr << "Discrete Authalic Parameterization" << std::endl;
|
||||
std::cerr << "with square arc length border parameterization" << std::endl;
|
||||
std::cerr << "TAUCS solver" << std::endl;
|
||||
|
||||
err = CGAL::parameterize(
|
||||
mesh_patch,
|
||||
CGAL::Discrete_authalic_parameterizer_3<
|
||||
Mesh_patch_polyhedron,
|
||||
CGAL::Square_border_arc_length_parameterizer_3<Mesh_patch_polyhedron>,
|
||||
CGAL::Taucs_solver_traits<double>
|
||||
>());
|
||||
switch(err) {
|
||||
case Parameterizer::OK: // Success
|
||||
break;
|
||||
case Parameterizer::ERROR_EMPTY_MESH: // Input mesh not supported
|
||||
case Parameterizer::ERROR_NON_TRIANGULAR_MESH:
|
||||
case Parameterizer::ERROR_NO_TOPOLOGICAL_DISC:
|
||||
case Parameterizer::ERROR_BORDER_TOO_SHORT:
|
||||
std::cerr << "Input mesh not supported: " << Parameterizer::get_error_message(err) << std::endl;
|
||||
// this is not a bug => do not set accumulated_fatal_err
|
||||
break;
|
||||
default: // Error
|
||||
std::cerr << "Error: " << Parameterizer::get_error_message(err) << std::endl;
|
||||
accumulated_fatal_err = EXIT_FAILURE;
|
||||
break;
|
||||
};
|
||||
|
||||
std::cerr << "Parameterization: " << task_timer.time() << " seconds." << std::endl << std::endl;
|
||||
task_timer.reset();
|
||||
|
||||
//***************************************
|
||||
// Least Squares Conformal Maps parameterization
|
||||
// TAUCS solver (if installed)
|
||||
//***************************************
|
||||
|
||||
std::cerr << "Least Squares Conformal Maps parameterization" << std::endl;
|
||||
std::cerr << "TAUCS solver" << std::endl;
|
||||
|
||||
err = CGAL::parameterize(
|
||||
mesh_patch,
|
||||
CGAL::LSCM_parameterizer_3<
|
||||
Mesh_patch_polyhedron,
|
||||
CGAL::Two_vertices_parameterizer_3<Mesh_patch_polyhedron>,
|
||||
CGAL::Taucs_symmetric_solver_traits<double>
|
||||
>());
|
||||
switch(err) {
|
||||
case Parameterizer::OK: // Success
|
||||
break;
|
||||
case Parameterizer::ERROR_EMPTY_MESH: // Input mesh not supported
|
||||
case Parameterizer::ERROR_NON_TRIANGULAR_MESH:
|
||||
case Parameterizer::ERROR_NO_TOPOLOGICAL_DISC:
|
||||
case Parameterizer::ERROR_BORDER_TOO_SHORT:
|
||||
std::cerr << "Input mesh not supported: " << Parameterizer::get_error_message(err) << std::endl;
|
||||
// this is not a bug => do not set accumulated_fatal_err
|
||||
break;
|
||||
default: // Error
|
||||
std::cerr << "Error: " << Parameterizer::get_error_message(err) << std::endl;
|
||||
accumulated_fatal_err = EXIT_FAILURE;
|
||||
break;
|
||||
};
|
||||
|
||||
std::cerr << "Parameterization: " << task_timer.time() << " seconds." << std::endl << std::endl;
|
||||
task_timer.reset();
|
||||
|
||||
#else
|
||||
|
||||
std::cerr << "Skip TAUCS tests as TAUCS is not installed" << std::endl << std::endl;
|
||||
// this is not a bug => do not set accumulated_fatal_err
|
||||
|
||||
#endif // CGAL_USE_TAUCS
|
||||
|
||||
#ifdef CGAL_EIGEN3_ENABLED
|
||||
|
||||
//***************************************
|
||||
|
|
|
|||
|
|
@ -38,11 +38,6 @@ if(QT4_FOUND)
|
|||
find_package(QGLViewer )
|
||||
endif(QT4_FOUND)
|
||||
|
||||
# Find BLAS, LAPACK and TAUCS (optional), for Poisson
|
||||
find_package(TAUCS)
|
||||
|
||||
# Find BLAS and LAPACK only (optional), for Jet Fitting
|
||||
find_package(LAPACK)
|
||||
|
||||
# Find Eigen3 (requires 3.1.0 or greater)
|
||||
find_package(Eigen3 3.1.0)
|
||||
|
|
@ -55,28 +50,6 @@ if(CGAL_Qt4_FOUND AND QT4_FOUND AND OPENGL_FOUND AND QGLVIEWER_FOUND)
|
|||
|
||||
include_directories ( ${QGLVIEWER_INCLUDE_DIR} )
|
||||
|
||||
# Link with BLAS, LAPACK and TAUCS (optional), for Poisson
|
||||
if(TAUCS_FOUND)
|
||||
include( ${TAUCS_USE_FILE} )
|
||||
else(TAUCS_FOUND)
|
||||
message(STATUS "NOTICE: TAUCS library is not found.")
|
||||
endif(TAUCS_FOUND)
|
||||
|
||||
if(EIGEN3_FOUND)
|
||||
include( ${EIGEN3_USE_FILE} )
|
||||
else()
|
||||
message(STATUS "NOTICE: Eigen library is not found.")
|
||||
endif()
|
||||
|
||||
# Link with BLAS and LAPACK only (optional), for Jet Fitting
|
||||
if(LAPACK_FOUND)
|
||||
include( ${LAPACK_USE_FILE} )
|
||||
else(LAPACK_FOUND)
|
||||
if (NOT EIGEN3_FOUND)
|
||||
message(STATUS "NOTICE: Nor Eigen 3.1 (or greater) nor LAPACK library were found. Normal estimation and smoothing will not be available.")
|
||||
endif()
|
||||
endif(LAPACK_FOUND)
|
||||
|
||||
if(GLEW_FOUND)
|
||||
include_directories ( ${GLEW_INCLUDE_DIR} )
|
||||
add_definitions(-DCGAL_GLEW_ENABLED)
|
||||
|
|
@ -86,10 +59,6 @@ if(CGAL_Qt4_FOUND AND QT4_FOUND AND OPENGL_FOUND AND QGLVIEWER_FOUND)
|
|||
|
||||
# VisualC++ optimization for applications dealing with large data
|
||||
if (MSVC)
|
||||
# Use /EHa option to catch stack overflows.
|
||||
# Note: TAUCS needs a stack >= 2MB. CGAL default is 10MB.
|
||||
string(REGEX REPLACE "/EH[asc]*" "/EHa" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
|
||||
|
||||
# Use /FR to turn on IntelliSense
|
||||
SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /FR")
|
||||
|
||||
|
|
@ -237,15 +206,26 @@ if(CGAL_Qt4_FOUND AND QT4_FOUND AND OPENGL_FOUND AND QGLVIEWER_FOUND)
|
|||
target_link_libraries( ${plugin_name} ${CGAL_LIBRARIES} ${CGAL_3RD_PARTY_LIBRARIES} )
|
||||
endmacro(point_set_demo_plugin)
|
||||
|
||||
if(TAUCS_FOUND OR EIGEN3_FOUND)
|
||||
if(EIGEN3_FOUND)
|
||||
include( ${EIGEN3_USE_FILE} )
|
||||
|
||||
qt4_wrap_ui( POISSON_UI_FILES PS_demo_poisson_plugin.ui)
|
||||
point_set_demo_plugin(PS_demo_poisson_plugin
|
||||
PS_demo_poisson_plugin
|
||||
PS_demo_poisson_plugin_cgal_code.cpp
|
||||
${POISSON_UI_FILES})
|
||||
target_link_libraries(PS_demo_poisson_plugin PS_demo_scene_polyhedron_item point_set)
|
||||
|
||||
point_set_demo_plugin(PS_demo_smoothing_plugin PS_demo_smoothing_plugin)
|
||||
target_link_libraries(PS_demo_smoothing_plugin point_set)
|
||||
|
||||
qt4_wrap_ui( NORMAL_UI_FILES PS_demo_normal_estimation_plugin.ui)
|
||||
point_set_demo_plugin(PS_demo_normal_estimation_plugin
|
||||
PS_demo_normal_estimation_plugin
|
||||
${NORMAL_UI_FILES})
|
||||
target_link_libraries(PS_demo_normal_estimation_plugin point_set)
|
||||
else()
|
||||
message(STATUS "NOTICE: Neither TAUCS nor Eigen 3.1 (or greater) libraries have been found. Poisson reconstruction will not be available.")
|
||||
message(STATUS "NOTICE: Eigen 3.1 (or greater) library has not been found. Poisson reconstruction, normal estimation and smoothing will not be available.")
|
||||
endif()
|
||||
|
||||
point_set_demo_plugin(PS_demo_inside_out_plugin PS_demo_inside_out_plugin)
|
||||
|
|
@ -269,19 +249,6 @@ if(CGAL_Qt4_FOUND AND QT4_FOUND AND OPENGL_FOUND AND QGLVIEWER_FOUND)
|
|||
point_set_demo_plugin(PS_demo_average_spacing_plugin PS_demo_average_spacing_plugin)
|
||||
target_link_libraries(PS_demo_average_spacing_plugin point_set)
|
||||
|
||||
if(LAPACK_FOUND OR EIGEN3_FOUND)
|
||||
point_set_demo_plugin(PS_demo_smoothing_plugin PS_demo_smoothing_plugin)
|
||||
target_link_libraries(PS_demo_smoothing_plugin point_set)
|
||||
endif()
|
||||
|
||||
if(LAPACK_FOUND)
|
||||
qt4_wrap_ui( NORMAL_UI_FILES PS_demo_normal_estimation_plugin.ui)
|
||||
point_set_demo_plugin(PS_demo_normal_estimation_plugin
|
||||
PS_demo_normal_estimation_plugin
|
||||
${NORMAL_UI_FILES})
|
||||
target_link_libraries(PS_demo_normal_estimation_plugin point_set)
|
||||
endif()
|
||||
|
||||
qt4_wrap_ui( CLEANING_UI_FILES PS_demo_cleaning_plugin.ui)
|
||||
point_set_demo_plugin(PS_demo_cleaning_plugin
|
||||
PS_demo_cleaning_plugin
|
||||
|
|
|
|||
|
|
@ -60,10 +60,6 @@ class PS_demo_poisson_plugin_dialog : public QDialog, private Ui::PoissonDialog
|
|||
{
|
||||
setupUi(this);
|
||||
|
||||
#ifdef CGAL_TAUCS_ENABLED
|
||||
m_inputSolver->addItem("Taucs");
|
||||
#endif
|
||||
|
||||
#ifdef CGAL_EIGEN3_ENABLED
|
||||
m_inputSolver->addItem("Eigen - built-in simplicial LDLt");
|
||||
m_inputSolver->addItem("Eigen - built-in CG");
|
||||
|
|
|
|||
|
|
@ -17,9 +17,6 @@
|
|||
#include <CGAL/Poisson_reconstruction_function.h>
|
||||
#include <CGAL/compute_average_spacing.h>
|
||||
|
||||
#ifdef CGAL_TAUCS_ENABLED
|
||||
#include <CGAL/Taucs_solver_traits.h>
|
||||
#endif
|
||||
#ifdef CGAL_EIGEN3_ENABLED
|
||||
#include <CGAL/Eigen_solver_traits.h>
|
||||
#endif
|
||||
|
|
@ -98,25 +95,6 @@ Polyhedron* poisson_reconstruct(const Point_set& points,
|
|||
);
|
||||
|
||||
bool ok = false;
|
||||
#ifdef CGAL_TAUCS_ENABLED
|
||||
if(solver_name=="Taucs")
|
||||
{
|
||||
// Creates sparse linear solver:
|
||||
// TAUCS out-of-core Multifrontal Supernodal Cholesky Factorization
|
||||
const char* OOC_SUPERNODAL_CHOLESKY_FACTORIZATION[] =
|
||||
{
|
||||
"taucs.factor.LLT=true",
|
||||
"taucs.factor.mf=true",
|
||||
"taucs.factor.ordering=metis",
|
||||
"taucs.ooc=true", "taucs.ooc.basename=taucs-ooc",
|
||||
NULL
|
||||
};
|
||||
unlink("taucs-ooc.0"); // make sure TAUCS ooc file does not exist
|
||||
CGAL::Taucs_symmetric_solver_traits<double> solver(OOC_SUPERNODAL_CHOLESKY_FACTORIZATION);
|
||||
|
||||
ok = function.compute_implicit_function(solver);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CGAL_EIGEN3_ENABLED
|
||||
if(solver_name=="Eigen - built-in simplicial LDLt")
|
||||
|
|
|
|||
|
|
@ -28,10 +28,6 @@ if ( CGAL_FOUND )
|
|||
|
||||
# VisualC++ optimization for applications dealing with large data
|
||||
if (MSVC)
|
||||
# Use /EHa option to catch stack overflows.
|
||||
# Note: TAUCS needs a stack >= 2MB. CGAL default is 10MB.
|
||||
string(REGEX REPLACE "/EH[asc]*" "/EHa" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
|
||||
|
||||
# Use /FR to turn on IntelliSense
|
||||
SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /FR")
|
||||
|
||||
|
|
@ -55,19 +51,14 @@ if ( CGAL_FOUND )
|
|||
find_package(Eigen3 3.1.0)
|
||||
if (EIGEN3_FOUND)
|
||||
include( ${EIGEN3_USE_FILE} )
|
||||
else()
|
||||
find_package(TAUCS)
|
||||
if(TAUCS_FOUND)
|
||||
include( ${TAUCS_USE_FILE} )
|
||||
endif(TAUCS_FOUND)
|
||||
endif()
|
||||
|
||||
if (EIGEN3_FOUND OR TAUCS_FOUND)
|
||||
# Executables that require Eigen 3 or TAUCS
|
||||
if (EIGEN3_FOUND)
|
||||
# Executables that require Eigen 3
|
||||
create_single_source_cgal_program( "poisson_reconstruction_example.cpp" )
|
||||
create_single_source_cgal_program( "poisson_reconstruction.cpp" )
|
||||
else()
|
||||
message(STATUS "NOTICE: The examples needs Eigen 3.1 (or greater) or the TAUCS library and will not be compiled.")
|
||||
message(STATUS "NOTICE: The examples need Eigen 3.1 (or greater) will not be compiled.")
|
||||
endif()
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -25,9 +25,6 @@
|
|||
#include <CGAL/Point_with_normal_3.h>
|
||||
#include <CGAL/IO/read_xyz_points.h>
|
||||
#include <CGAL/compute_average_spacing.h>
|
||||
#ifdef CGAL_TAUCS_ENABLED
|
||||
#include <CGAL/Taucs_solver_traits.h>
|
||||
#endif
|
||||
|
||||
#include "compute_normal.h"
|
||||
|
||||
|
|
@ -124,9 +121,6 @@ int main(int argc, char * argv[])
|
|||
std::cerr << "Options:\n";
|
||||
std::cerr << " -sm_radius <float> Radius upper bound (default=100 * average spacing)\n";
|
||||
std::cerr << " -sm_distance <float> Distance upper bound (default=0.25 * average spacing)\n";
|
||||
#if defined(CGAL_EIGEN3_ENABLED) && defined(CGAL_TAUCS_ENABLED)
|
||||
std::cerr << " -solver eigen|taucs Sparse linear solver (default=eigen)\n";
|
||||
#endif
|
||||
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
|
@ -135,15 +129,7 @@ int main(int argc, char * argv[])
|
|||
FT sm_angle = 20.0; // Min triangle angle (degrees).
|
||||
FT sm_radius = 100; // Max triangle size w.r.t. point set average spacing.
|
||||
FT sm_distance = 0.25; // Approximation error w.r.t. point set average spacing.
|
||||
#ifdef CGAL_EIGEN3_ENABLED
|
||||
std::string solver_name = "eigen"; // Sparse linear solver name.
|
||||
#else
|
||||
#ifdef CGAL_TAUCS_ENABLED
|
||||
std::string solver_name = "taucs"; // Sparse linear solver name.
|
||||
#else
|
||||
std::string solver_name = "no_solver_available";
|
||||
#endif
|
||||
#endif
|
||||
double approximation_ratio = 0.02;
|
||||
double average_spacing_ratio = 5;
|
||||
|
||||
|
|
@ -273,37 +259,6 @@ int main(int argc, char * argv[])
|
|||
CGAL::make_normal_of_point_with_normal_pmap(PointList::value_type()),
|
||||
visitor);
|
||||
|
||||
#ifdef CGAL_TAUCS_ENABLED
|
||||
if (solver_name == "taucs")
|
||||
{
|
||||
std::cerr << "Use TAUCS out-of-core Multifrontal Supernodal Cholesky Factorization\n";
|
||||
|
||||
// Creates sparse linear solver:
|
||||
// TAUCS out-of-core Multifrontal Supernodal Cholesky Factorization
|
||||
const char* OOC_SUPERNODAL_CHOLESKY_FACTORIZATION[] =
|
||||
{
|
||||
"taucs.factor.LLT=true",
|
||||
"taucs.factor.mf=true",
|
||||
"taucs.factor.ordering=metis",
|
||||
"taucs.ooc=true", "taucs.ooc.basename=taucs-ooc",
|
||||
NULL
|
||||
};
|
||||
unlink("taucs-ooc.0"); // make sure TAUCS ooc file does not exist
|
||||
CGAL::Taucs_symmetric_solver_traits<double> solver(OOC_SUPERNODAL_CHOLESKY_FACTORIZATION);
|
||||
|
||||
// Computes the Poisson indicator function f()
|
||||
// at each vertex of the triangulation.
|
||||
|
||||
if ( ! function.compute_implicit_function(solver, visitor,
|
||||
approximation_ratio,
|
||||
average_spacing_ratio) )
|
||||
{
|
||||
std::cerr << "Error: cannot compute implicit function" << std::endl;
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
}
|
||||
else
|
||||
#endif
|
||||
#ifdef CGAL_EIGEN3_ENABLED
|
||||
{
|
||||
if (solver_name == "eigen")
|
||||
|
|
|
|||
|
|
@ -38,9 +38,6 @@
|
|||
#ifdef CGAL_EIGEN3_ENABLED
|
||||
#include <CGAL/Eigen_solver_traits.h>
|
||||
#else
|
||||
#ifdef CGAL_TAUCS_ENABLED
|
||||
#include <CGAL/Taucs_solver_traits.h>
|
||||
#endif
|
||||
#endif
|
||||
#include <CGAL/centroid.h>
|
||||
#include <CGAL/property_map.h>
|
||||
|
|
@ -534,23 +531,12 @@ public:
|
|||
}
|
||||
|
||||
/// \cond SKIP_IN_MANUAL
|
||||
#ifdef CGAL_EIGEN3_ENABLED
|
||||
// This variant provides the default sparse linear traits class = Eigen_solver_traits.
|
||||
bool compute_implicit_function(bool smoother_hole_filling = false)
|
||||
{
|
||||
typedef Eigen_solver_traits<Eigen::ConjugateGradient<Eigen_sparse_symmetric_matrix<double>::EigenType> > Solver;
|
||||
return compute_implicit_function<Solver>(Solver(), smoother_hole_filling);
|
||||
}
|
||||
#else
|
||||
#ifdef CGAL_TAUCS_ENABLED
|
||||
// This variant provides the default sparse linear traits class = Taucs_symmetric_solver_traits.
|
||||
bool compute_implicit_function(bool smoother_hole_filling = false)
|
||||
{
|
||||
typedef Taucs_symmetric_solver_traits<double> Solver;
|
||||
return compute_implicit_function<Solver>(Solver(), smoother_hole_filling);
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
boost::tuple<FT, Cell_handle, bool> special_func(const Point& p) const
|
||||
{
|
||||
|
|
|
|||
|
|
@ -27,10 +27,6 @@ if ( CGAL_FOUND )
|
|||
|
||||
# VisualC++ optimization for applications dealing with large data
|
||||
if (MSVC)
|
||||
# Use /EHa option to catch stack overflows.
|
||||
# Note: TAUCS needs a stack >= 2MB. CGAL default is 10MB.
|
||||
string(REGEX REPLACE "/EH[asc]*" "/EHa" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
|
||||
|
||||
# Use /FR to turn on IntelliSense
|
||||
SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /FR")
|
||||
|
||||
|
|
@ -51,23 +47,15 @@ if ( CGAL_FOUND )
|
|||
ADD_DEFINITIONS( "-DDEBUG_TRACE" ) # turn on traces
|
||||
|
||||
find_package(Eigen3 3.1.0) #(requires 3.1.0 or greater)
|
||||
if (NOT EIGEN3_FOUND)
|
||||
find_package(TAUCS)
|
||||
if(TAUCS_FOUND)
|
||||
include( ${TAUCS_USE_FILE} )
|
||||
endif(TAUCS_FOUND)
|
||||
else()
|
||||
if(EIGEN3_FOUND)
|
||||
include( ${EIGEN3_USE_FILE} )
|
||||
endif()
|
||||
|
||||
if(EIGEN3_FOUND OR TAUCS_FOUND)
|
||||
|
||||
# Executables that require Eigen 3.1 or TAUCS (thus BLAS and LAPACK)
|
||||
# Executables that require Eigen 3.1
|
||||
create_single_source_cgal_program( "poisson_reconstruction_test.cpp" )
|
||||
|
||||
else()
|
||||
|
||||
message(STATUS "NOTICE: Some of the executables in this directory need Eigen 3.1 (or greater) or the TAUCS library and will not be compiled.")
|
||||
message(STATUS "NOTICE: Some of the executables in this directory need Eigen 3.1 (or greater) and will not be compiled.")
|
||||
|
||||
endif()
|
||||
|
||||
|
|
|
|||
|
|
@ -19,7 +19,6 @@
|
|||
!define ViaFTP
|
||||
|
||||
Var Platform
|
||||
;Var IsTAUCSInstalled
|
||||
|
||||
!ifdef ViaFTP
|
||||
!define DownloadOK "OK"
|
||||
|
|
@ -59,27 +58,6 @@ Var Platform
|
|||
!insertmacro DownloadFileFrom ${FTP_SRC} ${SRC_FOLDER} ${FILE} ${TGT}
|
||||
!macroend
|
||||
|
||||
!macro Install_LAPACK_TAUCS_libs PLATFORM
|
||||
; Headers are not platform dependent so we include this only once, but here since
|
||||
; we want to download headers only if at least one lib variant was selected.
|
||||
${If} $IsTAUCSInstalled = 0
|
||||
StrCpy $IsTAUCSInstalled 1
|
||||
|
||||
!insertmacro DownloadFile "auxiliary/$Platform/TAUCS-CGAL-3.7/" "taucs.h.zip" "$INSTDIR\auxiliary\taucs\include"
|
||||
!insertmacro DownloadFile "auxiliary/$Platform/TAUCS-CGAL-3.7/" "taucs_private.h.zip" "$INSTDIR\auxiliary\taucs\include"
|
||||
!insertmacro DownloadFile "auxiliary/$Platform/TAUCS-CGAL-3.7/" "taucs_config_tests.h.zip" "$INSTDIR\auxiliary\taucs\include"
|
||||
!insertmacro DownloadFile "auxiliary/$Platform/TAUCS-CGAL-3.7/" "taucs_config_build.h.zip" "$INSTDIR\auxiliary\taucs\include"
|
||||
!insertmacro DownloadFile "auxiliary/$Platform/TAUCS-CGAL-3.7/" "blaswrap.h.zip" "$INSTDIR\auxiliary\taucs\include"
|
||||
|
||||
${If} "$Platform" == "win32"
|
||||
!insertmacro DownloadFile "auxiliary/win32/TAUCS-CGAL-3.7/" "taucs-common.zip" "$INSTDIR\auxiliary\taucs\lib"
|
||||
${Endif}
|
||||
|
||||
${Endif}
|
||||
|
||||
!insertmacro DownloadFile "auxiliary/${PLATFORM}/TAUCS-CGAL-3.7/" "taucs-libs.zip" "$INSTDIR\auxiliary\taucs\lib"
|
||||
!macroend
|
||||
|
||||
!macro Install_GMP_MPFR_bin PLATFORM
|
||||
!insertmacro DownloadFile "auxiliary/${PLATFORM}/GMP/5.0.1/" "gmp-all-CGAL-3.9.zip" "$INSTDIR\auxiliary\gmp"
|
||||
!insertmacro DownloadFile "auxiliary/${PLATFORM}/MPFR/3.0.0/" "mpfr-all-CGAL-3.9.zip" "$INSTDIR\auxiliary\gmp"
|
||||
|
|
|
|||
|
|
@ -229,17 +229,6 @@ Section "GMP and MPFR precompiled libs" GMP_LIB_Idx
|
|||
SectionEnd
|
||||
|
||||
|
||||
; Download and install LAPACK and TAUCSbinaries.
|
||||
; Depend only on the platform (one variant per platform)
|
||||
|
||||
; Laurent Rineau, 2014/03/05: Remove TAUCS from the installer
|
||||
;Section /o "LAPACK and TAUCS precompiled libs" TAUCS_LIB_Idx
|
||||
; !ifndef FetchLocal
|
||||
; !insertmacro Install_LAPACK_TAUCS_libs "$Platform"
|
||||
; !endif
|
||||
;SectionEnd
|
||||
|
||||
|
||||
;--------------------------------
|
||||
|
||||
|
||||
|
|
@ -305,7 +294,6 @@ SectionEnd
|
|||
LangString DESC_MAIN ${LANG_ENGLISH} "The main components of the CGAL Library."
|
||||
LangString DESC_SAMPLES ${LANG_ENGLISH} "The CGAL demos and examples, for which you need Qt 4 in order to build them (and Qt 3 for some)."
|
||||
LangString DESC_GMP_LIB ${LANG_ENGLISH} "The precompiled GMP and MPFR libraries (needed for exact constructions)."
|
||||
LangString DESC_TAUCS_LIB ${LANG_ENGLISH} "The precompiled LAPACK and TAUCS libraries."
|
||||
LangString DESC_DOC ${LANG_ENGLISH} "The HTML manuals."
|
||||
LangString DESC_ENVSET ${LANG_ENGLISH} "already set"
|
||||
|
||||
|
|
@ -314,8 +302,6 @@ SectionEnd
|
|||
!insertmacro MUI_DESCRIPTION_TEXT ${MAIN_Idx} $(DESC_MAIN)
|
||||
!insertmacro MUI_DESCRIPTION_TEXT ${SAMPLES_Idx} $(DESC_SAMPLES)
|
||||
!insertmacro MUI_DESCRIPTION_TEXT ${GMP_LIB_Idx} $(DESC_GMP_LIB)
|
||||
; Laurent Rineau, 2014/03/05: Remove TAUCS from the installer
|
||||
; !insertmacro MUI_DESCRIPTION_TEXT ${TAUCS_LIB_Idx} $(DESC_TAUCS_LIB)
|
||||
!insertmacro MUI_DESCRIPTION_TEXT ${DOC_Idx} $(DESC_DOC)
|
||||
!insertmacro MUI_FUNCTION_DESCRIPTION_END
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue