mirror of https://github.com/CGAL/cgal
update examples and make them compile on linux
This commit is contained in:
parent
7ecfe2a1c0
commit
707e9fcccf
|
|
@ -2,9 +2,16 @@
|
|||
# This is the CMake script for compiling a CGAL application.
|
||||
|
||||
|
||||
project( Surface_modeling_example )
|
||||
project( Surface_modeling_ )
|
||||
|
||||
cmake_minimum_required(VERSION 2.6.2)
|
||||
if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" VERSION_GREATER 2.6)
|
||||
if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.${CMAKE_PATCH_VERSION}" VERSION_GREATER 2.8.3)
|
||||
cmake_policy(VERSION 2.8.4)
|
||||
else()
|
||||
cmake_policy(VERSION 2.6)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
find_package(CGAL QUIET COMPONENTS Core )
|
||||
|
||||
|
|
@ -12,15 +19,21 @@ if ( CGAL_FOUND )
|
|||
|
||||
include( ${CGAL_USE_FILE} )
|
||||
|
||||
find_package(Eigen3 3.1.91) #(requires 3.2.0 or greater)
|
||||
if (EIGEN3_FOUND)
|
||||
include( ${EIGEN3_USE_FILE} )
|
||||
include( CGAL_CreateSingleSourceCGALProgram )
|
||||
|
||||
include_directories (BEFORE ../../include)
|
||||
include_directories (BEFORE "../../include")
|
||||
|
||||
create_single_source_cgal_program( "hello.cpp" )
|
||||
create_single_source_cgal_program( "k-ring.cpp" )
|
||||
create_single_source_cgal_program( "k-ring_BGL.cpp" )
|
||||
create_single_source_cgal_program( "example.cpp" )
|
||||
create_single_source_cgal_program( "all_roi_assign_example.cpp" )
|
||||
create_single_source_cgal_program( "custom_weight_for_edges_example.cpp" )
|
||||
create_single_source_cgal_program( "enriched_polyhedron_with_custom_pmap_example.cpp" )
|
||||
create_single_source_cgal_program( "k_ring_roi_translate_rotate_example.cpp" )
|
||||
|
||||
else()
|
||||
message(STATUS "This program requires the Eigen library, version 3.2 or later and will not be compiled.")
|
||||
endif()
|
||||
else()
|
||||
|
||||
message(STATUS "This program requires the CGAL library, and will not be compiled.")
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
#include <CGAL/Deform_mesh.h>
|
||||
|
||||
#include <CGAL/Polyhedron_3.h>
|
||||
#include <CGAL/Simple_cartesian.h>
|
||||
#include <CGAL/Deform_mesh.h>
|
||||
#include <CGAL/Polyhedron_3.h>
|
||||
#include <CGAL/IO/Polyhedron_iostream.h>
|
||||
#include <CGAL/Eigen_solver_traits.h>
|
||||
|
||||
|
|
@ -9,10 +8,6 @@
|
|||
#include <map>
|
||||
#include <boost/property_map/property_map.hpp>
|
||||
|
||||
#include <Eigen/SuperLUSupport>
|
||||
|
||||
typedef CGAL::Eigen_solver_traits<Eigen::SuperLU<CGAL::Eigen_sparse_matrix<double>::EigenType> > DefaultSolver;
|
||||
|
||||
typedef CGAL::Simple_cartesian<double> Kernel;
|
||||
typedef CGAL::Polyhedron_3<Kernel> Polyhedron;
|
||||
|
||||
|
|
@ -26,7 +21,7 @@ typedef std::map<edge_descriptor, std::size_t> Internal_edge_map;
|
|||
typedef boost::associative_property_map<Internal_vertex_map> Vertex_index_map;
|
||||
typedef boost::associative_property_map<Internal_edge_map> Edge_index_map;
|
||||
|
||||
typedef CGAL::Deform_mesh<Polyhedron, DefaultSolver, Vertex_index_map, Edge_index_map, CGAL::ORIGINAL_ARAP> Deform_mesh;
|
||||
typedef CGAL::Deform_mesh<Polyhedron, Vertex_index_map, Edge_index_map> Deform_mesh;
|
||||
|
||||
template<class Iterator>
|
||||
Iterator next_helper(Iterator it, std::size_t n) {
|
||||
|
|
@ -38,7 +33,14 @@ Iterator next_helper(Iterator it, std::size_t n) {
|
|||
int main()
|
||||
{
|
||||
Polyhedron mesh;
|
||||
std::ifstream("models/plane.off") >> mesh;
|
||||
std::ifstream input("models/plane.off");
|
||||
|
||||
if (input)
|
||||
input >> mesh;
|
||||
else{
|
||||
std::cerr<< "Cannot open models/plane.off\n";
|
||||
return 1;
|
||||
}
|
||||
|
||||
Internal_vertex_map vertex_index_map;
|
||||
Internal_edge_map edge_index_map;
|
||||
|
|
@ -82,7 +84,9 @@ int main()
|
|||
deform_mesh.deform(10, 0.0); // deform(unsigned int iterations, double tolerance) can be called with instant parameters
|
||||
// this time iterate 10 times, and do not use energy based termination
|
||||
|
||||
std::ofstream("deform_1.off") << mesh; // save deformed mesh
|
||||
std::ofstream output("deform_1.off");
|
||||
output << mesh; // save deformed mesh
|
||||
output.close();
|
||||
|
||||
// want to add another handle
|
||||
//// PREPROCESS SECTION AGAIN////
|
||||
|
|
@ -98,5 +102,6 @@ int main()
|
|||
|
||||
deform_mesh.deform(15, 0.0);
|
||||
|
||||
std::ofstream("deform_2.off") << mesh;
|
||||
output.open("deform_2.off");
|
||||
output << mesh;
|
||||
}
|
||||
|
|
@ -1,7 +1,6 @@
|
|||
#include <CGAL/Deform_mesh.h>
|
||||
|
||||
#include <CGAL/Polyhedron_3.h>
|
||||
#include <CGAL/Simple_cartesian.h>
|
||||
#include <CGAL/Deform_mesh.h>
|
||||
#include <CGAL/Polyhedron_3.h>
|
||||
#include <CGAL/IO/Polyhedron_iostream.h>
|
||||
#include <CGAL/Eigen_solver_traits.h>
|
||||
|
||||
|
|
@ -9,10 +8,6 @@
|
|||
#include <map>
|
||||
#include <boost/property_map/property_map.hpp>
|
||||
|
||||
#include <Eigen/SuperLUSupport>
|
||||
|
||||
typedef CGAL::Eigen_solver_traits<Eigen::SuperLU<CGAL::Eigen_sparse_matrix<double>::EigenType> > DefaultSolver;
|
||||
|
||||
typedef CGAL::Simple_cartesian<double> Kernel;
|
||||
typedef CGAL::Polyhedron_3<Kernel> Polyhedron;
|
||||
|
||||
|
|
@ -38,12 +33,19 @@ struct Weights_from_map
|
|||
std::map<edge_descriptor, double>* weight_map;
|
||||
};
|
||||
|
||||
typedef CGAL::Deform_mesh<Polyhedron, DefaultSolver, Vertex_index_map, Edge_index_map, CGAL::ORIGINAL_ARAP, Weights_from_map> Deform_mesh;
|
||||
typedef CGAL::Deform_mesh<Polyhedron, Vertex_index_map, Edge_index_map, CGAL::ORIGINAL_ARAP, Weights_from_map> Deform_mesh;
|
||||
|
||||
int main()
|
||||
{
|
||||
Polyhedron mesh;
|
||||
std::ifstream("models/plane.off") >> mesh;
|
||||
std::ifstream input("models/plane.off");
|
||||
|
||||
if (input)
|
||||
input >> mesh;
|
||||
else{
|
||||
std::cerr << "Cannot open models/plane.off\n";
|
||||
return 1;
|
||||
}
|
||||
|
||||
std::map<edge_descriptor, double> weight_map;
|
||||
// Store all weights
|
||||
|
|
|
|||
|
|
@ -1,15 +1,12 @@
|
|||
#include <CGAL/Deform_mesh.h>
|
||||
|
||||
#include <CGAL/Polyhedron_3.h>
|
||||
#include <CGAL/Simple_cartesian.h>
|
||||
#include <CGAL/Deform_mesh.h>
|
||||
#include <CGAL/Polyhedron_3.h>
|
||||
#include <CGAL/IO/Polyhedron_iostream.h>
|
||||
#include <CGAL/Eigen_solver_traits.h>
|
||||
|
||||
#include <fstream>
|
||||
#include <boost/property_map/property_map.hpp>
|
||||
|
||||
#include <Eigen/SuperLUSupport>
|
||||
|
||||
#include <CGAL/Polyhedron_items_with_id_3.h>
|
||||
|
||||
// Property map using extra field in KeyType
|
||||
|
|
@ -27,8 +24,6 @@ public:
|
|||
reference operator[](key_type key) const { return key->id(); }
|
||||
};
|
||||
|
||||
typedef CGAL::Eigen_solver_traits<Eigen::SuperLU<CGAL::Eigen_sparse_matrix<double>::EigenType> > DefaultSolver;
|
||||
|
||||
typedef CGAL::Simple_cartesian<double> Kernel;
|
||||
typedef CGAL::Polyhedron_3<Kernel, CGAL::Polyhedron_items_with_id_3> Polyhedron; //enriched polyhedron
|
||||
|
||||
|
|
@ -38,12 +33,19 @@ typedef boost::graph_traits<Polyhedron>::edge_descriptor edge_descriptor;
|
|||
typedef Polyhedron_with_id_property_map<Polyhedron, vertex_descriptor> Vertex_index_map; // use id field of vertices
|
||||
typedef Polyhedron_with_id_property_map<Polyhedron, edge_descriptor> Edge_index_map; // use id field of edges
|
||||
|
||||
typedef CGAL::Deform_mesh<Polyhedron, DefaultSolver, Vertex_index_map, Edge_index_map> Deform_mesh;
|
||||
typedef CGAL::Deform_mesh<Polyhedron, Vertex_index_map, Edge_index_map> Deform_mesh;
|
||||
|
||||
int main()
|
||||
{
|
||||
Polyhedron mesh;
|
||||
std::ifstream("models/plane.off") >> mesh;
|
||||
std::ifstream input("models/plane.off");
|
||||
|
||||
if (input)
|
||||
input >> mesh;
|
||||
else{
|
||||
std::cerr<< "Cannot open models/plane.off";
|
||||
return 1;
|
||||
}
|
||||
|
||||
Deform_mesh deform_mesh(mesh, Vertex_index_map(), Edge_index_map());
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
#include <CGAL/Deform_mesh.h>
|
||||
|
||||
#include <CGAL/Polyhedron_3.h>
|
||||
#include <CGAL/Simple_cartesian.h>
|
||||
#include <CGAL/Deform_mesh.h>
|
||||
#include <CGAL/Polyhedron_3.h>
|
||||
#include <CGAL/IO/Polyhedron_iostream.h>
|
||||
#include <CGAL/Eigen_solver_traits.h>
|
||||
|
||||
|
|
@ -10,10 +9,6 @@
|
|||
#include <queue>
|
||||
#include <boost/property_map/property_map.hpp>
|
||||
|
||||
#include <Eigen/SuperLUSupport>
|
||||
|
||||
typedef CGAL::Eigen_solver_traits<Eigen::SuperLU<CGAL::Eigen_sparse_matrix<double>::EigenType> > DefaultSolver;
|
||||
|
||||
typedef CGAL::Simple_cartesian<double> Kernel;
|
||||
typedef CGAL::Polyhedron_3<Kernel> Polyhedron;
|
||||
|
||||
|
|
@ -28,7 +23,7 @@ typedef std::map<edge_descriptor, std::size_t> Internal_edge_map;
|
|||
typedef boost::associative_property_map<Internal_vertex_map> Vertex_index_map;
|
||||
typedef boost::associative_property_map<Internal_edge_map> Edge_index_map;
|
||||
|
||||
typedef CGAL::Deform_mesh<Polyhedron, DefaultSolver, Vertex_index_map, Edge_index_map, CGAL::ORIGINAL_ARAP> Deform_mesh;
|
||||
typedef CGAL::Deform_mesh<Polyhedron, Vertex_index_map, Edge_index_map> Deform_mesh;
|
||||
|
||||
// extract vertices which are at most k (inclusive) far from vertex v
|
||||
std::map<vertex_descriptor, int> extract_k_ring(const Polyhedron &P, vertex_descriptor v, int k)
|
||||
|
|
@ -64,7 +59,14 @@ Iterator next_helper(Iterator it, std::size_t n) {
|
|||
int main()
|
||||
{
|
||||
Polyhedron mesh;
|
||||
std::ifstream("models/plane.off") >> mesh;
|
||||
std::ifstream input("models/plane.off");
|
||||
|
||||
if (input)
|
||||
input >> mesh;
|
||||
else{
|
||||
std::cerr<< "Cannot open models/plane.off";
|
||||
return 1;
|
||||
}
|
||||
|
||||
Internal_vertex_map vertex_index_map;
|
||||
Internal_edge_map edge_index_map;
|
||||
|
|
@ -107,7 +109,9 @@ int main()
|
|||
|
||||
deform_mesh.deform();
|
||||
|
||||
std::ofstream("deform_1.off") << mesh; // save deformed mesh
|
||||
std::ofstream output("deform_1.off");
|
||||
output << mesh; // save deformed mesh
|
||||
output.close();
|
||||
|
||||
// Note that translate and rotate are not cumulative,
|
||||
// they just use original positions (positions at the time of construction) of the handles while calculating target positions
|
||||
|
|
@ -118,6 +122,7 @@ int main()
|
|||
deform_mesh.set_tolerance(0.0);
|
||||
deform_mesh.deform(); // will iterate 10 times
|
||||
|
||||
std::ofstream("deform_2.off") << mesh;
|
||||
output.open("deform_2.off");
|
||||
output << mesh;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue