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:
Sébastien Loriot 2014-07-16 20:19:21 +02:00
commit 6ed1ba826e
38 changed files with 47 additions and 746 deletions

2
.gitignore vendored
View File

@ -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/oni_copy.xyz
Point_set_processing_3/examples/Point_set_processing_3/property_map 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/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/*.object_pool
Point_set_processing_3/include/CGAL/*.pool Point_set_processing_3/include/CGAL/*.pool
Point_set_processing_3/include/CGAL/*.reserve_RAM 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/AQtimeProject
Surface_reconstruction_points_3/examples/Surface_reconstruction_points_3/Makefile 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/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/*.object_pool
Surface_reconstruction_points_3/include/CGAL/*.pool Surface_reconstruction_points_3/include/CGAL/*.pool
Surface_reconstruction_points_3/include/CGAL/*.reserve_RAM Surface_reconstruction_points_3/include/CGAL/*.reserve_RAM

View File

@ -703,7 +703,7 @@ cmake -DWITH_examples=OFF -DWITH_demos=OFF -DCMAKE_BUILD_TYPE=Release
-- Build type: Release -- Build type: Release
-- USING CXXFLAGS = ' -frounding-math -O3 -DNDEBUG' -- USING CXXFLAGS = ' -frounding-math -O3 -DNDEBUG'
-- USING LDFLAGS = ' ' -- 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 ... -- Preconfiguring library: GMP ...
-- GMP has been preconfigured: -- GMP has been preconfigured:
-- CGAL_UseGMP-file: -- CGAL_UseGMP-file:

View File

@ -512,7 +512,7 @@ endmacro()
# External libs Qt3 and Qt34are configured when Qt3 or Qt4 as lib of cgal are required # 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 # 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 # 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) if (NOT WIN32)
# GMPXX is not supported on WIN32 machines # GMPXX is not supported on WIN32 machines
list (INSERT CGAL_SUPPORTING_3RD_PARTY_LIBRARIES 1 GMPXX) 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} ) install(DIRECTORY auxiliary/gmp/lib/ DESTINATION ${CGAL_INSTALL_LIB_DIR} )
endif() 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 ) if ( ZLIB_IN_AUXILIARY )
install(DIRECTORY auxiliary/zlib/include/ DESTINATION ${CGAL_INSTALL_INC_DIR} ) install(DIRECTORY auxiliary/zlib/include/ DESTINATION ${CGAL_INSTALL_INC_DIR} )
install(DIRECTORY auxiliary/zlib/lib/ DESTINATION ${CGAL_INSTALL_LIB_DIR} ) install(DIRECTORY auxiliary/zlib/lib/ DESTINATION ${CGAL_INSTALL_LIB_DIR} )

View File

@ -95,16 +95,6 @@ CGAL packages, some are only needed for demos.
http://www.netlib.org/blas/, http://www.netlib.org/lapack/ http://www.netlib.org/blas/, http://www.netlib.org/lapack/
or precompiled version that can be downloaded with CGAL-x.y-Setup.exe 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 - MPFI
Required by the package: Required by the package:
o Algebraic Kernel o Algebraic Kernel

View File

@ -1,2 +0,0 @@
If the Windows installer is used, this directory will contain headers of
the BLAS, LAPACK, and TAUCS libraries.

View File

@ -1,2 +0,0 @@
If the Windows installer is used, this directory will contain precompiled
binaries of the BLAS, LAPACK, and TAUCS libraries.

View File

@ -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;
}

View File

@ -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;
}

View File

@ -84,18 +84,9 @@ sub reformat_results($)
if (/ZLIB_VERSION = '([^']+)'/) { if (/ZLIB_VERSION = '([^']+)'/) {
$ZLIB="$1"; $ZLIB="$1";
} }
# if (/BLAS_VERSION = '([^']+)'/) {
# $BLAS="+";
# }
# if (/LAPACK_VERSION = '([^']+)'/) {
# $LAPACK="+";
# }
if (/OPENGL_VERSION = '([^']+)'/) { if (/OPENGL_VERSION = '([^']+)'/) {
$OPENGL="$1"; $OPENGL="$1";
} }
# if (/TAUCS_VERSION = '([^']+)'/) {
# $TAUCS="$1";
# }
if (/GMP_VERSION = '([^']+)'/) { if (/GMP_VERSION = '([^']+)'/) {
$GMP="$1"; $GMP="$1";
} }

View File

@ -27,10 +27,6 @@ if ( CGAL_FOUND )
# VisualC++ optimization for applications dealing with large data # VisualC++ optimization for applications dealing with large data
if (MSVC) 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 # Use /FR to turn on IntelliSense
SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /FR") SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /FR")

View File

@ -25,10 +25,6 @@ if ( CGAL_FOUND )
# VisualC++ optimization for applications dealing with large data # VisualC++ optimization for applications dealing with large data
if (MSVC) 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 # Use /FR to turn on IntelliSense
SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /FR") SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /FR")

View File

@ -61,14 +61,10 @@ endif(QT4_FOUND)
# Eigen is required by default
find_package(Eigen3 3.1.0) #(requires 3.1.0 or greater) find_package(Eigen3 3.1.0) #(requires 3.1.0 or greater)
if (EIGEN3_FOUND) if (EIGEN3_FOUND)
include( ${EIGEN3_USE_FILE} ) include( ${EIGEN3_USE_FILE} )
else() endif(EIGEN3_FOUND)
message(STATUS "NOTICE: parametrization, poisson reconstruction and curvatures estimation plugins require Eigen 3.1 (or greater) and will not be available.")
endif()
if(CGAL_Qt4_FOUND AND QT4_FOUND AND OPENGL_FOUND AND QGLVIEWER_FOUND) if(CGAL_Qt4_FOUND AND QT4_FOUND AND OPENGL_FOUND AND QGLVIEWER_FOUND)
@ -177,7 +173,7 @@ if(CGAL_Qt4_FOUND AND QT4_FOUND AND OPENGL_FOUND AND QGLVIEWER_FOUND)
target_link_libraries(scene_combinatorial_map_item scene_polyhedron_item) target_link_libraries(scene_combinatorial_map_item scene_polyhedron_item)
add_item(scene_polylines_item Scene_polylines_item.cpp Scene_polylines_item.moc) add_item(scene_polylines_item Scene_polylines_item.cpp Scene_polylines_item.moc)
add_item(scene_polyhedron_item_decorator Scene_polyhedron_item_decorator.cpp Scene_polyhedron_item_decorator.moc) add_item(scene_polyhedron_item_decorator Scene_polyhedron_item_decorator.cpp Scene_polyhedron_item_decorator.moc)
target_link_libraries(scene_polyhedron_item_decorator scene_polyhedron_item) target_link_libraries(scene_polyhedron_item_decorator scene_polyhedron_item)
@ -330,21 +326,11 @@ if(CGAL_Qt4_FOUND AND QT4_FOUND AND OPENGL_FOUND AND QGLVIEWER_FOUND)
if(EIGEN3_FOUND) if(EIGEN3_FOUND)
polyhedron_demo_plugin(parameterization_plugin Polyhedron_demo_parameterization_plugin) polyhedron_demo_plugin(parameterization_plugin Polyhedron_demo_parameterization_plugin)
target_link_libraries(parameterization_plugin scene_polyhedron_item scene_textured_polyhedron_item ) 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) 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}) 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) 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) 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}) 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) 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) polyhedron_demo_plugin(jet_fitting_plugin Polyhedron_demo_jet_fitting_plugin)
target_link_libraries(jet_fitting_plugin scene_polyhedron_item scene_polylines_item) target_link_libraries(jet_fitting_plugin scene_polyhedron_item scene_polylines_item)
else(EIGEN3_FOUND)
else(EIGEN3_FOUND OR LAPACK_FOUND) message(STATUS "NOTICE: Eigen 3.1 (or greater) was not found. Parameterization plugin will not be available.")
message(STATUS "NOTICE: Normal estimation and smoothing plugins require Eigen 3.1 (or greater) or LAPACK libraries and will not be available.") message(STATUS "NOTICE: Eigen 3.1 (or greater) was not found. Poisson reconstruction plugin will not be available.")
endif(EIGEN3_FOUND OR LAPACK_FOUND) 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) polyhedron_demo_plugin(self_intersection_plugin Polyhedron_demo_self_intersection_plugin)
target_link_libraries(self_intersection_plugin scene_polyhedron_item) target_link_libraries(self_intersection_plugin scene_polyhedron_item)

View File

@ -60,11 +60,7 @@ class Polyhedron_demo_poisson_plugin_dialog : public QDialog, private Ui::Poisso
Polyhedron_demo_poisson_plugin_dialog(QWidget* /*parent*/ = 0) Polyhedron_demo_poisson_plugin_dialog(QWidget* /*parent*/ = 0)
{ {
setupUi(this); setupUi(this);
#ifdef CGAL_TAUCS_ENABLED
m_inputSolver->addItem("Taucs");
#endif
#ifdef CGAL_EIGEN3_ENABLED #ifdef CGAL_EIGEN3_ENABLED
m_inputSolver->addItem("Eigen - built-in simplicial LDLt"); m_inputSolver->addItem("Eigen - built-in simplicial LDLt");
m_inputSolver->addItem("Eigen - built-in CG"); m_inputSolver->addItem("Eigen - built-in CG");

View File

@ -16,9 +16,6 @@
#include <CGAL/Poisson_reconstruction_function.h> #include <CGAL/Poisson_reconstruction_function.h>
#include <CGAL/compute_average_spacing.h> #include <CGAL/compute_average_spacing.h>
#ifdef CGAL_TAUCS_ENABLED
#include <CGAL/Taucs_solver_traits.h>
#endif
#ifdef CGAL_EIGEN3_ENABLED #ifdef CGAL_EIGEN3_ENABLED
#include <CGAL/Eigen_solver_traits.h> #include <CGAL/Eigen_solver_traits.h>
#endif #endif
@ -90,27 +87,7 @@ Polyhedron* poisson_reconstruct(const Point_set& points,
points.begin(), points.end(), points.begin(), points.end(),
CGAL::make_normal_of_point_with_normal_pmap(Point_set::value_type())); CGAL::make_normal_of_point_with_normal_pmap(Point_set::value_type()));
bool ok = false; 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 #ifdef CGAL_EIGEN3_ENABLED
if(solver_name=="Eigen - built-in simplicial LDLt") if(solver_name=="Eigen - built-in simplicial LDLt")
{ {

View File

@ -123,7 +123,6 @@ foreach( component ${CGAL_COMPONENTS})
set(component ${rewrote_component}) set(component ${rewrote_component})
string(REGEX REPLACE "([o|O][p|P][e|E][n|N][n|N][l|L])" "OpenNL" rewrote_component ${component}) string(REGEX REPLACE "([o|O][p|P][e|E][n|N][n|N][l|L])" "OpenNL" rewrote_component ${component})
set(component ${rewrote_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}) set(component ${rewrote_component})
string(REGEX REPLACE "([b|B][l|L][a|A][s|S])" "BLAS" rewrote_component ${component}) string(REGEX REPLACE "([b|B][l|L][a|A][s|S])" "BLAS" rewrote_component ${component})
set(component ${rewrote_component}) set(component ${rewrote_component})

View File

@ -33,7 +33,6 @@
#MPFR #MPFR
#MPFI #MPFI
#RS #RS
#TAUCS
#BLAS #BLAS
#LAPACK #LAPACK
#OPENNL #OPENNL
@ -157,7 +156,6 @@ fi
CGAL_COMPONENTS=${CGAL_COMPONENTS//[r|R][s|S]/RS} 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//[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//[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} CGAL_COMPONENTS=${CGAL_COMPONENTS//[l|L][a|A][p|P][a|A][c|C][k|K]/LAPACK}

View File

@ -93,7 +93,7 @@ public:
m_triplets.reserve(rows); m_triplets.reserve(rows);
} }
/// Delete this object and the wrapped TAUCS matrix. /// Delete this object and the wrapped matrix.
~Eigen_sparse_matrix() ~Eigen_sparse_matrix()
{ {
} }

View File

@ -75,7 +75,7 @@ public:
return this->size(); return this->size();
} }
/// Get TAUCS vector wrapped by this object. /// Get vector wrapped by this object.
const EigenType& eigen_object() const { const EigenType& eigen_object() const {
return *this; return *this;
} }

View File

@ -26,10 +26,6 @@ if ( CGAL_FOUND )
# VisualC++ optimization for applications dealing with large data # VisualC++ optimization for applications dealing with large data
if (MSVC) 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 # Use /FR to turn on IntelliSense
SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /FR") 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}) list(APPEND CGAL_3RD_PARTY_LIBRARIES ${Boost_PROGRAM_OPTIONS_LIBRARY})
endif() 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( "Authalic_parameterization.cpp" )
create_single_source_cgal_program( "Mesh_cutting_parameterization.cpp" ) create_single_source_cgal_program( "Mesh_cutting_parameterization.cpp" )
create_single_source_cgal_program( "Simple_parameterization.cpp" ) create_single_source_cgal_program( "Simple_parameterization.cpp" )
create_single_source_cgal_program( "Square_border_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) 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) if (EIGEN3_FOUND)
# Executables that require Eigen 3.1 # Executables that require Eigen 3.1
include( ${EIGEN3_USE_FILE} )
create_single_source_cgal_program( "Complete_parameterization_example.cpp" ) create_single_source_cgal_program( "Complete_parameterization_example.cpp" )
create_single_source_cgal_program( "Eigen_parameterization.cpp" ) create_single_source_cgal_program( "Eigen_parameterization.cpp" )
else(EIGEN3_FOUND) 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) 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" ) create_single_source_cgal_program( "polyhedron_ex_parameterization.cpp" )
else() else()

View File

@ -1 +1 @@
data/sphere966.off sphere966_authalic_square_taucs_parameterized.eps data/sphere966.off sphere966_authalic_square_opennl_parameterized.eps

View File

@ -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;
}

View File

@ -11,15 +11,6 @@
//---------------------------------------------------------- //----------------------------------------------------------
// polyhedron_ex_parameterization -t conformal -b circle mesh.off mesh.eps // 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 // Least Squares Conformal Maps parameterization
// two pinned vertices (automatically picked) // two pinned vertices (automatically picked)
@ -44,9 +35,6 @@
#include <CGAL/Parameterization_mesh_feature_extractor.h> #include <CGAL/Parameterization_mesh_feature_extractor.h>
#include <CGAL/OpenNL/linear_solver.h> #include <CGAL/OpenNL/linear_solver.h>
#ifdef CGAL_USE_TAUCS
#include <CGAL/Taucs_solver_traits.h>
#endif
#include "Polyhedron_ex.h" #include "Polyhedron_ex.h"
#include "Mesh_cutter.h" #include "Mesh_cutter.h"
@ -326,7 +314,7 @@ int main()
("border,b", po::value<std::string>(&border)->default_value("circle"), ("border,b", po::value<std::string>(&border)->default_value("circle"),
"border shape: circle, square or 2pts (lscm only)") "border shape: circle, square or 2pts (lscm only)")
("solver,s", po::value<std::string>(&solver)->default_value("opennl"), ("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,i", po::value<std::string>(&input)->default_value(""),
"input mesh (OFF)") "input mesh (OFF)")
("output,o", po::value<std::string>(&output)->default_value("out.eps"), ("output,o", po::value<std::string>(&output)->default_value("out.eps"),
@ -434,18 +422,6 @@ int main()
OpenNL::SymmetricLinearSolverTraits<double> OpenNL::SymmetricLinearSolverTraits<double>
>(mesh_patch, type, border); >(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 else
{ {
std::cerr << "Error: invalid solver parameter " << solver << std::endl; std::cerr << "Error: invalid solver parameter " << solver << std::endl;

View File

@ -91,7 +91,6 @@ else
run polyhedron_ex_parameterization run polyhedron_ex_parameterization
run Simple_parameterization run Simple_parameterization
run Square_border_parameterization run Square_border_parameterization
run Taucs_parameterization
fi fi
#---------------------------------------------------------------------# #---------------------------------------------------------------------#

View File

@ -3,7 +3,6 @@
# Utility script to run the surface parameterization example without knowing the executable name # 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 # Usage: test.sh parameterization-method border-parameterization solver output-format source-file-root
# Example: test.sh floater circle opennl obj sphere966 # Example: test.sh floater circle opennl obj sphere966
# Example: test.sh lscm 2pts taucs eps sphere966
# Find executable name (different on Windows and Unix) # Find executable name (different on Windows and Unix)
[ -f ./debug/polyhedron_ex_parameterization.exe ] && PARAM_APPLICATION="./debug/polyhedron_ex_parameterization.exe" [ -f ./debug/polyhedron_ex_parameterization.exe ] && PARAM_APPLICATION="./debug/polyhedron_ex_parameterization.exe"

View File

@ -10,24 +10,14 @@ echo ""
./test.sh barycentric square opennl eps "$1" ./test.sh barycentric square opennl eps "$1"
echo " -" echo " -"
./test.sh barycentric circle taucs obj "$1"
echo " -"
./test.sh floater circle opennl obj "$1" ./test.sh floater circle opennl obj "$1"
echo " -" echo " -"
./test.sh floater square taucs eps "$1"
echo " -"
./test.sh conformal circle taucs obj "$1"
echo " -"
./test.sh conformal square opennl eps "$1" ./test.sh conformal square opennl eps "$1"
echo " -" echo " -"
./test.sh authalic square taucs obj "$1"
echo " -"
# Skip authalic/opennl test which is very unstable # Skip authalic/opennl test which is very unstable
# ./test.sh authalic circle opennl eps "$1" # ./test.sh authalic circle opennl eps "$1"
# echo " -" # echo " -"
./test.sh lscm 2pts opennl obj "$1" ./test.sh lscm 2pts opennl obj "$1"
echo " -"
./test.sh lscm 2pts taucs eps "$1"
echo "" echo ""
echo " ************************" echo " ************************"

View File

@ -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 Since parameterizing meshes require efficient representation of sparse matrices
and efficient iterative or direct linear solvers, we provide links to standard 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). sparse linear solver (Levy).

View File

@ -26,10 +26,6 @@ if ( CGAL_FOUND )
# VisualC++ optimization for applications dealing with large data # VisualC++ optimization for applications dealing with large data
if (MSVC) 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 # Use /FR to turn on IntelliSense
SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /FR") SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /FR")
@ -65,21 +61,11 @@ if ( CGAL_FOUND )
include( ${EIGEN3_USE_FILE} ) include( ${EIGEN3_USE_FILE} )
endif() 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) if(NOT EIGEN3_FOUND)
message(STATUS "NOTICE: This directory requires Eigen 3.1 (or greater), and some features will not be available.") message(STATUS "NOTICE: This directory requires Eigen 3.1 (or greater), and some features will not be available.")
endif() 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" ) create_single_source_cgal_program( "extensive_parameterization_test.cpp" )
else() else()

View File

@ -34,9 +34,6 @@
#ifdef CGAL_EIGEN3_ENABLED #ifdef CGAL_EIGEN3_ENABLED
#include <CGAL/Eigen_solver_traits.h> #include <CGAL/Eigen_solver_traits.h>
#endif #endif
#ifdef CGAL_USE_TAUCS
#include <CGAL/Taucs_solver_traits.h>
#endif
// This test // This test
#include "Polyhedron_ex.h" #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; std::cerr << "Parameterization: " << task_timer.time() << " seconds." << std::endl << std::endl;
task_timer.reset(); 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 #ifdef CGAL_EIGEN3_ENABLED
//*************************************** //***************************************

View File

@ -38,11 +38,6 @@ if(QT4_FOUND)
find_package(QGLViewer ) find_package(QGLViewer )
endif(QT4_FOUND) 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 Eigen3 (requires 3.1.0 or greater)
find_package(Eigen3 3.1.0) 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} ) 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) if(GLEW_FOUND)
include_directories ( ${GLEW_INCLUDE_DIR} ) include_directories ( ${GLEW_INCLUDE_DIR} )
add_definitions(-DCGAL_GLEW_ENABLED) 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 # VisualC++ optimization for applications dealing with large data
if (MSVC) 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 # Use /FR to turn on IntelliSense
SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /FR") 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} ) target_link_libraries( ${plugin_name} ${CGAL_LIBRARIES} ${CGAL_3RD_PARTY_LIBRARIES} )
endmacro(point_set_demo_plugin) 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) qt4_wrap_ui( POISSON_UI_FILES PS_demo_poisson_plugin.ui)
point_set_demo_plugin(PS_demo_poisson_plugin point_set_demo_plugin(PS_demo_poisson_plugin
PS_demo_poisson_plugin PS_demo_poisson_plugin
PS_demo_poisson_plugin_cgal_code.cpp PS_demo_poisson_plugin_cgal_code.cpp
${POISSON_UI_FILES}) ${POISSON_UI_FILES})
target_link_libraries(PS_demo_poisson_plugin PS_demo_scene_polyhedron_item point_set) 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() 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() endif()
point_set_demo_plugin(PS_demo_inside_out_plugin PS_demo_inside_out_plugin) 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) point_set_demo_plugin(PS_demo_average_spacing_plugin PS_demo_average_spacing_plugin)
target_link_libraries(PS_demo_average_spacing_plugin point_set) 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) qt4_wrap_ui( CLEANING_UI_FILES PS_demo_cleaning_plugin.ui)
point_set_demo_plugin(PS_demo_cleaning_plugin point_set_demo_plugin(PS_demo_cleaning_plugin
PS_demo_cleaning_plugin PS_demo_cleaning_plugin

View File

@ -59,11 +59,7 @@ class PS_demo_poisson_plugin_dialog : public QDialog, private Ui::PoissonDialog
PS_demo_poisson_plugin_dialog(QWidget* /*parent*/ = 0) PS_demo_poisson_plugin_dialog(QWidget* /*parent*/ = 0)
{ {
setupUi(this); setupUi(this);
#ifdef CGAL_TAUCS_ENABLED
m_inputSolver->addItem("Taucs");
#endif
#ifdef CGAL_EIGEN3_ENABLED #ifdef CGAL_EIGEN3_ENABLED
m_inputSolver->addItem("Eigen - built-in simplicial LDLt"); m_inputSolver->addItem("Eigen - built-in simplicial LDLt");
m_inputSolver->addItem("Eigen - built-in CG"); m_inputSolver->addItem("Eigen - built-in CG");

View File

@ -17,9 +17,6 @@
#include <CGAL/Poisson_reconstruction_function.h> #include <CGAL/Poisson_reconstruction_function.h>
#include <CGAL/compute_average_spacing.h> #include <CGAL/compute_average_spacing.h>
#ifdef CGAL_TAUCS_ENABLED
#include <CGAL/Taucs_solver_traits.h>
#endif
#ifdef CGAL_EIGEN3_ENABLED #ifdef CGAL_EIGEN3_ENABLED
#include <CGAL/Eigen_solver_traits.h> #include <CGAL/Eigen_solver_traits.h>
#endif #endif
@ -98,25 +95,6 @@ Polyhedron* poisson_reconstruct(const Point_set& points,
); );
bool ok = false; 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 #ifdef CGAL_EIGEN3_ENABLED
if(solver_name=="Eigen - built-in simplicial LDLt") if(solver_name=="Eigen - built-in simplicial LDLt")

View File

@ -28,10 +28,6 @@ if ( CGAL_FOUND )
# VisualC++ optimization for applications dealing with large data # VisualC++ optimization for applications dealing with large data
if (MSVC) 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 # Use /FR to turn on IntelliSense
SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /FR") SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /FR")
@ -55,19 +51,14 @@ if ( CGAL_FOUND )
find_package(Eigen3 3.1.0) find_package(Eigen3 3.1.0)
if (EIGEN3_FOUND) if (EIGEN3_FOUND)
include( ${EIGEN3_USE_FILE} ) include( ${EIGEN3_USE_FILE} )
else()
find_package(TAUCS)
if(TAUCS_FOUND)
include( ${TAUCS_USE_FILE} )
endif(TAUCS_FOUND)
endif() endif()
if (EIGEN3_FOUND OR TAUCS_FOUND) if (EIGEN3_FOUND)
# Executables that require Eigen 3 or TAUCS # Executables that require Eigen 3
create_single_source_cgal_program( "poisson_reconstruction_example.cpp" ) create_single_source_cgal_program( "poisson_reconstruction_example.cpp" )
create_single_source_cgal_program( "poisson_reconstruction.cpp" ) create_single_source_cgal_program( "poisson_reconstruction.cpp" )
else() 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() endif()

View File

@ -25,9 +25,6 @@
#include <CGAL/Point_with_normal_3.h> #include <CGAL/Point_with_normal_3.h>
#include <CGAL/IO/read_xyz_points.h> #include <CGAL/IO/read_xyz_points.h>
#include <CGAL/compute_average_spacing.h> #include <CGAL/compute_average_spacing.h>
#ifdef CGAL_TAUCS_ENABLED
#include <CGAL/Taucs_solver_traits.h>
#endif
#include "compute_normal.h" #include "compute_normal.h"
@ -124,9 +121,6 @@ int main(int argc, char * argv[])
std::cerr << "Options:\n"; std::cerr << "Options:\n";
std::cerr << " -sm_radius <float> Radius upper bound (default=100 * average spacing)\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"; 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; return EXIT_FAILURE;
} }
@ -135,15 +129,7 @@ int main(int argc, char * argv[])
FT sm_angle = 20.0; // Min triangle angle (degrees). 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_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. 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. 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 approximation_ratio = 0.02;
double average_spacing_ratio = 5; 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()), CGAL::make_normal_of_point_with_normal_pmap(PointList::value_type()),
visitor); 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 #ifdef CGAL_EIGEN3_ENABLED
{ {
if (solver_name == "eigen") if (solver_name == "eigen")

View File

@ -38,9 +38,6 @@
#ifdef CGAL_EIGEN3_ENABLED #ifdef CGAL_EIGEN3_ENABLED
#include <CGAL/Eigen_solver_traits.h> #include <CGAL/Eigen_solver_traits.h>
#else #else
#ifdef CGAL_TAUCS_ENABLED
#include <CGAL/Taucs_solver_traits.h>
#endif
#endif #endif
#include <CGAL/centroid.h> #include <CGAL/centroid.h>
#include <CGAL/property_map.h> #include <CGAL/property_map.h>
@ -532,26 +529,15 @@ public:
else else
return compute_implicit_function<SparseLinearAlgebraTraits_d,Poisson_visitor>(solver,Poisson_visitor()); return compute_implicit_function<SparseLinearAlgebraTraits_d,Poisson_visitor>(solver,Poisson_visitor());
} }
/// \cond SKIP_IN_MANUAL /// \cond SKIP_IN_MANUAL
#ifdef CGAL_EIGEN3_ENABLED
// This variant provides the default sparse linear traits class = Eigen_solver_traits. // This variant provides the default sparse linear traits class = Eigen_solver_traits.
bool compute_implicit_function(bool smoother_hole_filling = false) bool compute_implicit_function(bool smoother_hole_filling = false)
{ {
typedef Eigen_solver_traits<Eigen::ConjugateGradient<Eigen_sparse_symmetric_matrix<double>::EigenType> > Solver; typedef Eigen_solver_traits<Eigen::ConjugateGradient<Eigen_sparse_symmetric_matrix<double>::EigenType> > Solver;
return compute_implicit_function<Solver>(Solver(), smoother_hole_filling); 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 boost::tuple<FT, Cell_handle, bool> special_func(const Point& p) const
{ {
m_hint = m_tr->locate(p ,m_hint ); // no hint when we use hierarchy m_hint = m_tr->locate(p ,m_hint ); // no hint when we use hierarchy

View File

@ -27,10 +27,6 @@ if ( CGAL_FOUND )
# VisualC++ optimization for applications dealing with large data # VisualC++ optimization for applications dealing with large data
if (MSVC) 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 # Use /FR to turn on IntelliSense
SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /FR") SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /FR")
@ -51,23 +47,15 @@ if ( CGAL_FOUND )
ADD_DEFINITIONS( "-DDEBUG_TRACE" ) # turn on traces ADD_DEFINITIONS( "-DDEBUG_TRACE" ) # turn on traces
find_package(Eigen3 3.1.0) #(requires 3.1.0 or greater) find_package(Eigen3 3.1.0) #(requires 3.1.0 or greater)
if (NOT EIGEN3_FOUND) if(EIGEN3_FOUND)
find_package(TAUCS)
if(TAUCS_FOUND)
include( ${TAUCS_USE_FILE} )
endif(TAUCS_FOUND)
else()
include( ${EIGEN3_USE_FILE} ) include( ${EIGEN3_USE_FILE} )
endif()
if(EIGEN3_FOUND OR TAUCS_FOUND) # Executables that require Eigen 3.1
# Executables that require Eigen 3.1 or TAUCS (thus BLAS and LAPACK)
create_single_source_cgal_program( "poisson_reconstruction_test.cpp" ) create_single_source_cgal_program( "poisson_reconstruction_test.cpp" )
else() 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() endif()

View File

@ -19,7 +19,6 @@
!define ViaFTP !define ViaFTP
Var Platform Var Platform
;Var IsTAUCSInstalled
!ifdef ViaFTP !ifdef ViaFTP
!define DownloadOK "OK" !define DownloadOK "OK"
@ -59,27 +58,6 @@ Var Platform
!insertmacro DownloadFileFrom ${FTP_SRC} ${SRC_FOLDER} ${FILE} ${TGT} !insertmacro DownloadFileFrom ${FTP_SRC} ${SRC_FOLDER} ${FILE} ${TGT}
!macroend !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 !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}/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" !insertmacro DownloadFile "auxiliary/${PLATFORM}/MPFR/3.0.0/" "mpfr-all-CGAL-3.9.zip" "$INSTDIR\auxiliary\gmp"

View File

@ -229,17 +229,6 @@ Section "GMP and MPFR precompiled libs" GMP_LIB_Idx
SectionEnd 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_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_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_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_DOC ${LANG_ENGLISH} "The HTML manuals."
LangString DESC_ENVSET ${LANG_ENGLISH} "already set" LangString DESC_ENVSET ${LANG_ENGLISH} "already set"
@ -314,8 +302,6 @@ SectionEnd
!insertmacro MUI_DESCRIPTION_TEXT ${MAIN_Idx} $(DESC_MAIN) !insertmacro MUI_DESCRIPTION_TEXT ${MAIN_Idx} $(DESC_MAIN)
!insertmacro MUI_DESCRIPTION_TEXT ${SAMPLES_Idx} $(DESC_SAMPLES) !insertmacro MUI_DESCRIPTION_TEXT ${SAMPLES_Idx} $(DESC_SAMPLES)
!insertmacro MUI_DESCRIPTION_TEXT ${GMP_LIB_Idx} $(DESC_GMP_LIB) !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_DESCRIPTION_TEXT ${DOC_Idx} $(DESC_DOC)
!insertmacro MUI_FUNCTION_DESCRIPTION_END !insertmacro MUI_FUNCTION_DESCRIPTION_END