├── .github ├── pull_request_template.md └── workflows │ ├── AutoMergeMainOnDevel.yml │ └── BuildExamples.yml ├── .gitignore ├── CMakeLists.txt ├── LICENSE.txt ├── README.md ├── apps ├── CMakeLists.txt ├── QT │ ├── img_filters │ │ ├── img_filters.cpp │ │ └── img_filters.pro │ ├── trimesh_QT │ │ ├── glarea.cpp │ │ ├── glarea.h │ │ ├── main.cpp │ │ ├── mainwindow.cpp │ │ ├── mainwindow.h │ │ ├── mainwindow.ui │ │ └── trimesh_qt.pro │ ├── trimesh_QT_shared │ │ ├── glarea.cpp │ │ ├── glarea.h │ │ ├── main.cpp │ │ ├── mainwindow.cpp │ │ ├── mainwindow.h │ │ ├── mainwindow.ui │ │ ├── mesh.h │ │ └── trimesh_qt.pro │ ├── trimesh_ant_freeglut │ │ ├── main.cpp │ │ └── trimesh_ant_freeglut.pro │ ├── trimesh_ant_qt │ │ ├── glwidget.cpp │ │ ├── glwidget.h │ │ ├── main.cpp │ │ └── trimesh_ant_qt.pro │ └── trimesh_pos_demo │ │ ├── glwidget.cpp │ │ ├── glwidget.h │ │ ├── main.cpp │ │ ├── mesh_type.h │ │ ├── trimesh_pos_demo.cpp │ │ ├── trimesh_pos_demo.pro │ │ ├── trimesh_vfiter_demo.cpp │ │ ├── window.cpp │ │ └── window.h ├── embree │ ├── CMakeLists.txt │ └── embree_sample.cpp ├── imguiViewer │ ├── CMakeLists.txt │ ├── FileBrowser │ │ ├── Dirent │ │ │ └── dirent.h │ │ ├── ImGuiFileBrowser.cpp │ │ └── ImGuiFileBrowser.h │ ├── main.cpp │ └── triangle_mesh_type.h ├── meshes │ ├── Tetraascii.ply │ ├── abominevole.off │ ├── bunny10k_textured.ply │ ├── conrod.off │ ├── fertility_quad.off │ ├── fertility_tri.off │ ├── quad.ply │ ├── quad4.ply │ ├── quad5.ply │ └── torus.off ├── metro │ ├── CMakeLists.txt │ ├── history.txt │ ├── metro.cpp │ ├── metro.pro │ ├── readme.txt │ ├── sample │ │ ├── knot_max_simplified.STL │ │ ├── knot_orig.ply │ │ ├── knot_orig_metro.ply │ │ ├── knot_subsampled.ply │ │ ├── knot_subsampled_metro.ply │ │ ├── knot_vcg_simplified.ply │ │ ├── knot_vcg_simplified_metro.ply │ │ └── readme.txt │ └── sampling.h ├── minimal_project │ ├── CMakeLists.txt │ └── simple_main.cpp ├── plymc │ ├── plymc.pro │ ├── plymc_main.cpp │ └── simplemeshprovider.h ├── sample │ ├── CMakeLists.txt │ ├── aabb_binary_tree │ │ ├── CMakeLists.txt │ │ ├── aabb_binary_tree.cpp │ │ └── aabb_binary_tree.pro │ ├── colorspace │ │ ├── CMakeLists.txt │ │ ├── colorspace.cpp │ │ └── colorspace.pro │ ├── common.pri │ ├── edgemesh_sampling │ │ ├── edgemesh_sampling.cpp │ │ └── edgemesh_sampling.pro │ ├── polygonmesh_base │ │ ├── CMakeLists.txt │ │ ├── polygonmesh.cpp │ │ └── polygonmesh_base.pro │ ├── polygonmesh_dual │ │ ├── CMakeLists.txt │ │ ├── polygonmesh_dual.cpp │ │ └── polygonmesh_dual.pro │ ├── polygonmesh_optimize │ │ ├── CMakeLists.txt │ │ ├── polygonmesh_optimize.cpp │ │ └── polygonmesh_optimize.pro │ ├── polygonmesh_polychord_collapse │ │ ├── CMakeLists.txt │ │ ├── polygonmesh_polychord_collapse.cpp │ │ └── polygonmesh_polychord_collapse.pro │ ├── polygonmesh_quadsimpl │ │ ├── polygonmesh_quadsimpl.cpp │ │ └── polygonmesh_quadsimpl.pro │ ├── polygonmesh_smooth │ │ ├── CMakeLists.txt │ │ ├── polygonmesh_smooth.cpp │ │ └── polygonmesh_smooth.pro │ ├── polygonmesh_zonohedra │ │ ├── input.txt │ │ ├── polygonmesh_zonohedra.cpp │ │ └── polygonmesh_zonohedra.pro │ ├── sample.pro │ ├── space_index_2d │ │ ├── CMakeLists.txt │ │ ├── space_index_2d.cpp │ │ └── space_index_2d.pro │ ├── space_minimal │ │ ├── space_minimal.cpp │ │ └── space_minimal.pro │ ├── space_packer │ │ ├── CMakeLists.txt │ │ ├── space_packer.cpp │ │ └── space_packer.pro │ ├── space_rasterized_packer │ │ ├── CMakeLists.txt │ │ ├── space_rasterized_packer.cpp │ │ └── space_rasterized_packer.pro │ ├── trimesh_align_pair │ │ ├── CMakeLists.txt │ │ ├── trimesh_align_pair.cpp │ │ └── trimesh_align_pair.pro │ ├── trimesh_allocate │ │ ├── CMakeLists.txt │ │ ├── trimesh_allocate.cpp │ │ └── trimesh_allocate.pro │ ├── trimesh_attribute │ │ ├── CMakeLists.txt │ │ ├── trimesh_attribute.cpp │ │ └── trimesh_attribute.pro │ ├── trimesh_attribute_saving │ │ ├── CMakeLists.txt │ │ ├── trimesh_attribute_saving.cpp │ │ └── trimesh_attribute_saving.pro │ ├── trimesh_ball_pivoting │ │ ├── CMakeLists.txt │ │ ├── trimesh_ball_pivoting.cpp │ │ └── trimesh_ball_pivoting.pro │ ├── trimesh_base │ │ ├── CMakeLists.txt │ │ ├── trimesh_base.cpp │ │ └── trimesh_base.pro │ ├── trimesh_closest │ │ ├── CMakeLists.txt │ │ ├── trimesh_closest.cpp │ │ └── trimesh_closest.pro │ ├── trimesh_clustering │ │ ├── CMakeLists.txt │ │ ├── trimesh_clustering.cpp │ │ └── trimesh_clustering.pro │ ├── trimesh_color │ │ ├── CMakeLists.txt │ │ ├── trimesh_color.cpp │ │ └── trimesh_color.pro │ ├── trimesh_copy │ │ ├── CMakeLists.txt │ │ ├── trimesh_copy.cpp │ │ └── trimesh_copy.pro │ ├── trimesh_create │ │ ├── CMakeLists.txt │ │ ├── trimesh_create.cpp │ │ └── trimesh_create.pro │ ├── trimesh_curvature │ │ ├── CMakeLists.txt │ │ ├── trimesh_curvature.cpp │ │ └── trimesh_curvature.pro │ ├── trimesh_cylinder_clipping │ │ ├── CMakeLists.txt │ │ ├── trimesh_cylinder_clipping.cpp │ │ └── trimesh_cylinder_clipping.pro │ ├── trimesh_disk_parametrization │ │ ├── CMakeLists.txt │ │ ├── trimesh_disk_parametrization.cpp │ │ └── trimesh_disk_parametrization.pro │ ├── trimesh_edge │ │ ├── trimesh_edge.cpp │ │ └── trimesh_edge.pro │ ├── trimesh_fitting │ │ ├── CMakeLists.txt │ │ ├── trimesh_fitting.cpp │ │ └── trimesh_fitting.pro │ ├── trimesh_geodesic │ │ ├── CMakeLists.txt │ │ ├── trimesh_geodesic.cpp │ │ └── trimesh_geodesic.pro │ ├── trimesh_geodesic_heat │ │ ├── CMakeLists.txt │ │ ├── trimesh_geodesic_heat.cpp │ │ └── trimesh_geodesic_heat.pro │ ├── trimesh_harmonic │ │ ├── CMakeLists.txt │ │ ├── trimesh_harmonic.cpp │ │ └── trimesh_harmonic.pro │ ├── trimesh_hole │ │ ├── CMakeLists.txt │ │ ├── trimesh_hole.cpp │ │ └── trimesh_hole.pro │ ├── trimesh_implicit_smooth │ │ ├── CMakeLists.txt │ │ ├── trimesh_implicit_smooth.cpp │ │ └── trimesh_implicit_smooth.pro │ ├── trimesh_import_fbx │ │ ├── trimesh_import_fbx.cpp │ │ └── trimesh_import_fbx.pro │ ├── trimesh_indexing │ │ ├── CMakeLists.txt │ │ ├── nanoflann.hpp │ │ ├── trimesh_indexing.cpp │ │ └── trimesh_indexing.pro │ ├── trimesh_inertia │ │ ├── CMakeLists.txt │ │ ├── trimesh_inertia.cpp │ │ └── trimesh_inertia.pro │ ├── trimesh_intersection_mesh │ │ ├── CMakeLists.txt │ │ ├── trimesh_intersection_mesh.cpp │ │ └── trimesh_intersection_mesh.pro │ ├── trimesh_intersection_plane │ │ ├── CMakeLists.txt │ │ ├── trimesh_intersection_plane.cpp │ │ └── trimesh_intersection_plane.pro │ ├── trimesh_isosurface │ │ ├── CMakeLists.txt │ │ ├── simple_volume.h │ │ ├── trimesh_isosurface.cpp │ │ └── trimesh_isosurface.pro │ ├── trimesh_join │ │ ├── CMakeLists.txt │ │ ├── trimesh_join.cpp │ │ └── trimesh_join.pro │ ├── trimesh_kdtree │ │ ├── CMakeLists.txt │ │ ├── trimesh_kdtree.cpp │ │ └── trimesh_kdtree.pro │ ├── trimesh_montecarlo_sampling │ │ ├── CMakeLists.txt │ │ ├── trimesh_montecarlo_sampling.cpp │ │ └── trimesh_montecarlo_sampling.pro │ ├── trimesh_normal │ │ ├── CMakeLists.txt │ │ ├── trimesh_normal.cpp │ │ └── trimesh_normal.pro │ ├── trimesh_optional │ │ ├── CMakeLists.txt │ │ ├── trimesh_optional.cpp │ │ ├── trimesh_optional.pro │ │ ├── trimesh_optional_occ.cpp │ │ ├── trimesh_optional_ocf.cpp │ │ └── trimesh_simpdata_simp.cpp │ ├── trimesh_pointcloud_sampling │ │ ├── CMakeLists.txt │ │ ├── trimesh_pointcloud_sampling.cpp │ │ └── trimesh_pointcloud_sampling.pro │ ├── trimesh_pointmatching │ │ ├── CMakeLists.txt │ │ ├── trimesh_pointmatching.cpp │ │ └── trimesh_pointmatching.pro │ ├── trimesh_ransac │ │ ├── trimesh_ransac.cpp │ │ └── trimesh_ransac.pro │ ├── trimesh_ray │ │ ├── CMakeLists.txt │ │ ├── trimesh_ray.cpp │ │ └── trimesh_ray.pro │ ├── trimesh_refine │ │ ├── CMakeLists.txt │ │ ├── trimesh_refine.cpp │ │ └── trimesh_refine.pro │ ├── trimesh_remeshing │ │ ├── CMakeLists.txt │ │ ├── trimesh_remeshing.cpp │ │ └── trimesh_remeshing.pro │ ├── trimesh_resampler │ │ ├── trimesh_resampler.cpp │ │ └── trimesh_resampler.pro │ ├── trimesh_sampling │ │ ├── CMakeLists.txt │ │ ├── trimesh_sampling.cpp │ │ └── trimesh_sampling.pro │ ├── trimesh_select │ │ ├── CMakeLists.txt │ │ ├── trimesh_select.cpp │ │ └── trimesh_select.pro │ ├── trimesh_selfintersection │ │ ├── trimesh_selfintersection.cpp │ │ └── trimesh_selfintersection.pro │ ├── trimesh_smooth │ │ ├── CMakeLists.txt │ │ ├── trimesh_smooth.cpp │ │ └── trimesh_smooth.pro │ ├── trimesh_split_vertex │ │ ├── CMakeLists.txt │ │ ├── trimesh_split_vertex.cpp │ │ └── trimesh_split_vertex.pro │ ├── trimesh_texture │ │ ├── CMakeLists.txt │ │ ├── trimesh_texture.cpp │ │ └── trimesh_texture.pro │ ├── trimesh_texture_clean │ │ ├── CMakeLists.txt │ │ ├── trimesh_texture_clean.cpp │ │ └── trimesh_texture_clean.pro │ ├── trimesh_topological_cut │ │ ├── CMakeLists.txt │ │ ├── trimesh_topological_cut.cpp │ │ └── trimesh_topological_cut.pro │ ├── trimesh_topology │ │ ├── CMakeLists.txt │ │ ├── trimesh_topology.cpp │ │ └── trimesh_topology.pro │ ├── trimesh_volumesampling │ │ ├── trimesh_volumesampling.cpp │ │ └── trimesh_volumesampling.pro │ ├── trimesh_voronoi │ │ ├── CMakeLists.txt │ │ ├── trimesh_voronoi.cpp │ │ └── trimesh_voronoi.pro │ ├── trimesh_voronoi_remesh │ │ ├── trimesh_voronoi_remesh.cpp │ │ └── trimesh_voronoi_remesh.pro │ ├── trimesh_voronoiatlas │ │ ├── CMakeLists.txt │ │ ├── trimesh_voronoiatlas.cpp │ │ └── trimesh_voronoiatlas.pro │ ├── trimesh_voronoiclustering │ │ ├── CMakeLists.txt │ │ ├── trimesh_voronoiclustering.cpp │ │ └── trimesh_voronoiclustering.pro │ └── trimesh_voronoisampling │ │ ├── CMakeLists.txt │ │ ├── trimesh_voronoisampling.cpp │ │ └── trimesh_voronoisampling.pro ├── test │ ├── camerashot │ │ ├── camerashot.pro │ │ └── camerashot_test.cpp │ ├── quaternion │ │ └── quat_test.cpp │ ├── tetramesh │ │ └── test │ │ │ ├── test.cpp │ │ │ ├── test.ncb │ │ │ ├── test.sln │ │ │ ├── test.suo │ │ │ └── test.vcproj │ └── trackball │ │ ├── main.cpp │ │ ├── trackball.sln │ │ └── trackball.vcproj ├── tridecimator │ ├── CMakeLists.txt │ ├── readme.md │ ├── tridecimator.cpp │ └── tridecimator.pro └── unsupported │ ├── extractors │ ├── extractor │ │ ├── Definitions.h │ │ ├── Implicit.h │ │ ├── ImplicitSphere.h │ │ ├── SphereDifference.h │ │ ├── SphereUnion.h │ │ ├── Volume.h │ │ ├── Walker.h │ │ ├── extractor.pro │ │ ├── extractor.vcproj │ │ └── main.cpp │ ├── extractors.ncb │ ├── extractors.sln │ └── extractors.suo │ ├── pivoting │ ├── cmesh.h │ ├── curvature.h │ ├── glarea.cpp │ ├── glarea.h │ ├── main.cpp │ ├── mainwindow.ui │ ├── pivot.dev │ ├── pivot.h │ └── ring.h │ ├── ptx2ply │ ├── ptx2ply.cpp │ ├── ptx2ply.pro │ ├── ptx2ply.sln │ └── ptx2ply.vcproj │ ├── quadrangulator │ ├── bunny.ffield │ ├── bunny.ply │ ├── configuration.txt │ ├── quadrangulator.cpp │ └── quadrangulator.pro │ ├── shadevis │ ├── history.txt │ ├── shadevis.cpp │ ├── shadevis.txt │ ├── simplepic.h │ └── visshader.h │ ├── texdeci │ ├── texdeci.cpp │ └── texdeci.pro │ ├── trackball_SDL │ └── trackball_sdl.cpp │ ├── trimesh_SDL │ ├── trimesh_sdl.cpp │ └── trimesh_sdl.pro │ └── trimeshinfo │ ├── ClassesNode.h │ ├── InstancesNode.h │ ├── Node.h │ ├── SlotsNode.h │ ├── XMLTree.h │ ├── defs.h │ ├── history.txt │ ├── readme.txt │ ├── trimeshinfo.cpp │ └── trimeshinfo.pro ├── docs ├── ContributorLicenseAgreement.md ├── ContributorLicenseAgreement.pdf ├── Doxygen │ ├── adjacency.dox │ ├── allocation.dox │ ├── attributes.dox │ ├── basic_concepts.dox │ ├── doxyfile │ ├── fileformat.dox │ ├── flags.dox │ ├── groups.dox │ ├── img │ │ ├── FF_Adj.png │ │ ├── FF_nonmanifold.png │ │ ├── VertexStar.png │ │ ├── ff.png │ │ ├── figure.xar │ │ ├── pos_example.png │ │ ├── shot-Camera_model.png │ │ ├── shot-Distort1.jpg │ │ ├── shot-Distort2.jpg │ │ ├── shot-Distort3.jpg │ │ ├── shot-Focal.jpg │ │ ├── shot-Projection.png │ │ ├── triord.png │ │ ├── vcglogo.png │ │ └── vcglogo.svg │ ├── index.dox │ ├── install.dox │ ├── metro.dox │ ├── namespaces.dox │ ├── optional_component.dox │ ├── shot.dox │ ├── style.dox │ ├── vcg_footer.html │ ├── vcg_header.html │ └── vcg_stylesheet.css ├── StyleGuide.html └── introduction to vcg.ppt ├── eigenlib ├── Eigen │ ├── CMakeLists.txt │ ├── Cholesky │ ├── CholmodSupport │ ├── Core │ ├── Dense │ ├── Eigen │ ├── Eigenvalues │ ├── Geometry │ ├── Householder │ ├── IterativeLinearSolvers │ ├── Jacobi │ ├── LU │ ├── MetisSupport │ ├── OrderingMethods │ ├── PaStiXSupport │ ├── PardisoSupport │ ├── QR │ ├── QtAlignedMalloc │ ├── SPQRSupport │ ├── SVD │ ├── Sparse │ ├── SparseCholesky │ ├── SparseCore │ ├── SparseLU │ ├── SparseQR │ ├── StdDeque │ ├── StdList │ ├── StdVector │ ├── SuperLUSupport │ ├── UmfPackSupport │ └── src │ │ ├── Cholesky │ │ ├── LDLT.h │ │ ├── LLT.h │ │ └── LLT_LAPACKE.h │ │ ├── CholmodSupport │ │ └── CholmodSupport.h │ │ ├── Core │ │ ├── Array.h │ │ ├── ArrayBase.h │ │ ├── ArrayWrapper.h │ │ ├── Assign.h │ │ ├── AssignEvaluator.h │ │ ├── Assign_MKL.h │ │ ├── BandMatrix.h │ │ ├── Block.h │ │ ├── BooleanRedux.h │ │ ├── CommaInitializer.h │ │ ├── ConditionEstimator.h │ │ ├── CoreEvaluators.h │ │ ├── CoreIterators.h │ │ ├── CwiseBinaryOp.h │ │ ├── CwiseNullaryOp.h │ │ ├── CwiseTernaryOp.h │ │ ├── CwiseUnaryOp.h │ │ ├── CwiseUnaryView.h │ │ ├── DenseBase.h │ │ ├── DenseCoeffsBase.h │ │ ├── DenseStorage.h │ │ ├── Diagonal.h │ │ ├── DiagonalMatrix.h │ │ ├── DiagonalProduct.h │ │ ├── Dot.h │ │ ├── EigenBase.h │ │ ├── ForceAlignedAccess.h │ │ ├── Fuzzy.h │ │ ├── GeneralProduct.h │ │ ├── GenericPacketMath.h │ │ ├── GlobalFunctions.h │ │ ├── IO.h │ │ ├── Inverse.h │ │ ├── Map.h │ │ ├── MapBase.h │ │ ├── MathFunctions.h │ │ ├── MathFunctionsImpl.h │ │ ├── Matrix.h │ │ ├── MatrixBase.h │ │ ├── NestByValue.h │ │ ├── NoAlias.h │ │ ├── NumTraits.h │ │ ├── PermutationMatrix.h │ │ ├── PlainObjectBase.h │ │ ├── Product.h │ │ ├── ProductEvaluators.h │ │ ├── Random.h │ │ ├── Redux.h │ │ ├── Ref.h │ │ ├── Replicate.h │ │ ├── ReturnByValue.h │ │ ├── Reverse.h │ │ ├── Select.h │ │ ├── SelfAdjointView.h │ │ ├── SelfCwiseBinaryOp.h │ │ ├── Solve.h │ │ ├── SolveTriangular.h │ │ ├── SolverBase.h │ │ ├── StableNorm.h │ │ ├── Stride.h │ │ ├── Swap.h │ │ ├── Transpose.h │ │ ├── Transpositions.h │ │ ├── TriangularMatrix.h │ │ ├── VectorBlock.h │ │ ├── VectorwiseOp.h │ │ ├── Visitor.h │ │ ├── arch │ │ │ ├── AVX │ │ │ │ ├── Complex.h │ │ │ │ ├── MathFunctions.h │ │ │ │ ├── PacketMath.h │ │ │ │ └── TypeCasting.h │ │ │ ├── AVX512 │ │ │ │ ├── MathFunctions.h │ │ │ │ └── PacketMath.h │ │ │ ├── AltiVec │ │ │ │ ├── Complex.h │ │ │ │ ├── MathFunctions.h │ │ │ │ └── PacketMath.h │ │ │ ├── CUDA │ │ │ │ ├── Complex.h │ │ │ │ ├── Half.h │ │ │ │ ├── MathFunctions.h │ │ │ │ ├── PacketMath.h │ │ │ │ ├── PacketMathHalf.h │ │ │ │ └── TypeCasting.h │ │ │ ├── Default │ │ │ │ ├── ConjHelper.h │ │ │ │ └── Settings.h │ │ │ ├── NEON │ │ │ │ ├── Complex.h │ │ │ │ ├── MathFunctions.h │ │ │ │ └── PacketMath.h │ │ │ ├── SSE │ │ │ │ ├── Complex.h │ │ │ │ ├── MathFunctions.h │ │ │ │ ├── PacketMath.h │ │ │ │ └── TypeCasting.h │ │ │ └── ZVector │ │ │ │ ├── Complex.h │ │ │ │ ├── MathFunctions.h │ │ │ │ └── PacketMath.h │ │ ├── functors │ │ │ ├── AssignmentFunctors.h │ │ │ ├── BinaryFunctors.h │ │ │ ├── NullaryFunctors.h │ │ │ ├── StlFunctors.h │ │ │ ├── TernaryFunctors.h │ │ │ └── UnaryFunctors.h │ │ ├── products │ │ │ ├── GeneralBlockPanelKernel.h │ │ │ ├── GeneralMatrixMatrix.h │ │ │ ├── GeneralMatrixMatrixTriangular.h │ │ │ ├── GeneralMatrixMatrixTriangular_BLAS.h │ │ │ ├── GeneralMatrixMatrix_BLAS.h │ │ │ ├── GeneralMatrixVector.h │ │ │ ├── GeneralMatrixVector_BLAS.h │ │ │ ├── Parallelizer.h │ │ │ ├── SelfadjointMatrixMatrix.h │ │ │ ├── SelfadjointMatrixMatrix_BLAS.h │ │ │ ├── SelfadjointMatrixVector.h │ │ │ ├── SelfadjointMatrixVector_BLAS.h │ │ │ ├── SelfadjointProduct.h │ │ │ ├── SelfadjointRank2Update.h │ │ │ ├── TriangularMatrixMatrix.h │ │ │ ├── TriangularMatrixMatrix_BLAS.h │ │ │ ├── TriangularMatrixVector.h │ │ │ ├── TriangularMatrixVector_BLAS.h │ │ │ ├── TriangularSolverMatrix.h │ │ │ ├── TriangularSolverMatrix_BLAS.h │ │ │ └── TriangularSolverVector.h │ │ └── util │ │ │ ├── BlasUtil.h │ │ │ ├── Constants.h │ │ │ ├── DisableStupidWarnings.h │ │ │ ├── ForwardDeclarations.h │ │ │ ├── MKL_support.h │ │ │ ├── Macros.h │ │ │ ├── Memory.h │ │ │ ├── Meta.h │ │ │ ├── NonMPL2.h │ │ │ ├── ReenableStupidWarnings.h │ │ │ ├── StaticAssert.h │ │ │ └── XprHelper.h │ │ ├── Eigenvalues │ │ ├── ComplexEigenSolver.h │ │ ├── ComplexSchur.h │ │ ├── ComplexSchur_LAPACKE.h │ │ ├── EigenSolver.h │ │ ├── GeneralizedEigenSolver.h │ │ ├── GeneralizedSelfAdjointEigenSolver.h │ │ ├── HessenbergDecomposition.h │ │ ├── MatrixBaseEigenvalues.h │ │ ├── RealQZ.h │ │ ├── RealSchur.h │ │ ├── RealSchur_LAPACKE.h │ │ ├── SelfAdjointEigenSolver.h │ │ ├── SelfAdjointEigenSolver_LAPACKE.h │ │ └── Tridiagonalization.h │ │ ├── Geometry │ │ ├── AlignedBox.h │ │ ├── AngleAxis.h │ │ ├── EulerAngles.h │ │ ├── Homogeneous.h │ │ ├── Hyperplane.h │ │ ├── OrthoMethods.h │ │ ├── ParametrizedLine.h │ │ ├── Quaternion.h │ │ ├── Rotation2D.h │ │ ├── RotationBase.h │ │ ├── Scaling.h │ │ ├── Transform.h │ │ ├── Translation.h │ │ ├── Umeyama.h │ │ └── arch │ │ │ └── Geometry_SSE.h │ │ ├── Householder │ │ ├── BlockHouseholder.h │ │ ├── Householder.h │ │ └── HouseholderSequence.h │ │ ├── IterativeLinearSolvers │ │ ├── BasicPreconditioners.h │ │ ├── BiCGSTAB.h │ │ ├── ConjugateGradient.h │ │ ├── IncompleteCholesky.h │ │ ├── IncompleteLUT.h │ │ ├── IterativeSolverBase.h │ │ ├── LeastSquareConjugateGradient.h │ │ └── SolveWithGuess.h │ │ ├── Jacobi │ │ └── Jacobi.h │ │ ├── LU │ │ ├── Determinant.h │ │ ├── FullPivLU.h │ │ ├── InverseImpl.h │ │ ├── PartialPivLU.h │ │ ├── PartialPivLU_LAPACKE.h │ │ └── arch │ │ │ └── Inverse_SSE.h │ │ ├── MetisSupport │ │ └── MetisSupport.h │ │ ├── OrderingMethods │ │ ├── Amd.h │ │ ├── Eigen_Colamd.h │ │ └── Ordering.h │ │ ├── PaStiXSupport │ │ └── PaStiXSupport.h │ │ ├── PardisoSupport │ │ └── PardisoSupport.h │ │ ├── QR │ │ ├── ColPivHouseholderQR.h │ │ ├── ColPivHouseholderQR_LAPACKE.h │ │ ├── CompleteOrthogonalDecomposition.h │ │ ├── FullPivHouseholderQR.h │ │ ├── HouseholderQR.h │ │ └── HouseholderQR_LAPACKE.h │ │ ├── SPQRSupport │ │ └── SuiteSparseQRSupport.h │ │ ├── SVD │ │ ├── BDCSVD.h │ │ ├── JacobiSVD.h │ │ ├── JacobiSVD_LAPACKE.h │ │ ├── SVDBase.h │ │ └── UpperBidiagonalization.h │ │ ├── SparseCholesky │ │ ├── SimplicialCholesky.h │ │ └── SimplicialCholesky_impl.h │ │ ├── SparseCore │ │ ├── AmbiVector.h │ │ ├── CompressedStorage.h │ │ ├── ConservativeSparseSparseProduct.h │ │ ├── MappedSparseMatrix.h │ │ ├── SparseAssign.h │ │ ├── SparseBlock.h │ │ ├── SparseColEtree.h │ │ ├── SparseCompressedBase.h │ │ ├── SparseCwiseBinaryOp.h │ │ ├── SparseCwiseUnaryOp.h │ │ ├── SparseDenseProduct.h │ │ ├── SparseDiagonalProduct.h │ │ ├── SparseDot.h │ │ ├── SparseFuzzy.h │ │ ├── SparseMap.h │ │ ├── SparseMatrix.h │ │ ├── SparseMatrixBase.h │ │ ├── SparsePermutation.h │ │ ├── SparseProduct.h │ │ ├── SparseRedux.h │ │ ├── SparseRef.h │ │ ├── SparseSelfAdjointView.h │ │ ├── SparseSolverBase.h │ │ ├── SparseSparseProductWithPruning.h │ │ ├── SparseTranspose.h │ │ ├── SparseTriangularView.h │ │ ├── SparseUtil.h │ │ ├── SparseVector.h │ │ ├── SparseView.h │ │ └── TriangularSolver.h │ │ ├── SparseLU │ │ ├── SparseLU.h │ │ ├── SparseLUImpl.h │ │ ├── SparseLU_Memory.h │ │ ├── SparseLU_Structs.h │ │ ├── SparseLU_SupernodalMatrix.h │ │ ├── SparseLU_Utils.h │ │ ├── SparseLU_column_bmod.h │ │ ├── SparseLU_column_dfs.h │ │ ├── SparseLU_copy_to_ucol.h │ │ ├── SparseLU_gemm_kernel.h │ │ ├── SparseLU_heap_relax_snode.h │ │ ├── SparseLU_kernel_bmod.h │ │ ├── SparseLU_panel_bmod.h │ │ ├── SparseLU_panel_dfs.h │ │ ├── SparseLU_pivotL.h │ │ ├── SparseLU_pruneL.h │ │ └── SparseLU_relax_snode.h │ │ ├── SparseQR │ │ └── SparseQR.h │ │ ├── StlSupport │ │ ├── StdDeque.h │ │ ├── StdList.h │ │ ├── StdVector.h │ │ └── details.h │ │ ├── SuperLUSupport │ │ └── SuperLUSupport.h │ │ ├── UmfPackSupport │ │ └── UmfPackSupport.h │ │ ├── misc │ │ ├── Image.h │ │ ├── Kernel.h │ │ ├── RealSvd2x2.h │ │ ├── blas.h │ │ ├── lapack.h │ │ ├── lapacke.h │ │ └── lapacke_mangling.h │ │ └── plugins │ │ ├── ArrayCwiseBinaryOps.h │ │ ├── ArrayCwiseUnaryOps.h │ │ ├── BlockMethods.h │ │ ├── CommonCwiseBinaryOps.h │ │ ├── CommonCwiseUnaryOps.h │ │ ├── MatrixCwiseBinaryOps.h │ │ └── MatrixCwiseUnaryOps.h ├── howto.txt └── unsupported │ ├── Eigen │ ├── AdolcForward │ ├── AlignedVector3 │ ├── ArpackSupport │ ├── AutoDiff │ ├── BVH │ ├── CMakeLists.txt │ ├── CXX11 │ │ ├── CMakeLists.txt │ │ ├── Tensor │ │ ├── TensorSymmetry │ │ ├── ThreadPool │ │ └── src │ │ │ ├── Tensor │ │ │ ├── README.md │ │ │ ├── Tensor.h │ │ │ ├── TensorArgMax.h │ │ │ ├── TensorAssign.h │ │ │ ├── TensorBase.h │ │ │ ├── TensorBroadcasting.h │ │ │ ├── TensorChipping.h │ │ │ ├── TensorConcatenation.h │ │ │ ├── TensorContraction.h │ │ │ ├── TensorContractionBlocking.h │ │ │ ├── TensorContractionCuda.h │ │ │ ├── TensorContractionMapper.h │ │ │ ├── TensorContractionThreadPool.h │ │ │ ├── TensorConversion.h │ │ │ ├── TensorConvolution.h │ │ │ ├── TensorCostModel.h │ │ │ ├── TensorCustomOp.h │ │ │ ├── TensorDevice.h │ │ │ ├── TensorDeviceCuda.h │ │ │ ├── TensorDeviceDefault.h │ │ │ ├── TensorDeviceSycl.h │ │ │ ├── TensorDeviceThreadPool.h │ │ │ ├── TensorDimensionList.h │ │ │ ├── TensorDimensions.h │ │ │ ├── TensorEvalTo.h │ │ │ ├── TensorEvaluator.h │ │ │ ├── TensorExecutor.h │ │ │ ├── TensorExpr.h │ │ │ ├── TensorFFT.h │ │ │ ├── TensorFixedSize.h │ │ │ ├── TensorForcedEval.h │ │ │ ├── TensorForwardDeclarations.h │ │ │ ├── TensorFunctors.h │ │ │ ├── TensorGenerator.h │ │ │ ├── TensorGlobalFunctions.h │ │ │ ├── TensorIO.h │ │ │ ├── TensorImagePatch.h │ │ │ ├── TensorIndexList.h │ │ │ ├── TensorInflation.h │ │ │ ├── TensorInitializer.h │ │ │ ├── TensorIntDiv.h │ │ │ ├── TensorLayoutSwap.h │ │ │ ├── TensorMacros.h │ │ │ ├── TensorMap.h │ │ │ ├── TensorMeta.h │ │ │ ├── TensorMorphing.h │ │ │ ├── TensorPadding.h │ │ │ ├── TensorPatch.h │ │ │ ├── TensorRandom.h │ │ │ ├── TensorReduction.h │ │ │ ├── TensorReductionCuda.h │ │ │ ├── TensorReductionSycl.h │ │ │ ├── TensorRef.h │ │ │ ├── TensorReverse.h │ │ │ ├── TensorScan.h │ │ │ ├── TensorShuffling.h │ │ │ ├── TensorStorage.h │ │ │ ├── TensorStriding.h │ │ │ ├── TensorSycl.h │ │ │ ├── TensorSyclConvertToDeviceExpression.h │ │ │ ├── TensorSyclExprConstructor.h │ │ │ ├── TensorSyclExtractAccessor.h │ │ │ ├── TensorSyclExtractFunctors.h │ │ │ ├── TensorSyclLeafCount.h │ │ │ ├── TensorSyclPlaceHolderExpr.h │ │ │ ├── TensorSyclRun.h │ │ │ ├── TensorSyclTuple.h │ │ │ ├── TensorTraits.h │ │ │ ├── TensorUInt128.h │ │ │ └── TensorVolumePatch.h │ │ │ ├── TensorSymmetry │ │ │ ├── DynamicSymmetry.h │ │ │ ├── StaticSymmetry.h │ │ │ ├── Symmetry.h │ │ │ └── util │ │ │ │ └── TemplateGroupTheory.h │ │ │ ├── ThreadPool │ │ │ ├── EventCount.h │ │ │ ├── NonBlockingThreadPool.h │ │ │ ├── RunQueue.h │ │ │ ├── SimpleThreadPool.h │ │ │ ├── ThreadEnvironment.h │ │ │ ├── ThreadLocal.h │ │ │ ├── ThreadPoolInterface.h │ │ │ └── ThreadYield.h │ │ │ └── util │ │ │ ├── CXX11Meta.h │ │ │ ├── CXX11Workarounds.h │ │ │ ├── EmulateArray.h │ │ │ ├── EmulateCXX11Meta.h │ │ │ └── MaxSizeVector.h │ ├── EulerAngles │ ├── FFT │ ├── IterativeSolvers │ ├── KroneckerProduct │ ├── LevenbergMarquardt │ ├── MPRealSupport │ ├── MatrixFunctions │ ├── MoreVectorization │ ├── NonLinearOptimization │ ├── NumericalDiff │ ├── OpenGLSupport │ ├── Polynomials │ ├── Skyline │ ├── SparseExtra │ ├── SpecialFunctions │ ├── Splines │ └── src │ │ ├── AutoDiff │ │ ├── AutoDiffJacobian.h │ │ ├── AutoDiffScalar.h │ │ └── AutoDiffVector.h │ │ ├── BVH │ │ ├── BVAlgorithms.h │ │ └── KdBVH.h │ │ ├── Eigenvalues │ │ └── ArpackSelfAdjointEigenSolver.h │ │ ├── EulerAngles │ │ ├── CMakeLists.txt │ │ ├── EulerAngles.h │ │ └── EulerSystem.h │ │ ├── FFT │ │ ├── ei_fftw_impl.h │ │ └── ei_kissfft_impl.h │ │ ├── IterativeSolvers │ │ ├── ConstrainedConjGrad.h │ │ ├── DGMRES.h │ │ ├── GMRES.h │ │ ├── IncompleteLU.h │ │ ├── IterationController.h │ │ ├── MINRES.h │ │ └── Scaling.h │ │ ├── KroneckerProduct │ │ └── KroneckerTensorProduct.h │ │ ├── LevenbergMarquardt │ │ ├── CopyrightMINPACK.txt │ │ ├── LMcovar.h │ │ ├── LMonestep.h │ │ ├── LMpar.h │ │ ├── LMqrsolv.h │ │ └── LevenbergMarquardt.h │ │ ├── MatrixFunctions │ │ ├── MatrixExponential.h │ │ ├── MatrixFunction.h │ │ ├── MatrixLogarithm.h │ │ ├── MatrixPower.h │ │ ├── MatrixSquareRoot.h │ │ └── StemFunction.h │ │ ├── MoreVectorization │ │ └── MathFunctions.h │ │ ├── NonLinearOptimization │ │ ├── HybridNonLinearSolver.h │ │ ├── LevenbergMarquardt.h │ │ ├── chkder.h │ │ ├── covar.h │ │ ├── dogleg.h │ │ ├── fdjac1.h │ │ ├── lmpar.h │ │ ├── qrsolv.h │ │ ├── r1mpyq.h │ │ ├── r1updt.h │ │ └── rwupdt.h │ │ ├── NumericalDiff │ │ └── NumericalDiff.h │ │ ├── Polynomials │ │ ├── Companion.h │ │ ├── PolynomialSolver.h │ │ └── PolynomialUtils.h │ │ ├── Skyline │ │ ├── SkylineInplaceLU.h │ │ ├── SkylineMatrix.h │ │ ├── SkylineMatrixBase.h │ │ ├── SkylineProduct.h │ │ ├── SkylineStorage.h │ │ └── SkylineUtil.h │ │ ├── SparseExtra │ │ ├── BlockOfDynamicSparseMatrix.h │ │ ├── BlockSparseMatrix.h │ │ ├── DynamicSparseMatrix.h │ │ ├── MarketIO.h │ │ ├── MatrixMarketIterator.h │ │ └── RandomSetter.h │ │ ├── SpecialFunctions │ │ ├── SpecialFunctionsArrayAPI.h │ │ ├── SpecialFunctionsFunctors.h │ │ ├── SpecialFunctionsHalf.h │ │ ├── SpecialFunctionsImpl.h │ │ ├── SpecialFunctionsPacketMath.h │ │ └── arch │ │ │ └── CUDA │ │ │ └── CudaSpecialFunctions.h │ │ └── Splines │ │ ├── Spline.h │ │ ├── SplineFitting.h │ │ └── SplineFwd.h │ └── README.txt ├── img ├── img.h ├── img_attributes.h ├── img_base.h ├── img_convert.h ├── img_cs_base.h ├── img_filter.h ├── img_image.h ├── img_info.h ├── img_io.h └── img_scalar.h ├── vcg ├── complex │ ├── algorithms │ │ ├── align_global.h │ │ ├── align_pair.h │ │ ├── attribute_seam.h │ │ ├── autoalign_4pcs.h │ │ ├── bitquad_creation.h │ │ ├── bitquad_optimization.h │ │ ├── bitquad_support.h │ │ ├── clean.h │ │ ├── clip.h │ │ ├── closest.h │ │ ├── clustering.h │ │ ├── convex_hull.h │ │ ├── crease_cut.h │ │ ├── create │ │ │ ├── advancing_front.h │ │ │ ├── ball_pivoting.h │ │ │ ├── extrude.h │ │ │ ├── marching_cubes.h │ │ │ ├── mc_lookup_table.h │ │ │ ├── mc_trivial_walker.h │ │ │ ├── platonic.h │ │ │ ├── plymc │ │ │ │ ├── plymc.h │ │ │ │ ├── simplemeshprovider.h │ │ │ │ ├── svoxel.h │ │ │ │ ├── tri_edge_collapse_mc.h │ │ │ │ ├── volume.h │ │ │ │ └── voxel.h │ │ │ ├── readme.txt │ │ │ ├── resampler.h │ │ │ ├── tetramesh_support.h │ │ │ └── zonohedron.h │ │ ├── curve_on_manifold.h │ │ ├── cut_tree.h │ │ ├── cylinder_clipping.h │ │ ├── dual_meshing.h │ │ ├── edge_collapse.h │ │ ├── geodesic.h │ │ ├── geodesic_heat.h │ │ ├── halfedge_quad_clean.h │ │ ├── harmonic.h │ │ ├── hole.h │ │ ├── implicit_smooth.h │ │ ├── inertia.h │ │ ├── inside.h │ │ ├── intersection.h │ │ ├── isotropic_remeshing.h │ │ ├── local_optimization.h │ │ ├── local_optimization │ │ │ ├── quad_diag_collapse.h │ │ │ ├── tetra_edge_collapse.h │ │ │ ├── tri_edge_collapse.h │ │ │ ├── tri_edge_collapse_quadric.h │ │ │ ├── tri_edge_collapse_quadric_tex.h │ │ │ └── tri_edge_flip.h │ │ ├── mesh_assert.h │ │ ├── mesh_to_matrix.h │ │ ├── meshtree.h │ │ ├── nring.h │ │ ├── occupancy_grid.h │ │ ├── outline_support.h │ │ ├── overlap_estimation.h │ │ ├── parametrization │ │ │ ├── distortion.h │ │ │ ├── poisson_solver.h │ │ │ ├── tangent_field_operators.h │ │ │ ├── uv_utils.h │ │ │ └── voronoi_atlas.h │ │ ├── point_matching_scale.h │ │ ├── point_outlier.h │ │ ├── point_sampling.h │ │ ├── pointcloud_normal.h │ │ ├── polygon_polychord_collapse.h │ │ ├── polygon_support.h │ │ ├── polygonal_algorithms.h │ │ ├── quadrangulator.h │ │ ├── ransac_matching.h │ │ ├── refine.h │ │ ├── refine_doosabin.h │ │ ├── refine_loop.h │ │ ├── skeleton.h │ │ ├── smooth.h │ │ ├── stat.h │ │ ├── symmetry.h │ │ ├── tetra │ │ │ └── tetfuse_collapse.h │ │ ├── tetra_implicit_smooth.h │ │ ├── textcoord_optimization.h │ │ ├── update │ │ │ ├── bounding.h │ │ │ ├── color.h │ │ │ ├── component_ep.h │ │ │ ├── curvature.h │ │ │ ├── curvature_fitting.h │ │ │ ├── fitmaps.h │ │ │ ├── flag.h │ │ │ ├── halfedge_indexed.h │ │ │ ├── halfedge_topology.h │ │ │ ├── normal.h │ │ │ ├── position.h │ │ │ ├── quality.h │ │ │ ├── selection.h │ │ │ ├── texture.h │ │ │ └── topology.h │ │ ├── voronoi_processing.h │ │ ├── voronoi_remesher.h │ │ └── voronoi_volume_sampling.h │ ├── all_types.h │ ├── allocate.h │ ├── append.h │ ├── base.h │ ├── complex.h │ ├── exception.h │ ├── foreach.h │ └── used_types.h ├── connectors │ ├── halfedge_pos.h │ ├── hedge.h │ └── hedge_component.h ├── container │ ├── container_allocation_table.h │ ├── derivation_chain.h │ ├── entries_allocation_table.h │ ├── simple_temporary_data.h │ └── vector_occ.h ├── math │ ├── base.h │ ├── camera.h │ ├── camera.ipp │ ├── disjoint_set.h │ ├── eigen.h │ ├── eigen_matrix_addons.h │ ├── eigen_matrixbase_addons.h │ ├── factorial.h │ ├── gen_normal.h │ ├── histogram.h │ ├── legendre.h │ ├── linear.h │ ├── matrix33.h │ ├── matrix44.h │ ├── perlin_noise.h │ ├── polar_decomposition.h │ ├── quadric.h │ ├── quadric5.h │ ├── quaternion.h │ ├── random_generator.h │ ├── shot.h │ ├── shot.ipp │ ├── similarity.h │ ├── similarity2.h │ └── spherical_harmonics.h ├── simplex │ ├── edge │ │ ├── base.h │ │ ├── component.h │ │ ├── distance.h │ │ ├── pos.h │ │ └── topology.h │ ├── face │ │ ├── base.h │ │ ├── component.h │ │ ├── component_ep.h │ │ ├── component_occ.h │ │ ├── component_ocf.h │ │ ├── component_polygon.h │ │ ├── distance.h │ │ ├── jumping_pos.h │ │ ├── pos.h │ │ └── topology.h │ ├── tetrahedron │ │ ├── base.h │ │ ├── component.h │ │ ├── pos.h │ │ ├── tetrahedron.h │ │ └── topology.h │ └── vertex │ │ ├── base.h │ │ ├── component.h │ │ ├── component_occ.h │ │ ├── component_ocf.h │ │ ├── component_sph.h │ │ └── distance.h └── space │ ├── box.h │ ├── box2.h │ ├── box3.h │ ├── color4.h │ ├── colormap.h │ ├── colorspace.h │ ├── distance2.h │ ├── distance3.h │ ├── fitting3.h │ ├── index │ ├── aabb_binary_tree │ │ ├── aabb_binary_tree.h │ │ ├── base.h │ │ ├── closest.h │ │ ├── frustum_cull.h │ │ ├── kclosest.h │ │ └── ray.h │ ├── base.h │ ├── base2d.h │ ├── closest2d.h │ ├── grid_closest.h │ ├── grid_closest2d.h │ ├── grid_static_obj.h │ ├── grid_static_ptr.h │ ├── grid_static_ptr2d.h │ ├── grid_util.h │ ├── grid_util2d.h │ ├── kdtree │ │ ├── kdtree.h │ │ ├── kdtree_face.h │ │ ├── mlsutils.h │ │ └── priorityqueue.h │ ├── octree.h │ ├── octree_template.h │ ├── perfect_spatial_hashing.h │ ├── space_iterators.h │ ├── space_iterators2d.h │ ├── spatial_hashing.h │ └── spatial_hashing2d.h │ ├── intersection │ └── triangle_triangle3.h │ ├── intersection2.h │ ├── intersection3.h │ ├── line2.h │ ├── line3.h │ ├── obox3.h │ ├── old_point.h │ ├── old_point2.h │ ├── old_point3.h │ ├── old_point4.h │ ├── outline2_packer.h │ ├── planar_polygon_tessellation.h │ ├── plane3.h │ ├── point.h │ ├── point2.h │ ├── point3.h │ ├── point4.h │ ├── point_matching.h │ ├── polygon3.h │ ├── rasterized_outline2_packer.h │ ├── ray2.h │ ├── ray3.h │ ├── rect_packer.h │ ├── segment2.h │ ├── segment3.h │ ├── smallest_enclosing.h │ ├── space.h │ ├── sphere3.h │ ├── tetra3.h │ ├── texcoord2.h │ ├── triangle2.h │ └── triangle3.h └── wrap ├── CMakeLists.txt ├── bmt ├── bmt.cpp ├── bmt.h └── strip_mesh.h ├── callback.h ├── dae ├── colladaformat.h ├── poly_triangulator.h ├── util_dae.h ├── xmldocumentmanaging.cpp └── xmldocumentmanaging.h ├── embree ├── .vscode │ ├── c_cpp_properties.json │ └── settings.json └── EmbreeAdaptor.h ├── gcache ├── cache.h ├── controller.h ├── dheap.h ├── docs │ ├── Doxyfile │ ├── css │ │ └── prettify.css │ ├── img │ │ ├── architecture.png │ │ ├── architecture.svg │ │ ├── overflow.png │ │ ├── overflow.svg │ │ └── shadow.png │ ├── js │ │ ├── prettify.css │ │ └── prettify.js │ └── readme.html ├── door.h ├── provider.h └── token.h ├── gl ├── addons.h ├── camera.h ├── deprecated_math.h ├── deprecated_space.h ├── fbo.h ├── gl_field.h ├── gl_geometry.h ├── gl_mesh_attributes_info.h ├── gl_mesh_attributes_multi_viewer_bo_manager.h ├── gl_object.h ├── gl_surface.h ├── gl_type_name.h ├── glu_tesselator.h ├── glu_tessellator_cap.h ├── math.h ├── pick.h ├── picking.h ├── pos.h ├── shaders.h ├── shot.h ├── space.h ├── splatting_apss │ ├── shaders │ │ ├── Finalization.glsl │ │ └── Raycasting.glsl │ ├── splatrenderer.h │ └── splatrenderer.qrc ├── tetramesh.h └── trimesh.h ├── glw ├── bookkeeping.h ├── buffer.h ├── common.h ├── config.h ├── context.h ├── fragmentshader.h ├── framebuffer.h ├── geometryshader.h ├── glheaders.h ├── glw.h ├── noncopyable.h ├── object.h ├── objectdeleter.h ├── program.h ├── renderable.h ├── renderbuffer.h ├── shader.h ├── texture.h ├── texture2d.h ├── texturecube.h ├── type.h ├── utility.h └── vertexshader.h ├── gui ├── activecoordinateframe.cpp ├── activecoordinateframe.h ├── coordinateframe.cpp ├── coordinateframe.h ├── frustum.h ├── rubberband.cpp ├── rubberband.h ├── trackball.cpp ├── trackball.h ├── trackmode.cpp ├── trackmode.h ├── trackrecorder.h ├── trackutils.h └── view.h ├── igl ├── arap_parametrization.h ├── lscm_parametrization.h ├── miq_parametrization.h ├── sample │ └── trimesh_field_smoothing │ │ ├── trimesh_field_smoothing.cpp │ │ └── trimesh_field_smoothing.pro └── smooth_field.h ├── io_edgemesh ├── export_dxf.h └── export_svg.h ├── io_tetramesh ├── export_ply.h ├── export_tet.h ├── export_ts.h ├── export_vtk.h ├── import.h ├── import_msh.h ├── import_ply.h ├── import_ts.h ├── io_mask.h └── io_ply.h ├── io_trimesh ├── additionalinfo.h ├── alnParser.h ├── export.h ├── export_3ds.h ├── export_ctm.h ├── export_dae.h ├── export_dxf.h ├── export_fbx.h ├── export_field.h ├── export_gts.h ├── export_idtf.h ├── export_iv.h ├── export_obj.h ├── export_off.h ├── export_ply.h ├── export_smf.h ├── export_stl.h ├── export_u3d.h ├── export_vmi.h ├── export_vrml.h ├── how_to_write_an_io_filter.txt ├── import.h ├── import_asc.h ├── import_ctm.h ├── import_dae.h ├── import_fbx.h ├── import_field.h ├── import_gts.h ├── import_nvm.h ├── import_obj.h ├── import_off.h ├── import_out.h ├── import_ply.h ├── import_ptx.h ├── import_raw.h ├── import_smf.h ├── import_stl.h ├── import_vmi.h ├── io_fan_tessellator.h ├── io_mask.h ├── io_material.h ├── io_ply.h └── precision.h ├── math ├── sparse_matrix.h └── system_interface_ldl.h ├── minpack └── minpack.h ├── mt └── mt.h ├── nanoply ├── CMakeLists.txt ├── docs │ ├── doxyfile │ └── index.dxy ├── include │ ├── nanoply.hpp │ └── nanoplyWrapper.hpp ├── nanoply_demo │ ├── CMakeLists.txt │ ├── main.cpp │ └── nanoply_demo.pro └── nanoply_vcg │ ├── CMakeLists.txt │ ├── main.cpp │ └── nanoply_vcg.pro ├── newuoa └── include │ └── newuoa.h ├── openfbx ├── .gitignore ├── LICENSE ├── README.md └── src │ ├── miniz.c │ ├── miniz.h │ ├── ofbx.cpp │ └── ofbx.h ├── opensg └── vertex_component.h ├── ply ├── plylib.cpp ├── plylib.h └── plystuff.h ├── qt ├── Outline2ToQImage.cpp ├── Outline2ToQImage.h ├── anttweakbarMapper.cpp ├── anttweakbarMapper.h ├── anttweakbarMapperNew.cpp ├── checkGLError.h ├── col_qt_convert.h ├── device_to_logical.h ├── gl_label.h ├── img_qt.h ├── img_qt_convert.h ├── img_qt_io.h ├── outline2_rasterizer.cpp ├── outline2_rasterizer.h ├── qt_thread_safe_memory_info.h ├── qt_thread_safe_mesh_attributes_multi_viewer_bo_manager.h ├── qt_thread_safe_texture_names_container.h ├── shot_qt.h ├── to_string.h └── trackball.h ├── system ├── getopt.cpp ├── getopt.h ├── memory_info.h ├── multithreading │ ├── atomic_int.h │ ├── atomic_int_apple.h │ ├── atomic_int_generic.h │ ├── base.h │ ├── condition.h │ ├── mt.h │ ├── mutex.h │ ├── rw_lock.h │ ├── scoped_mutex_lock.h │ ├── scoped_read_lock.h │ ├── scoped_write_lock.h │ ├── semaphore.h │ ├── thread.h │ └── util.h ├── qgetopt.cpp ├── qgetopt.h └── time │ └── clock.h ├── tsai ├── tsaimethods.cpp └── tsaimethods.h └── utils.h /.github/pull_request_template.md: -------------------------------------------------------------------------------- 1 | ## Thank you for sending a Pull Request to the VCGLib! 2 | 3 | ### Check the PR branch! 4 | 5 | On this repository, we keep two relevant branches: 6 | 7 | - `main`: we keep here the **last release version of VCGLib**, with just bugfixes. In case of serious bugs caught after a release, this branch is used to publish "post-releases". 8 | - `devel`: we add here new features and functionalities of the library that are going to appear in the next release of VCGLib. Bugfixes pushed in `main` are automatically merged on the `devel` branch. 9 | 10 | Before submitting a PR, please check which branch suits better for your contribution! 11 | 12 | ### CLA 13 | 14 | VCGLib is fully owned by CNR, and all the VCGLib contributors that do not work at the VCLab of CNR must first sign the contributor license agreement that you can find at the following link: https://github.com/cnr-isti-vclab/vcglib/blob/devel/docs/ContributorLicenseAgreement.pdf 15 | 16 | If you will sign the CLA, then we will be able to merge your pull request after reviewing it. 17 | The validity of the CLA is two years, therefore after signing it your PRs for the next two years can be merged without further actions. 18 | Please send the signed document to muntoni.alessandro@gmail.com and paolo.cignoni@isti.cnr.it . 19 | If you will not sign the CLA, we will review and then apply your changes as soon as possible. 20 | 21 | Before opening the PR, please leave the following form with a check for your particular case: 22 | 23 | ##### Check with `[x]` what is your case: 24 | - [ ] I already signed and sent via email the CLA; 25 | - [ ] I will sign and send the CLA via email as soon as possible; 26 | - [ ] I don't want to sign the CLA. 27 | -------------------------------------------------------------------------------- /.github/workflows/AutoMergeMainOnDevel.yml: -------------------------------------------------------------------------------- 1 | name: AutoMergeMainOnDevel 2 | 3 | on: 4 | push: 5 | branches: 6 | - 'main' 7 | 8 | jobs: 9 | auto_merge: 10 | if: github.repository == 'cnr-isti-vclab/vcglib' 11 | name: Automatic Merge Main On Devel 12 | runs-on: ubuntu-latest 13 | 14 | steps: 15 | - uses: actions/checkout@v2 16 | - name: Merge main -> devel 17 | uses: devmasx/merge-branch@master 18 | with: 19 | type: now 20 | target_branch: devel 21 | message: "Automatic merge branch 'main' into 'devel'" 22 | github_token: ${{ github.token }} 23 | -------------------------------------------------------------------------------- /.github/workflows/BuildExamples.yml: -------------------------------------------------------------------------------- 1 | name: BuildExamples 2 | 3 | on: 4 | [push, pull_request] 5 | 6 | jobs: 7 | ubuntu_build_tests: 8 | name: Build Examples 9 | runs-on: ${{ matrix.os }} 10 | strategy: 11 | fail-fast: false 12 | matrix: 13 | os: ['ubuntu-latest', 'macos-latest', 'windows-latest'] 14 | 15 | steps: 16 | - uses: actions/checkout@v4 17 | - name: Install Qt 18 | if: runner.os != 'macOS' 19 | uses: jurplel/install-qt-action@v3 20 | with: 21 | cache: true 22 | version: '5.15.2' 23 | - name: Setup MSVC 24 | uses: ilammy/msvc-dev-cmd@v1 25 | - name: Setup env Linux 26 | if: runner.os == 'Linux' 27 | run: | 28 | sudo apt-get install -y ninja-build 29 | - name: Setup env macOS 30 | if: runner.os == 'macOS' 31 | run: | 32 | brew install ninja qt@5 33 | - name: Build Samples 34 | shell: bash 35 | run: | 36 | mkdir build 37 | cd build 38 | cmake -GNinja -DVCG_BUILD_EXAMPLES=ON .. 39 | ninja 40 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Rules to ignore all files without extension (binaries on unix) 2 | # these rules must be above all the other rules 3 | * 4 | !/**/ 5 | !*.* 6 | 7 | # QTCreator user prefs 8 | *.user 9 | 10 | # Directories to ignore 11 | build/ 12 | debug/ 13 | release/ 14 | *-debug/ 15 | *-release/ 16 | /docs/Doxygen/html/ 17 | .vscode/ 18 | 19 | # Intermediate Files 20 | *.bc 21 | 22 | # osx rubbish 23 | .DS_Store 24 | 25 | # Visual Studio Project files 26 | *.vcxproj 27 | *.vcxproj.filters 28 | *.suo 29 | *.ply 30 | *.db 31 | *.sln 32 | 33 | ##Standard cmake gitignore## 34 | CMakeLists.txt.user 35 | CMakeCache.txt 36 | CMakeFiles 37 | CMakeScripts 38 | Testing 39 | Makefile 40 | cmake_install.cmake 41 | install_manifest.txt 42 | compile_commands.json 43 | CTestTestfile.cmake 44 | _deps 45 | 46 | ##standard Qt and C++ gitignore## 47 | # C++ objects and libs 48 | *.slo 49 | *.lo 50 | *.o 51 | *.a 52 | *.la 53 | *.lai 54 | *.so 55 | *.so.* 56 | *.dll 57 | *.dylib 58 | *.lib 59 | *.exe 60 | *.obj 61 | *.res 62 | 63 | # Qt-es 64 | object_script.*.Release 65 | object_script.*.Debug 66 | *_plugin_import.cpp 67 | /.qmake.cache 68 | /.qmake.stash 69 | .qmake.stash 70 | *.pro.user 71 | *.pro.user.* 72 | *.qbs.user 73 | *.qbs.user.* 74 | *.moc 75 | moc_*.cpp 76 | mocs_*.cpp 77 | moc_*.h 78 | qrc_*.cpp 79 | ui_*.h 80 | *.qmlc 81 | *.jsc 82 | Makefile* 83 | *build-* 84 | *.qm 85 | *.prl 86 | 87 | # Qt unit tests 88 | target_wrapper.* 89 | 90 | # QtCreator 91 | *.autosave 92 | 93 | # QtCreator Qml 94 | *.qmlproject.user 95 | *.qmlproject.user.* 96 | 97 | # QtCreator CMake 98 | CMakeLists.txt.user* 99 | 100 | # QtCreator 4.8< compilation database 101 | 102 | # QtCreator local machine specific files for imported projects 103 | *creator.user* 104 | 105 | -------------------------------------------------------------------------------- /apps/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.13) 2 | 3 | project(VCGApps) 4 | 5 | add_subdirectory(sample) 6 | add_subdirectory(metro) 7 | add_subdirectory(tridecimator) 8 | add_subdirectory(embree) 9 | -------------------------------------------------------------------------------- /apps/QT/img_filters/img_filters.pro: -------------------------------------------------------------------------------- 1 | # debugging 2 | CONFIG += debug 3 | 4 | # Base options 5 | TEMPLATE = app 6 | LANGUAGE = C++ 7 | 8 | # Executable name 9 | TARGET = img_filters 10 | 11 | # STL support is enabled 12 | CONFIG += stl 13 | 14 | # enable console 15 | CONFIG += console 16 | 17 | # Awful.. 18 | win32{ 19 | DEFINES += NOMINMAX 20 | } 21 | 22 | # The following define is needed in gcc to remove the asserts 23 | win32-g++:DEFINES += NDEBUG 24 | CONFIG(debug, debug|release) { 25 | win32-g++:release:DEFINES -= NDEBUG 26 | } 27 | 28 | #include current path 29 | INCLUDEPATH += . 30 | 31 | #include lib path 32 | INCLUDEPATH += ../../.. 33 | 34 | SOURCES += img_filters.cpp 35 | -------------------------------------------------------------------------------- /apps/QT/trimesh_QT/trimesh_qt.pro: -------------------------------------------------------------------------------- 1 | # Base options 2 | TEMPLATE = app 3 | LANGUAGE = C++ 4 | 5 | # QT modules 6 | QT += opengl 7 | 8 | # Executable name 9 | TARGET = trimesh_qt 10 | 11 | # Directories 12 | DESTDIR = . 13 | UI_DIR = build/ui 14 | MOC_DIR = build/moc 15 | OBJECTS_DIR = build/obj 16 | 17 | # Lib headers 18 | INCLUDEPATH += . 19 | INCLUDEPATH += ../../.. 20 | INCLUDEPATH += ../../../eigenlib 21 | 22 | # Lib sources 23 | SOURCES += ../../../wrap/ply/plylib.cpp 24 | SOURCES += ../../../wrap/gui/trackball.cpp 25 | SOURCES += ../../../wrap/gui/trackmode.cpp 26 | 27 | 28 | # Compile glew 29 | DEFINES += GLEW_STATIC 30 | INCLUDEPATH += ../../../../code/lib/glew/include 31 | SOURCES += ../../../../code/lib/glew/src/glew.c 32 | 33 | # Awful problem with windows.. 34 | win32{ 35 | DEFINES += NOMINMAX 36 | } 37 | 38 | # Input 39 | HEADERS += mainwindow.h 40 | HEADERS += glarea.h 41 | 42 | SOURCES += main.cpp 43 | SOURCES += mainwindow.cpp 44 | SOURCES += glarea.cpp 45 | 46 | FORMS += mainwindow.ui 47 | -------------------------------------------------------------------------------- /apps/QT/trimesh_QT_shared/mesh.h: -------------------------------------------------------------------------------- 1 | #ifndef MESH_H 2 | #define MESH_H 3 | 4 | /// vcg imports 5 | #include 6 | #include 7 | #include 8 | #include 9 | 10 | #include 11 | 12 | using namespace vcg; 13 | class CFaceO; 14 | class CVertexO; 15 | class CEdgeO; 16 | 17 | struct MyUsedTypes : public UsedTypes ::AsVertexType, vcg::Use::AsEdgeType, 18 | Use ::AsFaceType>{}; 19 | 20 | /// compositing wanted proprieties 21 | class CVertexO : public vcg::Vertex< MyUsedTypes, vcg::vertex::Coord3f, vcg::vertex::Normal3f, vcg::vertex::BitFlags>{}; 22 | class CFaceO : public vcg::Face< MyUsedTypes, vcg::face::VertexRef, vcg::face::Normal3f, vcg::face::BitFlags > {}; 23 | class CEdgeO : public vcg::Edge{}; 24 | class CMeshO : public vcg::tri::TriMesh< std::vector, std::vector,std::vector > 25 | { 26 | }; 27 | 28 | #endif -------------------------------------------------------------------------------- /apps/QT/trimesh_QT_shared/trimesh_qt.pro: -------------------------------------------------------------------------------- 1 | # Base options 2 | TEMPLATE = app 3 | LANGUAGE = C++ 4 | 5 | # QT modules 6 | QT += opengl 7 | 8 | # Executable name 9 | TARGET = trimesh_qt 10 | 11 | # Directories 12 | DESTDIR = . 13 | UI_DIR = build/ui 14 | MOC_DIR = build/moc 15 | OBJECTS_DIR = build/obj 16 | 17 | # Lib headers 18 | INCLUDEPATH += . 19 | INCLUDEPATH += ../../.. 20 | 21 | # Lib sources 22 | SOURCES += ../../../wrap/ply/plylib.cpp 23 | SOURCES += ../../../wrap/gui/trackball.cpp 24 | SOURCES += ../../../wrap/gui/trackmode.cpp 25 | 26 | 27 | # Compile glew 28 | DEFINES += GLEW_STATIC 29 | INCLUDEPATH += ../../../../lib/glew/include 30 | SOURCES += ../../../../lib/glew/src/glew.c 31 | 32 | # Awful problem with windows.. 33 | win32{ 34 | DEFINES += NOMINMAX 35 | } 36 | 37 | # Input 38 | HEADERS += mainwindow.h 39 | HEADERS += glarea.h 40 | 41 | 42 | 43 | SOURCES += main.cpp 44 | SOURCES += mainwindow.cpp 45 | SOURCES += glarea.cpp 46 | 47 | FORMS += mainwindow.ui 48 | 49 | linux-g++:LIBS += -lGLU 50 | linux-g++-32:LIBS += -lGLU 51 | linux-g++-64:LIBS += -lGLU 52 | -------------------------------------------------------------------------------- /apps/QT/trimesh_ant_freeglut/trimesh_ant_freeglut.pro: -------------------------------------------------------------------------------- 1 | # Base options 2 | TEMPLATE = app 3 | LANGUAGE = C++ 4 | 5 | # Executable name 6 | TARGET = trimesh_ant_freeglut 7 | 8 | # Directories 9 | DESTDIR = . 10 | OBJECTS_DIR = build/obj 11 | 12 | # Lib headers 13 | INCLUDEPATH += . 14 | INCLUDEPATH += ../../.. 15 | 16 | # Lib sources 17 | SOURCES += ../../../wrap/ply/plylib.cpp 18 | SOURCES += ../../../wrap/gui/trackball.cpp 19 | SOURCES += ../../../wrap/gui/trackmode.cpp 20 | 21 | 22 | # Compile glew 23 | DEFINES += GLEW_STATIC 24 | SOURCES += ../../../../code/lib/glew/src/glew.c 25 | 26 | # Awful problem with windows.. 27 | win32{ 28 | DEFINES += NOMINMAX 29 | INCLUDEPATH += ../../../../code/lib/glew/include 30 | INCLUDEPATH += ../../../../code/lib/AntTweakBar/include 31 | INCLUDEPATH += ../../../../code/lib/freeglut/include 32 | LIBS +=../../../../code/lib/AntTweakBar/lib/AntTweakBar.lib 33 | LIBS +=../../../../code/lib/freeglut/lib/freeglut.lib 34 | } 35 | unix { 36 | LIBS += -lfreeglut 37 | } 38 | 39 | # Input 40 | SOURCES += main.cpp 41 | -------------------------------------------------------------------------------- /apps/QT/trimesh_ant_qt/trimesh_ant_qt.pro: -------------------------------------------------------------------------------- 1 | VCGLIBDIR = ../../../../vcglib 2 | GLEWDIR = ../../../../code/lib/glew/ 3 | ANTDIR = ../../../../code/lib/AntTweakBar1.14/ 4 | 5 | HEADERS = glwidget.h 6 | SOURCES = glwidget.cpp \ 7 | main.cpp 8 | QT += opengl 9 | 10 | # Compile glew 11 | DEFINES += GLEW_STATIC 12 | INCLUDEPATH += $$GLEWDIR/include 13 | SOURCES += $$GLEWDIR/src/glew.c 14 | 15 | INCLUDEPATH += $$VCGLIBDIR 16 | INCLUDEPATH += $$GLEWDIR/include 17 | INCLUDEPATH += $$ANTDIR/include 18 | 19 | SOURCES += $$VCGLIBDIR/wrap/ply/plylib.cpp 20 | SOURCES += $$VCGLIBDIR/wrap/gui/trackball.cpp 21 | SOURCES += $$VCGLIBDIR/wrap/gui/trackmode.cpp 22 | SOURCES += $$VCGLIBDIR/wrap/qt/anttweakbarMapper.cpp 23 | 24 | 25 | # Awful problem with windows.. 26 | win32{ 27 | DEFINES += NOMINMAX 28 | LIBS +=$$ANTDIR/lib/AntTweakBar.lib 29 | } 30 | 31 | mac{ 32 | # Mac specific Config required to avoid to make application bundles 33 | CONFIG -= app_bundle 34 | LIBS +=$$ANTDIR/lib/libAntTweakBar.dylib 35 | QMAKE_POST_LINK ="cp -P ../../../../code/lib/AntTweakBar1.14/lib/libAntTweakBar.dylib . ; install_name_tool -change ../lib/libAntTweakBar.dylib ./libAntTweakBar.dylib $$TARGET" 36 | } 37 | 38 | unix:!macx{ 39 | LIBS +=$$ANTDIR/lib/libAntTweakBar.so -lGLU 40 | } 41 | -------------------------------------------------------------------------------- /apps/QT/trimesh_pos_demo/main.cpp: -------------------------------------------------------------------------------- 1 | 2 | #include 3 | #include "window.h" 4 | 5 | int main(int argc, char *argv[]) 6 | { 7 | QApplication app(argc, argv); 8 | Window wdw; 9 | wdw.show(); 10 | return app.exec(); 11 | } 12 | -------------------------------------------------------------------------------- /apps/QT/trimesh_pos_demo/trimesh_pos_demo.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #include 4 | #include 5 | #include 6 | #include 7 | 8 | #include 9 | #include 10 | 11 | #include 12 | 13 | #include 14 | 15 | class MyEdge; 16 | class MyFace; 17 | 18 | class MyVertex: public vcg::VertexSimp2{}; 19 | class MyFace: public vcg::FaceSimp2{}; 20 | 21 | class MyMesh: public vcg::tri::TriMesh< std::vector, std::vector > {}; 22 | 23 | void OneRingNeighborhood( MyFace * f) 24 | { 25 | MyVertex * v = f->V(0); 26 | MyFace* start = f; 27 | vcg::face::Pos p(f,0,v);// constructor that takes face, edge and vertex 28 | do 29 | { 30 | p.FlipF(); 31 | p.FlipE(); 32 | }while(p.f!=start); 33 | } 34 | 35 | #include // include the definition of jumping pos 36 | 37 | void OneRingNeighborhoodJP( MyFace * f) 38 | { 39 | MyVertex * v = f->V(0); 40 | MyFace* start = f; 41 | vcg::face::JumpingPos p(f,0,v);// constructor that takes face, edge and vertex 42 | do 43 | { 44 | p.NextFE(); 45 | }while(p.f!=start); 46 | } 47 | 48 | int main() 49 | { 50 | MyMesh m; 51 | vcg::tri::Tetrahedron(m); 52 | vcg::tri::UpdateTopology::FaceFace(m); 53 | OneRingNeighborhood(&(*m.face.begin())); 54 | OneRingNeighborhoodJP(&(*m.face.begin())); 55 | return 0; 56 | } -------------------------------------------------------------------------------- /apps/QT/trimesh_pos_demo/trimesh_pos_demo.pro: -------------------------------------------------------------------------------- 1 | INCLUDEPATH += . ../../.. ../../../../code/lib ../../../../code/lib/glew/include 2 | HEADERS = glwidget.h \ 3 | window.h \ 4 | mesh_type.h 5 | SOURCES = glwidget.cpp \ 6 | main.cpp \ 7 | window.cpp\ 8 | ../../../../code/lib/glew/src/glew.c \ 9 | ../../../wrap/ply/plylib.cpp\ 10 | ../../../wrap/gui/trackmode.cpp\ 11 | ../../../wrap/gui/trackball.cpp 12 | QT += opengl 13 | 14 | # install 15 | target.path = $$./debug 16 | sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS trimesh_pos_demo.pro 17 | sources.path = ./ 18 | INSTALLS += target sources 19 | 20 | -------------------------------------------------------------------------------- /apps/QT/trimesh_pos_demo/trimesh_vfiter_demo.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #include 4 | #include 5 | #include 6 | #include 7 | 8 | #include 9 | #include 10 | 11 | #include 12 | 13 | #include 14 | 15 | class MyEdge; 16 | class MyFace; 17 | 18 | class MyVertex: public vcg::VertexSimp2{}; 19 | class MyFace: public vcg::FaceSimp2{}; 20 | class MyMesh: public vcg::tri::TriMesh< std::vector, std::vector > {}; 21 | 22 | void OneRingNeighborhoodVF( MyVertex * v) 23 | { 24 | vcg::face::VFIterator vfi(v); //initialize the iterator tohe first face 25 | for(;!vfi.End();++vfi) 26 | { 27 | MyFace* f = vfi.F(); 28 | // ...do something with face f 29 | } 30 | } 31 | 32 | int main() 33 | { 34 | MyMesh m; 35 | vcg::tri::Tetrahedron(m); 36 | vcg::tri::UpdateTopology::VertexFace(m); 37 | OneRingNeighborhoodVF(&(*m.vert.begin())); 38 | return 0; 39 | } -------------------------------------------------------------------------------- /apps/embree/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required (VERSION 3.13) 2 | project (embree_sample) 3 | 4 | set(SOURCES embree_sample.cpp) 5 | 6 | FIND_PACKAGE(embree 4.3) 7 | 8 | if(embree_FOUND) 9 | add_executable(embree_sample ${SOURCES}) 10 | 11 | target_link_libraries( 12 | embree_sample 13 | PUBLIC 14 | embree 15 | vcglib) 16 | endif() 17 | 18 | 19 | -------------------------------------------------------------------------------- /apps/imguiViewer/triangle_mesh_type.h: -------------------------------------------------------------------------------- 1 | #ifndef MY_TRI_MESH_TYPE 2 | #define MY_TRI_MESH_TYPE 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | 10 | class MyTriFace; 11 | class MyTriEdge; 12 | class MyTriVertex; 13 | 14 | struct TriUsedTypes : public vcg::UsedTypes::AsVertexType, 15 | vcg::Use::AsEdgeType, 16 | vcg::Use::AsFaceType> 17 | { 18 | }; 19 | 20 | class MyTriVertex : public vcg::Vertex 24 | { 25 | }; 26 | 27 | class MyTriEdge : public vcg::Edge< 28 | TriUsedTypes, 29 | vcg::edge::VertexRef, 30 | vcg::edge::BitFlags> 31 | { 32 | }; 33 | 34 | class MyTriFace : public vcg::Face 38 | { 39 | }; 40 | 41 | class MyTriMesh : public vcg::tri::TriMesh, 42 | std::vector, 43 | std::vector> 44 | { 45 | }; 46 | 47 | 48 | #endif 49 | -------------------------------------------------------------------------------- /apps/meshes/Tetraascii.ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | comment VCGLIB generated 4 | element vertex 4 5 | property float x 6 | property float y 7 | property float z 8 | element face 4 9 | property list uchar int vertex_indices 10 | end_header 11 | 1 1 1 12 | -1 1 -1 13 | -1 -1 1 14 | 1 -1 -1 15 | 3 0 1 2 16 | 3 0 2 3 17 | 3 0 3 1 18 | 3 3 2 1 19 | -------------------------------------------------------------------------------- /apps/meshes/bunny10k_textured.ply: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cnr-isti-vclab/vcglib/88c881d8393929c8e09b9df765ce8582bf386499/apps/meshes/bunny10k_textured.ply -------------------------------------------------------------------------------- /apps/meshes/quad.ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | comment VCGLIB generated 4 | element vertex 4 5 | property float x 6 | property float y 7 | property float z 8 | element face 2 9 | property list uchar int vertex_indices 10 | end_header 11 | -1 -1 0 12 | 1 -1 0 13 | 1 1 0 14 | -1 1 0 15 | 3 0 1 2 16 | 3 0 2 3 17 | -------------------------------------------------------------------------------- /apps/meshes/quad4.ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | comment VCGLIB generated 4 | element vertex 5 5 | property float x 6 | property float y 7 | property float z 8 | element face 4 9 | property list uchar int vertex_indices 10 | end_header 11 | -1 -1 0 12 | 1 -1 0 13 | 1 1 0 14 | -1 1 0 15 | 0 0 0 16 | 3 0 1 4 17 | 3 1 2 4 18 | 3 2 3 4 19 | 3 3 0 4 20 | -------------------------------------------------------------------------------- /apps/meshes/quad5.ply: -------------------------------------------------------------------------------- 1 | ply 2 | format ascii 1.0 3 | comment VCGLIB generated 4 | element vertex 6 5 | property float x 6 | property float y 7 | property float z 8 | element face 6 9 | property list uchar int vertex_indices 10 | end_header 11 | -1 -1 0 12 | 1 -1 0 13 | 1 1 0 14 | -1 1 0 15 | -.1 -.1 0 16 | .1 .1 0 17 | 3 0 1 4 18 | 3 1 4 5 19 | 3 1 2 5 20 | 3 2 3 5 21 | 3 3 4 5 22 | 3 3 0 4 23 | -------------------------------------------------------------------------------- /apps/metro/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.13) 2 | project (metro) 3 | 4 | if (VCG_HEADER_ONLY) 5 | set(SOURCES 6 | metro.cpp 7 | ${VCG_INCLUDE_DIRS}/wrap/ply/plylib.cpp) 8 | endif() 9 | 10 | add_executable(metro 11 | ${SOURCES}) 12 | 13 | target_link_libraries( 14 | metro 15 | PUBLIC 16 | vcglib 17 | ) 18 | -------------------------------------------------------------------------------- /apps/metro/history.txt: -------------------------------------------------------------------------------- 1 | 2 | VCGLib http://vcg.sf.net o o 3 | Visual and Computer Graphics Library o o 4 | _ O _ 5 | Copyright(C) 2005-2006 \/)\/ 6 | Visual Computing Lab http://vcg.isti.cnr.it /\/| 7 | ISTI - Italian National Research Council | 8 | \ 9 | Metro 4.07 2007/05/11 10 | All rights reserved. 11 | 12 | 2007/05/11 Release 4.07 13 | Added support for obj files. 14 | Now the Distance comparison can be done exploiting also a (slow) octree. 15 | Removed bug on the display of the area of the mesh. 16 | 17 | 2005/10/03 Release 4.06 18 | Changed the core for distance computation. 19 | Current version uses the lib flexible search structures. 20 | Now the comparison can be done exploiting a static uniform grid, 21 | a hashed grid or a hierarchy of AA box. 22 | 23 | 2005/04/04 Release 4.05 24 | Added saving of Error Histogram 25 | 26 | 2005/01/26 Release 4.04 27 | Gcc compiling issues 28 | Moved to the library core the code for computing min distance froma a point to a mesh using a uniform grid. 29 | Slightly faster. 30 | 31 | 2005/01/03 Release 4.03 32 | Better ply compatibility, and improved error reporting 33 | 34 | 2004/11/29 Release 4.02 35 | removed bug in printing Hausdorf distance, 36 | removed bug in command line parsing, 37 | upgraded import mesh library to support off format 38 | -------------------------------------------------------------------------------- /apps/metro/metro.pro: -------------------------------------------------------------------------------- 1 | 2 | TARGET = metro 3 | DEPENDPATH += ../.. 4 | INCLUDEPATH += . ../.. ../../eigenlib 5 | CONFIG += console stl c++11 debug_and_release 6 | TEMPLATE = app 7 | SOURCES += metro.cpp ../../wrap/ply/plylib.cpp 8 | 9 | # Mac specific Config required to avoid to make application bundles 10 | CONFIG -= app_bundle 11 | -------------------------------------------------------------------------------- /apps/metro/sample/knot_max_simplified.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cnr-isti-vclab/vcglib/88c881d8393929c8e09b9df765ce8582bf386499/apps/metro/sample/knot_max_simplified.STL -------------------------------------------------------------------------------- /apps/metro/sample/knot_orig.ply: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cnr-isti-vclab/vcglib/88c881d8393929c8e09b9df765ce8582bf386499/apps/metro/sample/knot_orig.ply -------------------------------------------------------------------------------- /apps/metro/sample/knot_orig_metro.ply: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cnr-isti-vclab/vcglib/88c881d8393929c8e09b9df765ce8582bf386499/apps/metro/sample/knot_orig_metro.ply -------------------------------------------------------------------------------- /apps/metro/sample/knot_subsampled.ply: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cnr-isti-vclab/vcglib/88c881d8393929c8e09b9df765ce8582bf386499/apps/metro/sample/knot_subsampled.ply -------------------------------------------------------------------------------- /apps/metro/sample/knot_subsampled_metro.ply: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cnr-isti-vclab/vcglib/88c881d8393929c8e09b9df765ce8582bf386499/apps/metro/sample/knot_subsampled_metro.ply -------------------------------------------------------------------------------- /apps/metro/sample/knot_vcg_simplified.ply: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cnr-isti-vclab/vcglib/88c881d8393929c8e09b9df765ce8582bf386499/apps/metro/sample/knot_vcg_simplified.ply -------------------------------------------------------------------------------- /apps/metro/sample/knot_vcg_simplified_metro.ply: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cnr-isti-vclab/vcglib/88c881d8393929c8e09b9df765ce8582bf386499/apps/metro/sample/knot_vcg_simplified_metro.ply -------------------------------------------------------------------------------- /apps/metro/sample/readme.txt: -------------------------------------------------------------------------------- 1 | This directory contains four 3d models that can be used to test metro. The models represent the same toroidal knot at two different level of details. 2 | 3 | - knot_orig.ply 12800 vertexes, 25600 triangles: the original high resolution mesh 4 | - knot_subsampled.ply 800 vertexes, 1600 triangles: a low res model obtained by simple uniform subsampling 5 | - knot_vcg_simplified.ply 800 vertexes, 1600 triangles: a low res model obtained by our library simplification code 6 | - knot_max_simplified.stl 800 vertexes, 1600 triangles: a low res model obtained by using a commercial tool 7 | 8 | -------------------------------------------------------------------------------- /apps/minimal_project/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.13) 2 | project(trimesh_base) 3 | add_subdirectory(vcglib) 4 | set(CMAKE_CXX_STANDARD 14) 5 | set(SOURCES 6 | simple_main.cpp) 7 | 8 | add_executable(simple_main 9 | ${SOURCES}) 10 | 11 | target_link_libraries( 12 | simple_main 13 | PUBLIC 14 | vcglib 15 | ) 16 | -------------------------------------------------------------------------------- /apps/plymc/plymc.pro: -------------------------------------------------------------------------------- 1 | TARGET = plymc 2 | DEPENDPATH += . 3 | INCLUDEPATH += ../.. 4 | CONFIG += console c++11 5 | CONFIG -= app_bundle 6 | TEMPLATE = app 7 | 8 | SOURCES += ../../wrap/ply/plylib.cpp \ 9 | plymc_main.cpp 10 | 11 | -------------------------------------------------------------------------------- /apps/sample/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.13) 2 | project(VCGExamples) 3 | 4 | set(VCG_EXAMPLE_PROJECTS 5 | aabb_binary_tree 6 | colorspace 7 | polygonmesh_base 8 | polygonmesh_dual 9 | polygonmesh_optimize 10 | polygonmesh_polychord_collapse 11 | polygonmesh_smooth 12 | space_index_2d 13 | space_packer 14 | space_rasterized_packer 15 | trimesh_align_pair 16 | trimesh_allocate 17 | trimesh_attribute 18 | trimesh_attribute_saving 19 | trimesh_ball_pivoting 20 | trimesh_base 21 | trimesh_closest 22 | trimesh_clustering 23 | trimesh_color 24 | trimesh_copy 25 | trimesh_create 26 | trimesh_curvature 27 | trimesh_cylinder_clipping 28 | trimesh_disk_parametrization 29 | trimesh_fitting 30 | trimesh_geodesic 31 | trimesh_geodesic_heat 32 | trimesh_harmonic 33 | trimesh_hole 34 | trimesh_implicit_smooth 35 | trimesh_indexing 36 | trimesh_inertia 37 | trimesh_intersection_plane 38 | trimesh_intersection_mesh 39 | trimesh_isosurface 40 | trimesh_join 41 | trimesh_kdtree 42 | trimesh_montecarlo_sampling 43 | trimesh_normal 44 | trimesh_optional 45 | trimesh_pointmatching 46 | trimesh_pointcloud_sampling 47 | trimesh_ray 48 | trimesh_refine 49 | trimesh_remeshing 50 | trimesh_sampling 51 | trimesh_select 52 | trimesh_smooth 53 | trimesh_split_vertex 54 | trimesh_texture 55 | trimesh_texture_clean 56 | trimesh_topology 57 | trimesh_topological_cut 58 | trimesh_voronoi 59 | trimesh_voronoiatlas 60 | trimesh_voronoiclustering 61 | trimesh_voronoisampling) 62 | 63 | foreach(VCG_EXAMPLE ${VCG_EXAMPLE_PROJECTS}) 64 | add_subdirectory(${VCG_EXAMPLE}) 65 | endforeach() 66 | -------------------------------------------------------------------------------- /apps/sample/aabb_binary_tree/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.13) 2 | project(aabb_binary_tree) 3 | 4 | set(SOURCES 5 | aabb_binary_tree.cpp) 6 | 7 | add_executable(aabb_binary_tree 8 | ${SOURCES}) 9 | 10 | target_link_libraries( 11 | aabb_binary_tree 12 | PUBLIC 13 | vcglib 14 | ) 15 | -------------------------------------------------------------------------------- /apps/sample/aabb_binary_tree/aabb_binary_tree.pro: -------------------------------------------------------------------------------- 1 | include(../common.pri) 2 | TARGET = aabb_binary_tree 3 | SOURCES += aabb_binary_tree.cpp 4 | -------------------------------------------------------------------------------- /apps/sample/colorspace/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.13) 2 | project(colorspace) 3 | 4 | set(SOURCES 5 | colorspace.cpp) 6 | 7 | add_executable(colorspace 8 | ${SOURCES}) 9 | 10 | target_link_libraries( 11 | colorspace 12 | PUBLIC 13 | vcglib 14 | ) 15 | -------------------------------------------------------------------------------- /apps/sample/colorspace/colorspace.pro: -------------------------------------------------------------------------------- 1 | include(../common.pri) 2 | TARGET = colorspace 3 | SOURCES += colorspace.cpp 4 | -------------------------------------------------------------------------------- /apps/sample/common.pri: -------------------------------------------------------------------------------- 1 | DEPENDPATH += \ 2 | . \ 3 | ../../.. 4 | 5 | INCLUDEPATH += \ 6 | . \ 7 | ../../.. \ 8 | ../../../eigenlib 9 | 10 | 11 | CONFIG += c++11 12 | TEMPLATE = app 13 | 14 | # Mac specific Config required to avoid to make application bundles 15 | CONFIG -= app_bundle 16 | 17 | QMAKE_CXXFLAGS += -std=c++11 18 | 19 | unix { 20 | CONFIG(release, debug|release) { 21 | DEFINES *= NDEBUG 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /apps/sample/edgemesh_sampling/edgemesh_sampling.pro: -------------------------------------------------------------------------------- 1 | include(../common.pri) 2 | TARGET = edgemesh_sampling 3 | SOURCES += edgemesh_sampling.cpp ../../../wrap/ply/plylib.cpp 4 | -------------------------------------------------------------------------------- /apps/sample/polygonmesh_base/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.13) 2 | project(polygonmesh_base) 3 | 4 | if (VCG_HEADER_ONLY) 5 | set(SOURCES 6 | polygonmesh.cpp 7 | ${VCG_INCLUDE_DIRS}/wrap/ply/plylib.cpp) 8 | endif() 9 | 10 | add_executable(polygonmesh_base 11 | ${SOURCES}) 12 | 13 | target_link_libraries( 14 | polygonmesh_base 15 | PUBLIC 16 | vcglib 17 | ) 18 | -------------------------------------------------------------------------------- /apps/sample/polygonmesh_base/polygonmesh_base.pro: -------------------------------------------------------------------------------- 1 | include(../common.pri) 2 | TARGET = polygonmesh_base 3 | SOURCES += polygonmesh.cpp ../../../wrap/ply/plylib.cpp 4 | -------------------------------------------------------------------------------- /apps/sample/polygonmesh_dual/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.13) 2 | project(polygonmesh_dual) 3 | 4 | if (VCG_HEADER_ONLY) 5 | set(SOURCES 6 | polygonmesh_dual.cpp 7 | ${VCG_INCLUDE_DIRS}/wrap/ply/plylib.cpp) 8 | endif() 9 | 10 | add_executable(polygonmesh_dual 11 | ${SOURCES}) 12 | 13 | target_link_libraries( 14 | polygonmesh_dual 15 | PUBLIC 16 | vcglib 17 | ) 18 | -------------------------------------------------------------------------------- /apps/sample/polygonmesh_dual/polygonmesh_dual.pro: -------------------------------------------------------------------------------- 1 | include(../common.pri) 2 | TARGET = polygonmesh_base 3 | SOURCES += polygonmesh_dual.cpp ../../../wrap/ply/plylib.cpp 4 | -------------------------------------------------------------------------------- /apps/sample/polygonmesh_optimize/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.13) 2 | project(polygonmesh_optimize) 3 | 4 | if (VCG_HEADER_ONLY) 5 | set(SOURCES 6 | polygonmesh_optimize.cpp 7 | ${VCG_INCLUDE_DIRS}/wrap/ply/plylib.cpp) 8 | endif() 9 | 10 | add_executable(polygonmesh_optimize 11 | ${SOURCES}) 12 | 13 | target_link_libraries( 14 | polygonmesh_optimize 15 | PUBLIC 16 | vcglib 17 | ) 18 | -------------------------------------------------------------------------------- /apps/sample/polygonmesh_optimize/polygonmesh_optimize.pro: -------------------------------------------------------------------------------- 1 | include(../common.pri) 2 | TARGET = polygonmesh_base 3 | SOURCES += polygonmesh_optimize.cpp ../../../wrap/ply/plylib.cpp 4 | -------------------------------------------------------------------------------- /apps/sample/polygonmesh_polychord_collapse/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.13) 2 | project(polygonmesh_polychord_collapse) 3 | 4 | if (VCG_HEADER_ONLY) 5 | set(SOURCES 6 | polygonmesh_polychord_collapse.cpp 7 | ${VCG_INCLUDE_DIRS}/wrap/ply/plylib.cpp) 8 | endif() 9 | 10 | add_executable(polygonmesh_polychord_collapse 11 | ${SOURCES}) 12 | 13 | target_link_libraries( 14 | polygonmesh_polychord_collapse 15 | PUBLIC 16 | vcglib 17 | ) 18 | -------------------------------------------------------------------------------- /apps/sample/polygonmesh_polychord_collapse/polygonmesh_polychord_collapse.pro: -------------------------------------------------------------------------------- 1 | include(../common.pri) 2 | SOURCES += polygonmesh_polychord_collapse.cpp ../../../wrap/ply/plylib.cpp 3 | TARGET = polygonmesh_polychord_collapse 4 | -------------------------------------------------------------------------------- /apps/sample/polygonmesh_quadsimpl/polygonmesh_quadsimpl.pro: -------------------------------------------------------------------------------- 1 | include(../common.pri) 2 | SOURCES += polygonmesh_quadsimpl.cpp ../../../wrap/ply/plylib.cpp 3 | TARGET = polygonmesh_quadsimpl 4 | -------------------------------------------------------------------------------- /apps/sample/polygonmesh_smooth/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.13) 2 | project(polygonmesh_smooth) 3 | 4 | if (VCG_HEADER_ONLY) 5 | set(SOURCES 6 | polygonmesh_smooth.cpp 7 | ${VCG_INCLUDE_DIRS}/wrap/ply/plylib.cpp) 8 | endif() 9 | 10 | add_executable(polygonmesh_smooth 11 | ${SOURCES}) 12 | 13 | target_link_libraries( 14 | polygonmesh_smooth 15 | PUBLIC 16 | vcglib 17 | ) 18 | -------------------------------------------------------------------------------- /apps/sample/polygonmesh_smooth/polygonmesh_smooth.pro: -------------------------------------------------------------------------------- 1 | include(../common.pri) 2 | TARGET = polygonmesh_smooth 3 | SOURCES += polygonmesh_smooth.cpp ../../../wrap/ply/plylib.cpp 4 | -------------------------------------------------------------------------------- /apps/sample/polygonmesh_zonohedra/input.txt: -------------------------------------------------------------------------------- 1 | cube 2 | 0 0 1 3 | 0 1 0 4 | 1 0 0 5 | 6 | funny 7 | 0 0 4 8 | 0 4 0 9 | 4 0 0 10 | 0 1 1 11 | 1 1 0 12 | 1 0 1 13 | 0 1 -1 14 | 1 -1 0 15 | -1 0 1 16 | 17 | prism8 18 | 0 3 0 19 | 1 0 0 20 | 0 0 1 21 | 1 0 1 22 | 1 0 -1 23 | 24 | prismCoolEnd 25 | 0 6 0 26 | 3 0 0 27 | 0 0 3 28 | 1 0 1 29 | 1 0 -1 30 | 1 1 1 31 | -1 1 1 32 | 1 1 -1 33 | -1 1 -1 34 | 35 | strangeDie 36 | 0 0 3 37 | 0 3 0 38 | 3 0 0 39 | 1 -1 1 40 | 1 1 -1 41 | 1 -1 -1 42 | 1 1 1 43 | -------------------------------------------------------------------------------- /apps/sample/polygonmesh_zonohedra/polygonmesh_zonohedra.pro: -------------------------------------------------------------------------------- 1 | include(../common.pri) 2 | TARGET = polygonmesh_zonohedra 3 | SOURCES += polygonmesh_zonohedra.cpp 4 | SOURCES += ../../../wrap/ply/plylib.cpp 5 | -------------------------------------------------------------------------------- /apps/sample/sample.pro: -------------------------------------------------------------------------------- 1 | TEMPLATE = subdirs 2 | 3 | SUBDIRS = \ 4 | aabb_binary_tree \ 5 | colorspace \ 6 | #edgemesh_sampling \ 7 | polygonmesh_base \ 8 | polygonmesh_dual \ 9 | polygonmesh_optimize \ 10 | polygonmesh_polychord_collapse \ 11 | #polygonmesh_quadsimpl \ 12 | polygonmesh_smooth \ 13 | #polygonmesh_zonohedra \ 14 | space_index_2d \ 15 | #space_minimal \ 16 | space_packer \ 17 | space_rasterized_packer \ 18 | trimesh_align_pair \ 19 | trimesh_allocate \ 20 | trimesh_attribute \ 21 | trimesh_attribute_saving \ 22 | trimesh_ball_pivoting \ 23 | trimesh_base \ 24 | trimesh_closest \ 25 | trimesh_clustering \ 26 | trimesh_color \ 27 | trimesh_copy \ 28 | trimesh_create \ 29 | trimesh_curvature \ 30 | trimesh_cylinder_clipping \ 31 | trimesh_disk_parametrization \ 32 | trimesh_fitting \ 33 | trimesh_geodesic \ 34 | trimesh_harmonic \ 35 | trimesh_hole \ 36 | trimesh_implicit_smooth \ 37 | trimesh_indexing \ 38 | trimesh_inertia \ 39 | trimesh_intersection_plane \ 40 | trimesh_intersection_mesh \ 41 | trimesh_isosurface \ 42 | trimesh_join \ 43 | trimesh_kdtree \ 44 | trimesh_montecarlo_sampling \ 45 | trimesh_normal \ 46 | trimesh_optional \ 47 | trimesh_pointmatching \ 48 | trimesh_pointcloud_sampling \ 49 | trimesh_ray \ 50 | trimesh_refine \ 51 | trimesh_remeshing \ 52 | trimesh_sampling \ 53 | trimesh_select \ 54 | trimesh_smooth \ 55 | trimesh_split_vertex \ 56 | trimesh_texture \ 57 | trimesh_texture_clean \ 58 | trimesh_topology \ 59 | trimesh_topological_cut \ 60 | trimesh_voronoi \ 61 | trimesh_voronoiatlas \ 62 | trimesh_voronoiclustering \ 63 | trimesh_voronoisampling 64 | -------------------------------------------------------------------------------- /apps/sample/space_index_2d/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.13) 2 | project(space_index_2d) 3 | 4 | if (VCG_HEADER_ONLY) 5 | set(SOURCES 6 | space_index_2d.cpp) 7 | endif() 8 | 9 | add_executable(space_index_2d 10 | ${SOURCES}) 11 | 12 | target_link_libraries( 13 | space_index_2d 14 | PUBLIC 15 | vcglib 16 | ) 17 | -------------------------------------------------------------------------------- /apps/sample/space_index_2d/space_index_2d.pro: -------------------------------------------------------------------------------- 1 | include(../common.pri) 2 | TARGET = space_index_2d 3 | HEADERS += ../../../vcg/space/index/grid_static_ptr2d.h\ 4 | ../../../vcg/space/index/closest2d.h\ 5 | ../../../vcg/space/index/space_iterators2d.h\ 6 | ../../../vcg/space/index/grid_closest2d.h 7 | SOURCES += space_index_2d.cpp 8 | -------------------------------------------------------------------------------- /apps/sample/space_minimal/space_minimal.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | 7 | using namespace vcg; 8 | // The shortest, simplest, dulliest introduction to the VCG Library 9 | int main(int argc, char *argv[]) 10 | { 11 | printf("Hello Library!\n"); 12 | 13 | // classical point types. 14 | // Point3f is just a typedef for Point3 15 | Point3f pp0(0,1,2); 16 | Point3f pp1(2,1,0); 17 | 18 | // classical overloading of math operators 19 | Point3f pp2=pp1+pp0; 20 | 21 | //you can access to the components of a point with three different access methods 22 | // [0] [1] [2] <-- Preferred style 23 | // .X() .Y() .Z() 24 | // .V(0) .V(1) .V(2) 25 | printf("pp2: %f %f %f \n",pp2[0], pp2.Y(),pp2.V(2)); 26 | 27 | // Warning no implicit casts between different types 28 | // Conversions are explicit 29 | Point3i ppi=Point3i::Construct(pp1+pp0); 30 | 31 | Point4i size(0,0,1,1); 32 | 33 | // Colors are specialized Point4 34 | // with a specialized constructor 35 | 36 | Color4b cb(Color4b::LightBlue); 37 | Color4f cf(Color4f::LightBlue); 38 | 39 | Color4b cbi; cbi.Import(cf); 40 | printf("ci %i %i %i %i\n",cbi.V(0),cbi.V(1),cbi.V(2),cbi.V(3)); 41 | return -1; 42 | } -------------------------------------------------------------------------------- /apps/sample/space_minimal/space_minimal.pro: -------------------------------------------------------------------------------- 1 | ###################################################################### 2 | # Automatically generated by qmake (2.00a) ven 24. giu 14:14:20 2005 3 | ###################################################################### 4 | 5 | TARGET = trimesh_base 6 | LIBPATH += 7 | DEPENDPATH += . 8 | INCLUDEPATH += . ../../.. 9 | CONFIG += console stl 10 | TEMPLATE = app 11 | SOURCES += trimesh_base.cpp 12 | -------------------------------------------------------------------------------- /apps/sample/space_packer/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.13) 2 | project(space_packer) 3 | 4 | find_package( 5 | Qt5 6 | COMPONENTS OpenGL Svg) 7 | 8 | if (TARGET Qt5::OpenGL AND TARGET Qt5::Svg) 9 | 10 | if (VCG_HEADER_ONLY) 11 | set(SOURCES 12 | space_packer.cpp 13 | ${VCG_INCLUDE_DIRS}/wrap/qt/Outline2ToQImage.cpp 14 | ${VCG_INCLUDE_DIRS}/wrap/qt/outline2_rasterizer.cpp) 15 | endif() 16 | 17 | add_executable(space_packer 18 | ${SOURCES}) 19 | 20 | target_link_libraries( 21 | space_packer 22 | PUBLIC 23 | vcglib 24 | Qt5::OpenGL 25 | Qt5::Svg 26 | ) 27 | else() 28 | message( 29 | STATUS "VCG examples - Skipping space_packer example") 30 | endif() 31 | -------------------------------------------------------------------------------- /apps/sample/space_packer/space_packer.pro: -------------------------------------------------------------------------------- 1 | include(../common.pri) 2 | TARGET = space_packer 3 | SOURCES += space_packer.cpp \ 4 | ../../../../vcglib/wrap/qt/Outline2ToQImage.cpp \ 5 | ../../../../vcglib/wrap/qt/outline2_rasterizer.cpp 6 | QT += opengl svg 7 | -------------------------------------------------------------------------------- /apps/sample/space_rasterized_packer/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.13) 2 | project(space_rasterized_packer) 3 | 4 | find_package( 5 | Qt5 6 | COMPONENTS OpenGL Svg) 7 | 8 | if (TARGET Qt5::OpenGL AND TARGET Qt5::Svg) 9 | if (VCG_HEADER_ONLY) 10 | set(SOURCES 11 | space_rasterized_packer.cpp 12 | ${VCG_INCLUDE_DIRS}/wrap/qt/Outline2ToQImage.cpp 13 | ${VCG_INCLUDE_DIRS}/wrap/qt/outline2_rasterizer.cpp) 14 | endif() 15 | 16 | add_executable(space_rasterized_packer 17 | ${SOURCES}) 18 | 19 | target_link_libraries( 20 | space_rasterized_packer 21 | PUBLIC 22 | vcglib 23 | Qt5::OpenGL 24 | Qt5::Svg 25 | ) 26 | else() 27 | message( 28 | STATUS "VCG examples - Skipping space_rasterized_packer example") 29 | endif() 30 | -------------------------------------------------------------------------------- /apps/sample/space_rasterized_packer/space_rasterized_packer.pro: -------------------------------------------------------------------------------- 1 | include(../common.pri) 2 | QT += opengl svg 3 | TARGET = space_rasterized_packer 4 | SOURCES += space_rasterized_packer.cpp \ 5 | ../../../../vcglib/wrap/qt/Outline2ToQImage.cpp \ 6 | ../../../../vcglib/wrap/qt/outline2_rasterizer.cpp 7 | -------------------------------------------------------------------------------- /apps/sample/trimesh_align_pair/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.13) 2 | project(trimesh_align_pair) 3 | 4 | if (VCG_HEADER_ONLY) 5 | set(SOURCES 6 | trimesh_align_pair.cpp 7 | ${VCG_INCLUDE_DIRS}/wrap/ply/plylib.cpp) 8 | endif() 9 | 10 | add_executable(trimesh_align_pair 11 | ${SOURCES}) 12 | 13 | target_link_libraries( 14 | trimesh_align_pair 15 | PUBLIC 16 | vcglib 17 | ) 18 | -------------------------------------------------------------------------------- /apps/sample/trimesh_align_pair/trimesh_align_pair.pro: -------------------------------------------------------------------------------- 1 | include(../common.pri) 2 | 3 | TARGET = trimesh_align_pair 4 | 5 | SOURCES += \ 6 | trimesh_align_pair.cpp \ 7 | ../../../wrap/ply/plylib.cpp 8 | -------------------------------------------------------------------------------- /apps/sample/trimesh_allocate/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.13) 2 | project(trimesh_allocate) 3 | 4 | if (VCG_HEADER_ONLY) 5 | set(SOURCES 6 | trimesh_allocate.cpp 7 | ${VCG_INCLUDE_DIRS}/wrap/ply/plylib.cpp) 8 | endif() 9 | 10 | add_executable(trimesh_allocate 11 | ${SOURCES}) 12 | 13 | target_link_libraries( 14 | trimesh_allocate 15 | PUBLIC 16 | vcglib 17 | ) 18 | -------------------------------------------------------------------------------- /apps/sample/trimesh_allocate/trimesh_allocate.pro: -------------------------------------------------------------------------------- 1 | include(../common.pri) 2 | TARGET = trimesh_allocate 3 | SOURCES += trimesh_allocate.cpp ../../../wrap/ply/plylib.cpp 4 | -------------------------------------------------------------------------------- /apps/sample/trimesh_attribute/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.13) 2 | project(trimesh_attribute) 3 | 4 | if (VCG_HEADER_ONLY) 5 | set(SOURCES 6 | trimesh_attribute.cpp) 7 | endif() 8 | 9 | add_executable(trimesh_attribute 10 | ${SOURCES}) 11 | 12 | target_link_libraries( 13 | trimesh_attribute 14 | PUBLIC 15 | vcglib 16 | ) 17 | -------------------------------------------------------------------------------- /apps/sample/trimesh_attribute/trimesh_attribute.pro: -------------------------------------------------------------------------------- 1 | include(../common.pri) 2 | TARGET = trimesh_attribute 3 | SOURCES += trimesh_attribute.cpp 4 | -------------------------------------------------------------------------------- /apps/sample/trimesh_attribute_saving/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.13) 2 | project(trimesh_attribute_saving) 3 | 4 | if (VCG_HEADER_ONLY) 5 | set(SOURCES 6 | trimesh_attribute_saving.cpp 7 | ${VCG_INCLUDE_DIRS}/wrap/ply/plylib.cpp) 8 | endif() 9 | 10 | add_executable(trimesh_attribute_saving 11 | ${SOURCES}) 12 | 13 | target_link_libraries( 14 | trimesh_attribute_saving 15 | PUBLIC 16 | vcglib 17 | ) 18 | -------------------------------------------------------------------------------- /apps/sample/trimesh_attribute_saving/trimesh_attribute_saving.pro: -------------------------------------------------------------------------------- 1 | include(../common.pri) 2 | TARGET = trimesh_attribute_saving 3 | SOURCES += trimesh_attribute_saving.cpp ../../../wrap/ply/plylib.cpp 4 | -------------------------------------------------------------------------------- /apps/sample/trimesh_ball_pivoting/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.13) 2 | project(trimesh_ball_pivoting) 3 | 4 | if (VCG_HEADER_ONLY) 5 | set(SOURCES 6 | trimesh_ball_pivoting.cpp 7 | ${VCG_INCLUDE_DIRS}/wrap/ply/plylib.cpp) 8 | endif() 9 | 10 | add_executable(trimesh_ball_pivoting 11 | ${SOURCES}) 12 | 13 | target_link_libraries( 14 | trimesh_ball_pivoting 15 | PUBLIC 16 | vcglib 17 | ) 18 | -------------------------------------------------------------------------------- /apps/sample/trimesh_ball_pivoting/trimesh_ball_pivoting.pro: -------------------------------------------------------------------------------- 1 | include(../common.pri) 2 | TARGET = trimesh_ball_pivoting 3 | SOURCES += trimesh_ball_pivoting.cpp ../../../wrap/ply/plylib.cpp 4 | -------------------------------------------------------------------------------- /apps/sample/trimesh_base/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.13) 2 | project(trimesh_base) 3 | 4 | if (VCG_HEADER_ONLY) 5 | set(SOURCES 6 | trimesh_base.cpp) 7 | endif() 8 | 9 | add_executable(trimesh_base 10 | ${SOURCES}) 11 | 12 | target_link_libraries( 13 | trimesh_base 14 | PUBLIC 15 | vcglib 16 | ) 17 | -------------------------------------------------------------------------------- /apps/sample/trimesh_base/trimesh_base.pro: -------------------------------------------------------------------------------- 1 | include(../common.pri) 2 | TARGET = trimesh_base 3 | SOURCES += trimesh_base.cpp 4 | -------------------------------------------------------------------------------- /apps/sample/trimesh_closest/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.13) 2 | project(trimesh_closest) 3 | 4 | if (VCG_HEADER_ONLY) 5 | set(SOURCES 6 | trimesh_closest.cpp 7 | ${VCG_INCLUDE_DIRS}/wrap/ply/plylib.cpp) 8 | endif() 9 | 10 | add_executable(trimesh_closest 11 | ${SOURCES}) 12 | 13 | target_link_libraries( 14 | trimesh_closest 15 | PUBLIC 16 | vcglib 17 | ) 18 | -------------------------------------------------------------------------------- /apps/sample/trimesh_closest/trimesh_closest.pro: -------------------------------------------------------------------------------- 1 | include(../common.pri) 2 | TARGET = trimesh_closest 3 | SOURCES += trimesh_closest.cpp ../../../wrap/ply/plylib.cpp 4 | -------------------------------------------------------------------------------- /apps/sample/trimesh_clustering/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.13) 2 | project(trimesh_clustering) 3 | 4 | if (VCG_HEADER_ONLY) 5 | set(SOURCES 6 | trimesh_clustering.cpp 7 | ${VCG_INCLUDE_DIRS}/wrap/ply/plylib.cpp) 8 | endif() 9 | 10 | add_executable(trimesh_clustering 11 | ${SOURCES}) 12 | 13 | target_link_libraries( 14 | trimesh_clustering 15 | PUBLIC vcglib 16 | ) 17 | -------------------------------------------------------------------------------- /apps/sample/trimesh_clustering/trimesh_clustering.pro: -------------------------------------------------------------------------------- 1 | include(../common.pri) 2 | TARGET = trimesh_clustering 3 | SOURCES += trimesh_clustering.cpp ../../../wrap/ply/plylib.cpp 4 | -------------------------------------------------------------------------------- /apps/sample/trimesh_color/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.13) 2 | project(trimesh_color) 3 | 4 | if (VCG_HEADER_ONLY) 5 | set(SOURCES 6 | trimesh_color.cpp 7 | ${VCG_INCLUDE_DIRS}/wrap/ply/plylib.cpp) 8 | endif() 9 | 10 | add_executable(trimesh_color 11 | ${SOURCES}) 12 | 13 | target_link_libraries( 14 | trimesh_color 15 | PUBLIC 16 | vcglib 17 | ) 18 | -------------------------------------------------------------------------------- /apps/sample/trimesh_color/trimesh_color.pro: -------------------------------------------------------------------------------- 1 | include(../common.pri) 2 | TARGET = trimesh_color 3 | SOURCES += trimesh_color.cpp ../../../wrap/ply/plylib.cpp 4 | -------------------------------------------------------------------------------- /apps/sample/trimesh_copy/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.13) 2 | project(trimesh_copy) 3 | 4 | if (VCG_HEADER_ONLY) 5 | set(SOURCES 6 | trimesh_copy.cpp 7 | ${VCG_INCLUDE_DIRS}/wrap/ply/plylib.cpp) 8 | endif() 9 | 10 | add_executable(trimesh_copy 11 | ${SOURCES}) 12 | 13 | target_link_libraries( 14 | trimesh_copy 15 | PUBLIC 16 | vcglib 17 | ) 18 | -------------------------------------------------------------------------------- /apps/sample/trimesh_copy/trimesh_copy.pro: -------------------------------------------------------------------------------- 1 | include(../common.pri) 2 | TARGET = trimesh_copy 3 | SOURCES += trimesh_copy.cpp ../../../wrap/ply/plylib.cpp 4 | -------------------------------------------------------------------------------- /apps/sample/trimesh_create/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.13) 2 | project(trimesh_create) 3 | 4 | if (VCG_HEADER_ONLY) 5 | set(SOURCES 6 | trimesh_create.cpp) 7 | endif() 8 | 9 | add_executable(trimesh_create 10 | ${SOURCES}) 11 | 12 | target_link_libraries( 13 | trimesh_create 14 | PUBLIC 15 | vcglib 16 | ) 17 | -------------------------------------------------------------------------------- /apps/sample/trimesh_create/trimesh_create.pro: -------------------------------------------------------------------------------- 1 | include(../common.pri) 2 | TARGET = trimesh_create 3 | SOURCES += trimesh_create.cpp 4 | -------------------------------------------------------------------------------- /apps/sample/trimesh_curvature/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.13) 2 | project(trimesh_curvature) 3 | 4 | if (VCG_HEADER_ONLY) 5 | set(SOURCES 6 | trimesh_curvature.cpp 7 | ${VCG_INCLUDE_DIRS}/wrap/ply/plylib.cpp) 8 | endif() 9 | 10 | add_executable(trimesh_curvature 11 | ${SOURCES}) 12 | 13 | target_link_libraries( 14 | trimesh_curvature 15 | PUBLIC 16 | vcglib 17 | ) 18 | -------------------------------------------------------------------------------- /apps/sample/trimesh_curvature/trimesh_curvature.pro: -------------------------------------------------------------------------------- 1 | include(../common.pri) 2 | TARGET = trimesh_curvature 3 | SOURCES += trimesh_curvature.cpp ../../../wrap/ply/plylib.cpp 4 | -------------------------------------------------------------------------------- /apps/sample/trimesh_cylinder_clipping/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.13) 2 | project(trimesh_cylinder_clipping) 3 | 4 | if (VCG_HEADER_ONLY) 5 | set(SOURCES 6 | trimesh_cylinder_clipping.cpp 7 | ${VCG_INCLUDE_DIRS}/wrap/ply/plylib.cpp) 8 | endif() 9 | 10 | add_executable(trimesh_cylinder_clipping 11 | ${SOURCES}) 12 | 13 | target_link_libraries( 14 | trimesh_cylinder_clipping 15 | PUBLIC 16 | vcglib 17 | ) 18 | -------------------------------------------------------------------------------- /apps/sample/trimesh_cylinder_clipping/trimesh_cylinder_clipping.pro: -------------------------------------------------------------------------------- 1 | include(../common.pri) 2 | SOURCES += trimesh_cylinder_clipping.cpp ../../../wrap/ply/plylib.cpp 3 | -------------------------------------------------------------------------------- /apps/sample/trimesh_disk_parametrization/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.13) 2 | project(trimesh_disk_parametrization) 3 | 4 | if (VCG_HEADER_ONLY) 5 | set(SOURCES 6 | trimesh_disk_parametrization.cpp 7 | ${VCG_INCLUDE_DIRS}/wrap/ply/plylib.cpp) 8 | endif() 9 | 10 | add_executable(trimesh_disk_parametrization 11 | ${SOURCES}) 12 | 13 | target_link_libraries( 14 | trimesh_disk_parametrization 15 | PUBLIC 16 | vcglib 17 | ) 18 | -------------------------------------------------------------------------------- /apps/sample/trimesh_disk_parametrization/trimesh_disk_parametrization.pro: -------------------------------------------------------------------------------- 1 | include(../common.pri) 2 | TARGET = trimesh_disk_parametrization 3 | SOURCES += trimesh_disk_parametrization.cpp ../../../wrap/ply/plylib.cpp 4 | -------------------------------------------------------------------------------- /apps/sample/trimesh_edge/trimesh_edge.pro: -------------------------------------------------------------------------------- 1 | include(../common.pri) 2 | TARGET = trimesh_edge 3 | CONFIG += opengl 4 | SOURCES += trimesh_edge.cpp ../../../wrap/ply/plylib.cpp 5 | -------------------------------------------------------------------------------- /apps/sample/trimesh_fitting/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.13) 2 | project(trimesh_fitting) 3 | 4 | if (VCG_HEADER_ONLY) 5 | set(SOURCES 6 | trimesh_fitting.cpp) 7 | endif() 8 | 9 | add_executable(trimesh_fitting 10 | ${SOURCES}) 11 | 12 | target_link_libraries( 13 | trimesh_fitting 14 | PUBLIC 15 | vcglib 16 | ) 17 | -------------------------------------------------------------------------------- /apps/sample/trimesh_fitting/trimesh_fitting.pro: -------------------------------------------------------------------------------- 1 | include(../common.pri) 2 | TARGET = trimesh_fitting 3 | SOURCES += trimesh_fitting.cpp 4 | -------------------------------------------------------------------------------- /apps/sample/trimesh_geodesic/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.13) 2 | project(trimesh_geodesic) 3 | 4 | if (VCG_HEADER_ONLY) 5 | set(SOURCES 6 | trimesh_geodesic.cpp 7 | ${VCG_INCLUDE_DIRS}/wrap/ply/plylib.cpp) 8 | endif() 9 | 10 | add_executable(trimesh_geodesic 11 | ${SOURCES}) 12 | 13 | target_link_libraries( 14 | trimesh_geodesic 15 | PUBLIC 16 | vcglib 17 | ) 18 | -------------------------------------------------------------------------------- /apps/sample/trimesh_geodesic/trimesh_geodesic.pro: -------------------------------------------------------------------------------- 1 | include(../common.pri) 2 | TARGET = trimesh_geodesic 3 | SOURCES += trimesh_geodesic.cpp ../../../wrap/ply/plylib.cpp 4 | -------------------------------------------------------------------------------- /apps/sample/trimesh_geodesic_heat/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.13) 2 | project(trimesh_geodesic_heat) 3 | 4 | if (VCG_HEADER_ONLY) 5 | set(SOURCES 6 | trimesh_geodesic_heat.cpp 7 | ${VCG_INCLUDE_DIRS}/wrap/ply/plylib.cpp) 8 | endif() 9 | 10 | add_executable(trimesh_geodesic_heat 11 | ${SOURCES}) 12 | 13 | target_link_libraries( 14 | trimesh_geodesic_heat 15 | PUBLIC 16 | vcglib 17 | ) -------------------------------------------------------------------------------- /apps/sample/trimesh_geodesic_heat/trimesh_geodesic_heat.pro: -------------------------------------------------------------------------------- 1 | include(../common.pri) 2 | TARGET = trimesh_geodesic_heat 3 | SOURCES += trimesh_geodesic_heat.cpp ../../../wrap/ply/plylib.cpp 4 | -------------------------------------------------------------------------------- /apps/sample/trimesh_harmonic/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.13) 2 | project(trimesh_harmonic) 3 | 4 | if (VCG_HEADER_ONLY) 5 | set(SOURCES 6 | trimesh_harmonic.cpp 7 | ${VCG_INCLUDE_DIRS}/wrap/ply/plylib.cpp) 8 | endif() 9 | 10 | add_executable(trimesh_harmonic 11 | ${SOURCES}) 12 | 13 | target_link_libraries( 14 | trimesh_harmonic 15 | PUBLIC 16 | vcglib 17 | ) 18 | -------------------------------------------------------------------------------- /apps/sample/trimesh_harmonic/trimesh_harmonic.pro: -------------------------------------------------------------------------------- 1 | include(../common.pri) 2 | TARGET = trimesh_harmonic 3 | SOURCES += trimesh_harmonic.cpp ../../../wrap/ply/plylib.cpp 4 | 5 | CONFIG(release, debug | release){ 6 | DEFINES += NDEBUG 7 | } 8 | 9 | -------------------------------------------------------------------------------- /apps/sample/trimesh_hole/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.13) 2 | project(trimesh_hole) 3 | 4 | if (VCG_HEADER_ONLY) 5 | set(SOURCES 6 | trimesh_hole.cpp 7 | ${VCG_INCLUDE_DIRS}/wrap/ply/plylib.cpp) 8 | endif() 9 | 10 | add_executable(trimesh_hole 11 | ${SOURCES}) 12 | 13 | target_link_libraries( 14 | trimesh_hole 15 | PUBLIC 16 | vcglib 17 | ) 18 | -------------------------------------------------------------------------------- /apps/sample/trimesh_hole/trimesh_hole.pro: -------------------------------------------------------------------------------- 1 | include(../common.pri) 2 | TARGET = trimesh_hole 3 | SOURCES += trimesh_hole.cpp ../../../wrap/ply/plylib.cpp 4 | -------------------------------------------------------------------------------- /apps/sample/trimesh_implicit_smooth/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.13) 2 | project(trimesh_implicit_smooth) 3 | 4 | if (VCG_HEADER_ONLY) 5 | set(SOURCES 6 | trimesh_implicit_smooth.cpp 7 | ${VCG_INCLUDE_DIRS}/wrap/ply/plylib.cpp) 8 | endif() 9 | 10 | add_executable(trimesh_implicit_smooth 11 | ${SOURCES}) 12 | 13 | target_link_libraries( 14 | trimesh_implicit_smooth 15 | PUBLIC 16 | vcglib 17 | ) 18 | -------------------------------------------------------------------------------- /apps/sample/trimesh_implicit_smooth/trimesh_implicit_smooth.pro: -------------------------------------------------------------------------------- 1 | include(../common.pri) 2 | TARGET = trimesh_implicit_smooth 3 | SOURCES += trimesh_implicit_smooth.cpp ../../../wrap/ply/plylib.cpp 4 | -------------------------------------------------------------------------------- /apps/sample/trimesh_import_fbx/trimesh_import_fbx.pro: -------------------------------------------------------------------------------- 1 | include(../common.pri) 2 | TARGET = trimesh_import_fbx 3 | SOURCES += trimesh_import_fbx.cpp \ 4 | ../../../wrap/openfbx/src/ofbx.cpp \ 5 | ../../../wrap/openfbx/src/miniz.c 6 | 7 | CONFIG += c++11 8 | 9 | -------------------------------------------------------------------------------- /apps/sample/trimesh_indexing/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.13) 2 | project(trimesh_indexing) 3 | 4 | if (VCG_HEADER_ONLY) 5 | set(SOURCES 6 | trimesh_indexing.cpp 7 | ${VCG_INCLUDE_DIRS}/wrap/ply/plylib.cpp) 8 | endif() 9 | 10 | add_executable(trimesh_indexing 11 | ${SOURCES}) 12 | 13 | target_link_libraries( 14 | trimesh_indexing 15 | PUBLIC 16 | vcglib 17 | ) 18 | -------------------------------------------------------------------------------- /apps/sample/trimesh_indexing/trimesh_indexing.pro: -------------------------------------------------------------------------------- 1 | include(../common.pri) 2 | TARGET = kdTree_test 3 | SOURCES = trimesh_indexing.cpp \ 4 | ../../../wrap/ply/plylib.cpp 5 | -------------------------------------------------------------------------------- /apps/sample/trimesh_inertia/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.13) 2 | project(trimesh_inertia) 3 | 4 | if (VCG_HEADER_ONLY) 5 | set(SOURCES 6 | trimesh_inertia.cpp) 7 | endif() 8 | 9 | add_executable(trimesh_inertia 10 | ${SOURCES}) 11 | 12 | target_link_libraries( 13 | trimesh_inertia 14 | PUBLIC 15 | vcglib 16 | ) 17 | -------------------------------------------------------------------------------- /apps/sample/trimesh_inertia/trimesh_inertia.pro: -------------------------------------------------------------------------------- 1 | include(../common.pri) 2 | TARGET = trimesh_inertia 3 | SOURCES += trimesh_inertia.cpp 4 | -------------------------------------------------------------------------------- /apps/sample/trimesh_intersection_mesh/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.13) 2 | project(trimesh_intersection_mesh) 3 | 4 | if (VCG_HEADER_ONLY) 5 | set(SOURCES 6 | trimesh_intersection_mesh.cpp) 7 | endif() 8 | 9 | add_executable(trimesh_intersection_mesh 10 | ${SOURCES}) 11 | 12 | target_link_libraries( 13 | trimesh_intersection_mesh 14 | PUBLIC 15 | vcglib 16 | ) 17 | -------------------------------------------------------------------------------- /apps/sample/trimesh_intersection_mesh/trimesh_intersection_mesh.pro: -------------------------------------------------------------------------------- 1 | include(../common.pri) 2 | TARGET = trimesh_intersection_mesh 3 | SOURCES += trimesh_intersection_mesh.cpp 4 | -------------------------------------------------------------------------------- /apps/sample/trimesh_intersection_plane/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.13) 2 | project(trimesh_intersection_plane) 3 | 4 | if (VCG_HEADER_ONLY) 5 | set(SOURCES 6 | trimesh_intersection_plane.cpp) 7 | endif() 8 | 9 | add_executable(trimesh_intersection_plane 10 | ${SOURCES}) 11 | 12 | target_link_libraries( 13 | trimesh_intersection_plane 14 | PUBLIC 15 | vcglib 16 | ) 17 | -------------------------------------------------------------------------------- /apps/sample/trimesh_intersection_plane/trimesh_intersection_plane.pro: -------------------------------------------------------------------------------- 1 | include(../common.pri) 2 | TARGET = trimesh_intersection_plane 3 | SOURCES += trimesh_intersection_plane.cpp 4 | -------------------------------------------------------------------------------- /apps/sample/trimesh_isosurface/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.13) 2 | project(trimesh_isosurface) 3 | 4 | if (VCG_HEADER_ONLY) 5 | set(SOURCES 6 | trimesh_isosurface.cpp 7 | ${VCG_INCLUDE_DIRS}/wrap/ply/plylib.cpp) 8 | endif() 9 | 10 | add_executable(trimesh_isosurface 11 | ${SOURCES}) 12 | 13 | target_link_libraries( 14 | trimesh_isosurface 15 | PUBLIC 16 | vcglib 17 | ) 18 | -------------------------------------------------------------------------------- /apps/sample/trimesh_isosurface/trimesh_isosurface.pro: -------------------------------------------------------------------------------- 1 | include(../common.pri) 2 | TARGET = trimesh_isosurface 3 | SOURCES += trimesh_isosurface.cpp ../../../wrap/ply/plylib.cpp 4 | -------------------------------------------------------------------------------- /apps/sample/trimesh_join/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.13) 2 | project(trimesh_join) 3 | 4 | if (VCG_HEADER_ONLY) 5 | set(SOURCES 6 | trimesh_join.cpp 7 | ${VCG_INCLUDE_DIRS}/wrap/ply/plylib.cpp) 8 | endif() 9 | 10 | add_executable(trimesh_join 11 | ${SOURCES}) 12 | 13 | target_link_libraries( 14 | trimesh_join 15 | PUBLIC 16 | vcglib 17 | ) 18 | -------------------------------------------------------------------------------- /apps/sample/trimesh_join/trimesh_join.pro: -------------------------------------------------------------------------------- 1 | include(../common.pri) 2 | TARGET = trimesh_join 3 | SOURCES += trimesh_join.cpp ../../../wrap/ply/plylib.cpp 4 | -------------------------------------------------------------------------------- /apps/sample/trimesh_kdtree/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.13) 2 | project(trimesh_kdtree) 3 | 4 | if (VCG_HEADER_ONLY) 5 | set(SOURCES 6 | trimesh_kdtree.cpp 7 | ${VCG_INCLUDE_DIRS}/wrap/ply/plylib.cpp) 8 | endif() 9 | 10 | add_executable(trimesh_kdtree 11 | ${SOURCES}) 12 | 13 | target_link_libraries( 14 | trimesh_kdtree 15 | PUBLIC 16 | vcglib 17 | ) 18 | -------------------------------------------------------------------------------- /apps/sample/trimesh_kdtree/trimesh_kdtree.pro: -------------------------------------------------------------------------------- 1 | include(../common.pri) 2 | TARGET = trimesh_kdtree 3 | SOURCES += trimesh_kdtree.cpp ../../../wrap/ply/plylib.cpp 4 | -------------------------------------------------------------------------------- /apps/sample/trimesh_montecarlo_sampling/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.13) 2 | project(trimesh_montecarlo_sampling) 3 | 4 | if (VCG_HEADER_ONLY) 5 | set(SOURCES 6 | trimesh_montecarlo_sampling.cpp) 7 | endif() 8 | 9 | add_executable(trimesh_montecarlo_sampling 10 | ${SOURCES}) 11 | 12 | target_link_libraries( 13 | trimesh_montecarlo_sampling 14 | PUBLIC 15 | vcglib 16 | ) 17 | -------------------------------------------------------------------------------- /apps/sample/trimesh_montecarlo_sampling/trimesh_montecarlo_sampling.pro: -------------------------------------------------------------------------------- 1 | include(../common.pri) 2 | TARGET = trimesh_montecarlo_sampling 3 | SOURCES += trimesh_montecarlo_sampling.cpp 4 | -------------------------------------------------------------------------------- /apps/sample/trimesh_normal/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.13) 2 | project(trimesh_normal) 3 | 4 | if (VCG_HEADER_ONLY) 5 | set(SOURCES 6 | trimesh_normal.cpp) 7 | endif() 8 | 9 | add_executable(trimesh_normal 10 | ${SOURCES}) 11 | 12 | target_link_libraries( 13 | trimesh_normal 14 | PUBLIC 15 | vcglib 16 | ) 17 | -------------------------------------------------------------------------------- /apps/sample/trimesh_normal/trimesh_normal.pro: -------------------------------------------------------------------------------- 1 | include(../common.pri) 2 | TARGET = trimesh_normal 3 | SOURCES += trimesh_normal.cpp 4 | -------------------------------------------------------------------------------- /apps/sample/trimesh_optional/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.13) 2 | project(trimesh_optional) 3 | 4 | if (VCG_HEADER_ONLY) 5 | set(SOURCES 6 | trimesh_optional.cpp 7 | ${VCG_INCLUDE_DIRS}/wrap/ply/plylib.cpp) 8 | endif() 9 | 10 | add_executable(trimesh_optional 11 | ${SOURCES}) 12 | 13 | target_link_libraries( 14 | trimesh_optional 15 | PUBLIC 16 | vcglib 17 | ) 18 | -------------------------------------------------------------------------------- /apps/sample/trimesh_optional/trimesh_optional.pro: -------------------------------------------------------------------------------- 1 | include(../common.pri) 2 | TARGET = trimesh_optional 3 | SOURCES += trimesh_optional.cpp ../../../wrap/ply/plylib.cpp 4 | -------------------------------------------------------------------------------- /apps/sample/trimesh_optional/trimesh_optional_occ.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | 7 | #include 8 | 9 | #include 10 | 11 | class MyEdge; 12 | class MyFace; 13 | 14 | class MyVertex: public vcg::VertexSimp2{}; 15 | class MyFace: public vcg::FaceSimp2{}; 16 | class MyMesh: public vcg::tri::TriMesh< vcg::vert::vector_ocf, std::vector >{}; 17 | 18 | int main() 19 | { 20 | MyMesh m; 21 | vcg::tri::Tetrahedron(m); 22 | MyMesh::VertexIterator vi = m.vert.begin(); 23 | 24 | (*vi).N() = vcg::Point3f(1.0,1.0,1.0); // ERROR 25 | m.vert.EnableNormal(); // this allocate the memory to store the normal 26 | (*vi).N() = vcg::Point3f(1.0,1.0,1.0); // OK 27 | m.vert.DisableNormal(); // this deallocate the memory to store the normal 28 | 29 | (*vi).N() = vcg::Point3f(1.0,1.0,1.0); // ERROR (again)! 30 | return 0; 31 | } -------------------------------------------------------------------------------- /apps/sample/trimesh_optional/trimesh_optional_ocf.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | 7 | #include 8 | 9 | #include 10 | 11 | class MyEdge; 12 | class MyFace; 13 | 14 | class MyVertex: public vcg::VertexSimp2{}; 15 | class MyFace: public vcg::FaceSimp2{}; 16 | class MyMesh: public vcg::tri::TriMesh< vcg::vert::vector_occ, std::vector >{}; 17 | 18 | int main() 19 | { 20 | MyMesh m; 21 | vcg::tri::Tetrahedron(m); 22 | MyMesh::VertexIterator vi = m.vert.begin(); 23 | 24 | (*vi).N() = vcg::Point3f(1.0,1.0,1.0); // ERROR 25 | m.vert.EnableAttribute(); // this allocate the memory to store the normal 26 | (*vi).N() = vcg::Point3f(1.0,1.0,1.0); // OK 27 | m.vert.DisableAttribute(); // this deallocate the memory to store the normal 28 | 29 | (*vi).N() = vcg::Point3f(1.0,1.0,1.0); // ERROR (again)! 30 | return 0; 31 | } 32 | -------------------------------------------------------------------------------- /apps/sample/trimesh_optional/trimesh_simpdata_simp.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #include 4 | #include 5 | #include 6 | #include 7 | 8 | #include 9 | #include 10 | 11 | #include 12 | 13 | class MyEdge; 14 | class MyFace; 15 | 16 | class MyVertex: public vcg::VertexSimp2{}; 17 | class MyFace: public vcg::FaceSimp2{}; 18 | 19 | class MyMesh: public vcg::tri::TriMesh< std::vector, std::vector > {}; 20 | 21 | 22 | int main() 23 | { 24 | MyMesh m; 25 | vcg::tri::Tetrahedron(m); 26 | vcg::SimpleTempData MyTempData(m.vert); 27 | 28 | MyTempData.Start(); // enable the user defined attribute (memory is allocated) 29 | 30 | MyMesh::VertexIterator vi; // declare the iterator over the vertices 31 | for(vi = m.vert.begin(); vi != m.vert.end(); ++vi) 32 | { 33 | MyTempData[*vi] = 10; // assign the value for the 'short' attribute 34 | MyTempData[vi] = 10; // you can pass the element or an iterator to it 35 | } 36 | 37 | MyTempData.Stop(); // disable the user defined attribute (memory is freed) 38 | 39 | return 0; 40 | } -------------------------------------------------------------------------------- /apps/sample/trimesh_pointcloud_sampling/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.13) 2 | project(trimesh_pointcloud_sampling) 3 | 4 | if (VCG_HEADER_ONLY) 5 | set(SOURCES 6 | trimesh_pointcloud_sampling.cpp 7 | ${VCG_INCLUDE_DIRS}/wrap/ply/plylib.cpp) 8 | endif() 9 | 10 | add_executable(trimesh_pointcloud_sampling 11 | ${SOURCES}) 12 | 13 | target_link_libraries( 14 | trimesh_pointcloud_sampling 15 | PUBLIC 16 | vcglib 17 | ) 18 | -------------------------------------------------------------------------------- /apps/sample/trimesh_pointcloud_sampling/trimesh_pointcloud_sampling.pro: -------------------------------------------------------------------------------- 1 | include(../common.pri) 2 | TARGET = trimesh_pointcloud_sampling 3 | SOURCES += trimesh_pointcloud_sampling.cpp ../../../wrap/ply/plylib.cpp 4 | -------------------------------------------------------------------------------- /apps/sample/trimesh_pointmatching/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.13) 2 | project(trimesh_pointmatching) 3 | 4 | if (VCG_HEADER_ONLY) 5 | set(SOURCES 6 | trimesh_pointmatching.cpp) 7 | endif() 8 | 9 | add_executable(trimesh_pointmatching 10 | ${SOURCES}) 11 | 12 | target_link_libraries( 13 | trimesh_pointmatching 14 | PUBLIC 15 | vcglib 16 | ) 17 | -------------------------------------------------------------------------------- /apps/sample/trimesh_pointmatching/trimesh_pointmatching.pro: -------------------------------------------------------------------------------- 1 | include(../common.pri) 2 | TARGET = trimesh_pointmatching 3 | SOURCES += trimesh_pointmatching.cpp 4 | -------------------------------------------------------------------------------- /apps/sample/trimesh_ransac/trimesh_ransac.pro: -------------------------------------------------------------------------------- 1 | include(../common.pri) 2 | TARGET = trimesh_ransac 3 | SOURCES += ../../../wrap/ply/plylib.cpp \ 4 | ../../../vcg/complex/algorithms/ransac_matching.h \ 5 | trimesh_ransac.cpp 6 | -------------------------------------------------------------------------------- /apps/sample/trimesh_ray/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.13) 2 | project(trimesh_ray) 3 | 4 | if (VCG_HEADER_ONLY) 5 | set(SOURCES 6 | trimesh_ray.cpp 7 | ${VCG_INCLUDE_DIRS}/wrap/ply/plylib.cpp) 8 | endif() 9 | 10 | add_executable(trimesh_ray 11 | ${SOURCES}) 12 | 13 | target_link_libraries( 14 | trimesh_ray 15 | PUBLIC 16 | vcglib 17 | ) 18 | -------------------------------------------------------------------------------- /apps/sample/trimesh_ray/trimesh_ray.pro: -------------------------------------------------------------------------------- 1 | include(../common.pri) 2 | TARGET = trimesh_ray 3 | SOURCES += trimesh_ray.cpp ../../../wrap/ply/plylib.cpp 4 | -------------------------------------------------------------------------------- /apps/sample/trimesh_refine/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.13) 2 | project(trimesh_refine) 3 | 4 | if (VCG_HEADER_ONLY) 5 | set(SOURCES 6 | trimesh_refine.cpp 7 | ${VCG_INCLUDE_DIRS}/wrap/ply/plylib.cpp) 8 | endif() 9 | 10 | add_executable(trimesh_refine 11 | ${SOURCES}) 12 | 13 | target_link_libraries( 14 | trimesh_refine 15 | PUBLIC 16 | vcglib 17 | ) 18 | -------------------------------------------------------------------------------- /apps/sample/trimesh_refine/trimesh_refine.pro: -------------------------------------------------------------------------------- 1 | include(../common.pri) 2 | TARGET = trimesh_refine 3 | SOURCES += trimesh_refine.cpp ../../../wrap/ply/plylib.cpp 4 | -------------------------------------------------------------------------------- /apps/sample/trimesh_remeshing/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.13) 2 | project(trimesh_remeshing) 3 | 4 | if (VCG_HEADER_ONLY) 5 | set(SOURCES 6 | trimesh_remeshing.cpp 7 | ${VCG_INCLUDE_DIRS}/wrap/ply/plylib.cpp) 8 | endif() 9 | 10 | add_executable(trimesh_remeshing 11 | ${SOURCES}) 12 | 13 | target_link_libraries( 14 | trimesh_remeshing 15 | PUBLIC 16 | vcglib 17 | ) 18 | -------------------------------------------------------------------------------- /apps/sample/trimesh_remeshing/trimesh_remeshing.pro: -------------------------------------------------------------------------------- 1 | include(../common.pri) 2 | TARGET = trimesh_remeshing 3 | SOURCES += trimesh_remeshing.cpp ../../../wrap/ply/plylib.cpp 4 | 5 | -------------------------------------------------------------------------------- /apps/sample/trimesh_resampler/trimesh_resampler.pro: -------------------------------------------------------------------------------- 1 | include(../common.pri) 2 | TARGET = trimesh_resampler 3 | SOURCES += trimesh_resampler.cpp ../../../wrap/ply/plylib.cpp 4 | -------------------------------------------------------------------------------- /apps/sample/trimesh_sampling/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.13) 2 | project(trimesh_sampling) 3 | 4 | if (VCG_HEADER_ONLY) 5 | set(SOURCES 6 | trimesh_sampling.cpp) 7 | endif() 8 | 9 | add_executable(trimesh_sampling 10 | ${SOURCES}) 11 | 12 | target_link_libraries( 13 | trimesh_sampling 14 | PUBLIC 15 | vcglib 16 | ) 17 | -------------------------------------------------------------------------------- /apps/sample/trimesh_sampling/trimesh_sampling.pro: -------------------------------------------------------------------------------- 1 | include(../common.pri) 2 | TARGET = trimesh_sampling 3 | SOURCES += trimesh_sampling.cpp 4 | 5 | # Awful.. 6 | win32{ 7 | DEFINES += NOMINMAX 8 | } 9 | -------------------------------------------------------------------------------- /apps/sample/trimesh_select/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.13) 2 | project(trimesh_select) 3 | 4 | if (VCG_HEADER_ONLY) 5 | set(SOURCES 6 | trimesh_select.cpp) 7 | endif() 8 | 9 | add_executable(trimesh_select 10 | ${SOURCES}) 11 | 12 | target_link_libraries( 13 | trimesh_select 14 | PUBLIC 15 | vcglib 16 | ) 17 | -------------------------------------------------------------------------------- /apps/sample/trimesh_select/trimesh_select.pro: -------------------------------------------------------------------------------- 1 | include(../common.pri) 2 | TARGET = trimesh_select 3 | SOURCES += trimesh_select.cpp 4 | -------------------------------------------------------------------------------- /apps/sample/trimesh_selfintersection/trimesh_selfintersection.pro: -------------------------------------------------------------------------------- 1 | include(../common.pri) 2 | TARGET = trimesh_selfintersection 3 | SOURCES += trimesh_selfintersection.cpp ../../../wrap/ply/plylib.cpp 4 | 5 | -------------------------------------------------------------------------------- /apps/sample/trimesh_smooth/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.13) 2 | project(trimesh_smooth) 3 | 4 | if (VCG_HEADER_ONLY) 5 | set(SOURCES 6 | trimesh_smooth.cpp 7 | ${VCG_INCLUDE_DIRS}/wrap/ply/plylib.cpp) 8 | endif() 9 | 10 | add_executable(trimesh_smooth 11 | ${SOURCES}) 12 | 13 | target_link_libraries( 14 | trimesh_smooth 15 | PUBLIC 16 | vcglib 17 | ) 18 | -------------------------------------------------------------------------------- /apps/sample/trimesh_smooth/trimesh_smooth.pro: -------------------------------------------------------------------------------- 1 | include(../common.pri) 2 | TARGET = trimesh_smooth 3 | SOURCES += trimesh_smooth.cpp ../../../wrap/ply/plylib.cpp 4 | -------------------------------------------------------------------------------- /apps/sample/trimesh_split_vertex/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.13) 2 | project(trimesh_split_vertex) 3 | 4 | if (VCG_HEADER_ONLY) 5 | set(SOURCES 6 | trimesh_split_vertex.cpp 7 | ${VCG_INCLUDE_DIRS}/wrap/ply/plylib.cpp) 8 | endif() 9 | 10 | add_executable(trimesh_split_vertex 11 | ${SOURCES}) 12 | 13 | target_link_libraries( 14 | trimesh_split_vertex 15 | PUBLIC 16 | vcglib 17 | ) 18 | -------------------------------------------------------------------------------- /apps/sample/trimesh_split_vertex/trimesh_split_vertex.pro: -------------------------------------------------------------------------------- 1 | include(../common.pri) 2 | TARGET = trimesh_split_vertex 3 | SOURCES += trimesh_split_vertex.cpp ../../../wrap/ply/plylib.cpp 4 | -------------------------------------------------------------------------------- /apps/sample/trimesh_texture/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.13) 2 | project(trimesh_texture) 3 | 4 | find_package( 5 | Qt5 6 | COMPONENTS OpenGL Svg) 7 | 8 | if (TARGET Qt5::OpenGL AND TARGET Qt5::Svg) 9 | 10 | if (VCG_HEADER_ONLY) 11 | set(SOURCES 12 | trimesh_texture.cpp 13 | ${VCG_INCLUDE_DIRS}/wrap/ply/plylib.cpp 14 | ${VCG_INCLUDE_DIRS}/wrap/qt/Outline2ToQImage.cpp 15 | ${VCG_INCLUDE_DIRS}/wrap/qt/outline2_rasterizer.cpp) 16 | endif() 17 | 18 | add_executable(trimesh_texture 19 | ${SOURCES}) 20 | 21 | target_link_libraries( 22 | trimesh_texture 23 | PUBLIC 24 | vcglib 25 | Qt5::OpenGL 26 | Qt5::Svg 27 | ) 28 | else() 29 | message( 30 | STATUS "VCG examples - Skipping trimesh_texture example") 31 | endif() 32 | -------------------------------------------------------------------------------- /apps/sample/trimesh_texture/trimesh_texture.pro: -------------------------------------------------------------------------------- 1 | include(../common.pri) 2 | QT += opengl svg 3 | TARGET = trimesh_texture 4 | SOURCES += trimesh_texture.cpp \ 5 | ../../../../vcglib/wrap/qt/Outline2ToQImage.cpp \ 6 | ../../../../vcglib/wrap/qt/outline2_rasterizer.cpp \ 7 | ../../../wrap/ply/plylib.cpp 8 | -------------------------------------------------------------------------------- /apps/sample/trimesh_texture_clean/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.13) 2 | project(trimesh_texture_clean) 3 | 4 | if (VCG_HEADER_ONLY) 5 | set(SOURCES 6 | trimesh_texture_clean.cpp) 7 | endif() 8 | 9 | add_executable(trimesh_texture_clean 10 | ${SOURCES}) 11 | 12 | target_link_libraries( 13 | trimesh_texture_clean 14 | PUBLIC 15 | vcglib 16 | ) 17 | -------------------------------------------------------------------------------- /apps/sample/trimesh_texture_clean/trimesh_texture_clean.pro: -------------------------------------------------------------------------------- 1 | include(../common.pri) 2 | TARGET = trimesh_texture_clean 3 | SOURCES += trimesh_texture_clean.cpp 4 | 5 | -------------------------------------------------------------------------------- /apps/sample/trimesh_topological_cut/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.13) 2 | project(trimesh_topological_cut) 3 | 4 | if (VCG_HEADER_ONLY) 5 | set(SOURCES 6 | trimesh_topological_cut.cpp 7 | ${VCG_INCLUDE_DIRS}/wrap/ply/plylib.cpp) 8 | endif() 9 | 10 | add_executable(trimesh_topological_cut 11 | ${SOURCES}) 12 | 13 | target_link_libraries( 14 | trimesh_topological_cut 15 | PUBLIC 16 | vcglib 17 | ) 18 | -------------------------------------------------------------------------------- /apps/sample/trimesh_topological_cut/trimesh_topological_cut.pro: -------------------------------------------------------------------------------- 1 | include(../common.pri) 2 | TARGET = trimesh_topological_cut 3 | SOURCES += trimesh_topological_cut.cpp ../../../wrap/ply/plylib.cpp 4 | -------------------------------------------------------------------------------- /apps/sample/trimesh_topology/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.13) 2 | project(trimesh_topology) 3 | 4 | if (VCG_HEADER_ONLY) 5 | set(SOURCES 6 | trimesh_topology.cpp) 7 | endif() 8 | 9 | add_executable(trimesh_topology 10 | ${SOURCES}) 11 | 12 | target_link_libraries( 13 | trimesh_topology 14 | PUBLIC 15 | vcglib 16 | ) 17 | -------------------------------------------------------------------------------- /apps/sample/trimesh_topology/trimesh_topology.pro: -------------------------------------------------------------------------------- 1 | include(../common.pri) 2 | TARGET = trimesh_topology 3 | SOURCES += trimesh_topology.cpp 4 | -------------------------------------------------------------------------------- /apps/sample/trimesh_volumesampling/trimesh_volumesampling.pro: -------------------------------------------------------------------------------- 1 | include(../common.pri) 2 | TARGET = trimesh_volumesampling 3 | SOURCES += trimesh_volumesampling.cpp ../../../wrap/ply/plylib.cpp 4 | -------------------------------------------------------------------------------- /apps/sample/trimesh_voronoi/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.13) 2 | project(trimesh_voronoi) 3 | 4 | if (VCG_HEADER_ONLY) 5 | set(SOURCES 6 | trimesh_voronoi.cpp 7 | ${VCG_INCLUDE_DIRS}/wrap/ply/plylib.cpp) 8 | endif() 9 | 10 | add_executable(trimesh_voronoi 11 | ${SOURCES}) 12 | 13 | target_link_libraries( 14 | trimesh_voronoi 15 | PUBLIC 16 | vcglib 17 | ) 18 | -------------------------------------------------------------------------------- /apps/sample/trimesh_voronoi/trimesh_voronoi.pro: -------------------------------------------------------------------------------- 1 | include(../common.pri) 2 | TARGET = trimesh_voronoi 3 | SOURCES += trimesh_voronoi.cpp ../../../wrap/ply/plylib.cpp 4 | 5 | CONFIG(release, debug | release){ 6 | DEFINES += NDEBUG 7 | } 8 | 9 | -------------------------------------------------------------------------------- /apps/sample/trimesh_voronoi_remesh/trimesh_voronoi_remesh.pro: -------------------------------------------------------------------------------- 1 | include(../common.pri) 2 | TARGET = trimesh_voronoi_remesh 3 | SOURCES += trimesh_voronoi_remesh.cpp ../../../wrap/ply/plylib.cpp 4 | -------------------------------------------------------------------------------- /apps/sample/trimesh_voronoiatlas/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.13) 2 | project(trimesh_voronoiatlas) 3 | 4 | if (VCG_HEADER_ONLY) 5 | set(SOURCES 6 | trimesh_voronoiatlas.cpp 7 | ${VCG_INCLUDE_DIRS}/wrap/ply/plylib.cpp) 8 | endif() 9 | 10 | add_executable(trimesh_voronoiatlas 11 | ${SOURCES}) 12 | 13 | target_link_libraries( 14 | trimesh_voronoiatlas 15 | PUBLIC 16 | vcglib 17 | ) 18 | -------------------------------------------------------------------------------- /apps/sample/trimesh_voronoiatlas/trimesh_voronoiatlas.pro: -------------------------------------------------------------------------------- 1 | include(../common.pri) 2 | TARGET = trimesh_voronoiatlas 3 | SOURCES += trimesh_voronoiatlas.cpp ../../../wrap/ply/plylib.cpp 4 | -------------------------------------------------------------------------------- /apps/sample/trimesh_voronoiclustering/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.13) 2 | project(trimesh_voronoiclustering) 3 | 4 | if (VCG_HEADER_ONLY) 5 | set(SOURCES 6 | trimesh_voronoiclustering.cpp 7 | ${VCG_INCLUDE_DIRS}/wrap/ply/plylib.cpp) 8 | endif() 9 | 10 | add_executable(trimesh_voronoiclustering 11 | ${SOURCES}) 12 | 13 | target_link_libraries( 14 | trimesh_voronoiclustering 15 | PUBLIC 16 | vcglib 17 | ) 18 | -------------------------------------------------------------------------------- /apps/sample/trimesh_voronoiclustering/trimesh_voronoiclustering.pro: -------------------------------------------------------------------------------- 1 | include(../common.pri) 2 | TARGET = trimesh_voronoiclustering 3 | SOURCES += trimesh_voronoiclustering.cpp ../../../wrap/ply/plylib.cpp 4 | -------------------------------------------------------------------------------- /apps/sample/trimesh_voronoisampling/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.13) 2 | project(trimesh_voronoisampling) 3 | 4 | if (VCG_HEADER_ONLY) 5 | set(SOURCES 6 | trimesh_voronoisampling.cpp 7 | ${VCG_INCLUDE_DIRS}/wrap/ply/plylib.cpp) 8 | endif() 9 | 10 | add_executable(trimesh_voronoisampling 11 | ${SOURCES}) 12 | 13 | target_link_libraries( 14 | trimesh_voronoisampling 15 | PUBLIC 16 | vcglib 17 | ) 18 | -------------------------------------------------------------------------------- /apps/sample/trimesh_voronoisampling/trimesh_voronoisampling.pro: -------------------------------------------------------------------------------- 1 | include(../common.pri) 2 | TARGET = trimesh_voronoisampling 3 | SOURCES += trimesh_voronoisampling.cpp ../../../wrap/ply/plylib.cpp 4 | -------------------------------------------------------------------------------- /apps/test/camerashot/camerashot.pro: -------------------------------------------------------------------------------- 1 | TARGET = camerashot_test 2 | INCLUDEPATH += . ../../.. 3 | CONFIG += console stl 4 | TEMPLATE = app 5 | SOURCES += camerashot_test.cpp 6 | 7 | win32: CONFIG += NOMINMAX 8 | 9 | # Mac specific Config required to avoid to make application bundles 10 | CONFIG -= app_bundle 11 | -------------------------------------------------------------------------------- /apps/test/tetramesh/test/test.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | using namespace vcg; 11 | using namespace tetra; 12 | using namespace tri; 13 | #include 14 | 15 | int main( int argc, char **argv ) 16 | { 17 | MyMesh tm=MyMesh(); 18 | UpdateTopology,vector > ut= UpdateTopology,vector >(); 19 | Allocator All= Allocator(); 20 | vector local_var=vector(); 21 | char* filename="sphere.ts"; 22 | tm.LoadTs(filename,1); 23 | ut.TTTopology(tm.vert,tm.tetra); 24 | ut.TestTTTopology(tm.vert,tm.tetra); 25 | ut.VTTopology(tm.vert,tm.tetra); 26 | All.AddVertices(tm,10,local_var); 27 | All.AddVertices(tm,10); 28 | ut.TestTTTopology(tm.vert,tm.tetra); 29 | MyTriMesh mesh; 30 | TriConverter tric=TriConverter(); 31 | tric.Convert(tm,mesh); 32 | } -------------------------------------------------------------------------------- /apps/test/tetramesh/test/test.ncb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cnr-isti-vclab/vcglib/88c881d8393929c8e09b9df765ce8582bf386499/apps/test/tetramesh/test/test.ncb -------------------------------------------------------------------------------- /apps/test/tetramesh/test/test.sln: -------------------------------------------------------------------------------- 1 | Microsoft Visual Studio Solution File, Format Version 7.00 2 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test", "test.vcproj", "{27987C13-6147-48FE-AA21-B2175451AA13}" 3 | EndProject 4 | Global 5 | GlobalSection(SolutionConfiguration) = preSolution 6 | ConfigName.0 = Debug 7 | ConfigName.1 = Release 8 | EndGlobalSection 9 | GlobalSection(ProjectDependencies) = postSolution 10 | EndGlobalSection 11 | GlobalSection(ProjectConfiguration) = postSolution 12 | {27987C13-6147-48FE-AA21-B2175451AA13}.Debug.ActiveCfg = Debug|Win32 13 | {27987C13-6147-48FE-AA21-B2175451AA13}.Debug.Build.0 = Debug|Win32 14 | {27987C13-6147-48FE-AA21-B2175451AA13}.Release.ActiveCfg = Release|Win32 15 | {27987C13-6147-48FE-AA21-B2175451AA13}.Release.Build.0 = Release|Win32 16 | EndGlobalSection 17 | GlobalSection(ExtensibilityGlobals) = postSolution 18 | EndGlobalSection 19 | GlobalSection(ExtensibilityAddIns) = postSolution 20 | EndGlobalSection 21 | EndGlobal 22 | -------------------------------------------------------------------------------- /apps/test/tetramesh/test/test.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cnr-isti-vclab/vcglib/88c881d8393929c8e09b9df765ce8582bf386499/apps/test/tetramesh/test/test.suo -------------------------------------------------------------------------------- /apps/test/trackball/trackball.sln: -------------------------------------------------------------------------------- 1 | Microsoft Visual Studio Solution File, Format Version 7.00 2 | Project("{EAF909A5-FA59-4C3D-9431-0FCC20D5BCF9}") = "trackball", "trackball.icproj", "{BFD1CCD1-E974-402C-9A01-4289A1A420D5}" 3 | EndProject 4 | Global 5 | GlobalSection(SolutionConfiguration) = preSolution 6 | ConfigName.0 = Debug 7 | ConfigName.1 = Release 8 | EndGlobalSection 9 | GlobalSection(ProjectDependencies) = postSolution 10 | EndGlobalSection 11 | GlobalSection(ProjectConfiguration) = postSolution 12 | {BFD1CCD1-E974-402C-9A01-4289A1A420D5}.Debug.ActiveCfg = Debug|Win32 13 | {BFD1CCD1-E974-402C-9A01-4289A1A420D5}.Debug.Build.0 = Debug|Win32 14 | {BFD1CCD1-E974-402C-9A01-4289A1A420D5}.Release.ActiveCfg = Release|Win32 15 | {BFD1CCD1-E974-402C-9A01-4289A1A420D5}.Release.Build.0 = Release|Win32 16 | EndGlobalSection 17 | GlobalSection(ExtensibilityGlobals) = postSolution 18 | EndGlobalSection 19 | GlobalSection(ExtensibilityAddIns) = postSolution 20 | EndGlobalSection 21 | EndGlobal 22 | -------------------------------------------------------------------------------- /apps/tridecimator/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.13) 2 | project (tridecimator) 3 | 4 | if (VCG_HEADER_ONLY) 5 | set(SOURCES 6 | tridecimator.cpp 7 | ${VCG_INCLUDE_DIRS}/wrap/ply/plylib.cpp) 8 | endif() 9 | 10 | add_executable(tridecimator 11 | ${SOURCES}) 12 | 13 | target_link_libraries( 14 | tridecimator 15 | PUBLIC 16 | vcglib 17 | ) 18 | -------------------------------------------------------------------------------- /apps/tridecimator/tridecimator.pro: -------------------------------------------------------------------------------- 1 | 2 | TARGET = tridecimator 3 | DEPENDPATH += ../.. 4 | INCLUDEPATH += . ../.. ../../eigenlib 5 | CONFIG += console stl c++11 debug_and_release 6 | TEMPLATE = app 7 | HEADERS += 8 | SOURCES += tridecimator.cpp ../../wrap/ply/plylib.cpp 9 | 10 | 11 | # Mac specific Config required to avoid to make application bundles 12 | CONFIG -= app_bundle 13 | -------------------------------------------------------------------------------- /apps/unsupported/extractors/extractor/Definitions.h: -------------------------------------------------------------------------------- 1 | #ifndef ___DEFINITIONS 2 | #define ___DEFINITIONS 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | 10 | typedef float ScalarType; 11 | 12 | class Edge; 13 | class Face; 14 | class Vertex : public vcg::VertexAFVMVN< ScalarType, Edge, Face > {}; 15 | class Face : public vcg::FaceAFAVFN< Vertex, Edge, Face> {}; 16 | class Mesh : public vcg::tri::TriMesh< std::vector< Vertex>, std::vector< Face > > {}; 17 | 18 | typedef vcg::tri::Allocator< Mesh > Allocator; 19 | typedef vcg::Box3< int > BoundingBox; 20 | typedef Vertex* VertexPointer; 21 | 22 | #endif //___DEFINITIONS -------------------------------------------------------------------------------- /apps/unsupported/extractors/extractor/Implicit.h: -------------------------------------------------------------------------------- 1 | #ifndef __EXTRS_IMPLICIT 2 | #define __EXTRS_IMPLICIT 3 | 4 | #include 5 | 6 | class Implicit 7 | { 8 | public: 9 | Implicit() {}; 10 | 11 | virtual ~Implicit() {}; 12 | 13 | virtual float V(int x, int y, int z) const = 0; 14 | 15 | virtual vcg::Point3f N(float x, float y, float z) const = 0; 16 | }; 17 | 18 | #endif // __EXTRS_IMPLICIT -------------------------------------------------------------------------------- /apps/unsupported/extractors/extractor/SphereDifference.h: -------------------------------------------------------------------------------- 1 | #ifndef __VCGTEST_SPHEREDIFFERENCE 2 | #define __VCGTEST_SPHEREDIFFERENCE 3 | 4 | class SphereDifference 5 | { 6 | public: 7 | SphereDifference() 8 | {} 9 | 10 | SphereDifference( const SphereDifference &sphere_difference) 11 | { 12 | _union = sphere_difference._union; 13 | _sphere = sphere_difference._sphere; 14 | } 15 | 16 | SphereDifference( const SphereUnion &sphere_union, const ImplicitSphere &sphere) 17 | { 18 | _union = sphere_union; 19 | _sphere = sphere; 20 | } 21 | 22 | float V(int x, int y, int z) 23 | { 24 | return vcg::math::Max(_union.V(x, y, z), -_sphere.V(x, y, z)); 25 | } 26 | 27 | inline bool DirectedDistance(const vcg::Point3i p1, const vcg::Point3i p2, vcg::Point3f &p, vcg::Point3f &n, float &d) 28 | { 29 | vcg::Point3f v1, n1; 30 | vcg::Point3f v2, n2; 31 | float d1, d2; 32 | 33 | bool ok1 = _union.DirectedDistance(p1, p2, v1, n1, d1); 34 | bool ok2 = _sphere.DirectedDistance(p1, p2, v2, n2, d2); 35 | d2 = -d2; 36 | 37 | if (ok1 && ok2) 38 | { 39 | if (d1 > d2) 40 | ok2 = false; 41 | else 42 | ok1 = false; 43 | } 44 | 45 | if (ok1) 46 | { 47 | p = v1; 48 | n = n1; 49 | d = d1; 50 | return true; 51 | } 52 | else if (ok2) 53 | { 54 | p = v2; 55 | n = n2; 56 | d = d2; 57 | return true; 58 | } 59 | 60 | return false; 61 | } 62 | 63 | private: 64 | SphereUnion _union; 65 | ImplicitSphere _sphere; 66 | 67 | }; 68 | 69 | #endif // __VCGTEST_SPHEREDIFFERENCE -------------------------------------------------------------------------------- /apps/unsupported/extractors/extractor/Walker.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cnr-isti-vclab/vcglib/88c881d8393929c8e09b9df765ce8582bf386499/apps/unsupported/extractors/extractor/Walker.h -------------------------------------------------------------------------------- /apps/unsupported/extractors/extractor/extractor.pro: -------------------------------------------------------------------------------- 1 | INCLUDEPATH += . ../../.. 2 | CONFIG += console stl 3 | TEMPLATE = app 4 | 5 | TARGET = 6 | DEPENDPATH += . 7 | INCLUDEPATH += . 8 | 9 | # Input 10 | HEADERS += Definitions.h \ 11 | Implicit.h \ 12 | ImplicitSphere.h \ 13 | SphereDifference.h \ 14 | SphereUnion.h \ 15 | Volume.h \ 16 | Walker.h 17 | SOURCES += main.cpp 18 | -------------------------------------------------------------------------------- /apps/unsupported/extractors/extractor/main.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include "Definitions.h" 4 | #include "Volume.h" 5 | #include "Walker.h" 6 | #include 7 | #include 8 | 9 | int main(int argc, char *argv[]) 10 | { 11 | BoundingBox bbox(vcg::Point3i(-20, -20, -20), vcg::Point3i(20, 20, 20)); 12 | vcg::Point3i resolution(40, 40, 40); 13 | 14 | Volume volume; 15 | Walker walker(bbox, resolution); 16 | 17 | typedef vcg::tri::MarchingCubes MarchingCubes; 18 | typedef vcg::tri::ExtendedMarchingCubes ExtendedMarchingCubes; 19 | 20 | 21 | 22 | // MARCHING CUBES 23 | Mesh mc_mesh; 24 | printf("[MARCHING CUBES] Building mesh..."); 25 | MarchingCubes mc(mc_mesh, walker); 26 | walker.BuildMesh(mc_mesh, volume, mc); 27 | vcg::tri::io::ExporterPLY::Save( mc_mesh, "marching_cubes.ply"); 28 | printf("OK!\n"); 29 | 30 | // EXTENDED MARCHING CUBES 31 | Mesh emc_mesh; 32 | printf("[EXTENDED MARCHING CUBES] Building mesh..."); 33 | ExtendedMarchingCubes emc(emc_mesh, walker, 30); 34 | walker.BuildMesh(emc_mesh, volume, emc); 35 | vcg::tri::io::ExporterPLY::Save( emc_mesh, "extended_marching_cubes.ply"); 36 | printf("OK!\n"); 37 | }; -------------------------------------------------------------------------------- /apps/unsupported/extractors/extractors.ncb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cnr-isti-vclab/vcglib/88c881d8393929c8e09b9df765ce8582bf386499/apps/unsupported/extractors/extractors.ncb -------------------------------------------------------------------------------- /apps/unsupported/extractors/extractors.sln: -------------------------------------------------------------------------------- 1 | Microsoft Visual Studio Solution File, Format Version 8.00 2 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "extractor", "extractor\extractor.vcproj", "{53BF323F-2659-4227-9D32-6FC9624028F3}" 3 | ProjectSection(ProjectDependencies) = postProject 4 | EndProjectSection 5 | EndProject 6 | Global 7 | GlobalSection(SolutionConfiguration) = preSolution 8 | Debug = Debug 9 | Release = Release 10 | EndGlobalSection 11 | GlobalSection(ProjectConfiguration) = postSolution 12 | {53BF323F-2659-4227-9D32-6FC9624028F3}.Debug.ActiveCfg = Debug|Win32 13 | {53BF323F-2659-4227-9D32-6FC9624028F3}.Debug.Build.0 = Debug|Win32 14 | {53BF323F-2659-4227-9D32-6FC9624028F3}.Release.ActiveCfg = Release|Win32 15 | {53BF323F-2659-4227-9D32-6FC9624028F3}.Release.Build.0 = Release|Win32 16 | EndGlobalSection 17 | GlobalSection(ExtensibilityGlobals) = postSolution 18 | EndGlobalSection 19 | GlobalSection(ExtensibilityAddIns) = postSolution 20 | EndGlobalSection 21 | EndGlobal 22 | -------------------------------------------------------------------------------- /apps/unsupported/extractors/extractors.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cnr-isti-vclab/vcglib/88c881d8393929c8e09b9df765ce8582bf386499/apps/unsupported/extractors/extractors.suo -------------------------------------------------------------------------------- /apps/unsupported/pivoting/cmesh.h: -------------------------------------------------------------------------------- 1 | #ifndef CLOTH_MESH_H 2 | #define CLOTH_MESH_H 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | 11 | #include 12 | 13 | using namespace vcg; 14 | 15 | class CVertex; 16 | class CEdge; 17 | class CFace; 18 | 19 | class CEdge { 20 | public: 21 | CVertex *v[2]; 22 | CFace *f; 23 | bool operator<(const CEdge& t) const { 24 | if(v[0] < t.v[0]) return true; 25 | if(v[0] > t.v[0]) return false; 26 | return v[1] < t.v[1]; 27 | } 28 | bool operator==(const CEdge& t) const { 29 | return v[0] == t.v[0] && v[1] == t.v[1]; 30 | } 31 | }; 32 | 33 | class CVertex: public 34 | VertexSimp2 { 38 | public: 39 | float color; 40 | }; 41 | 42 | class CFace: public FaceSimp2 {}; 44 | 45 | class CMesh: public tri::TriMesh< std::vector, std::vector > {}; 46 | 47 | #endif 48 | -------------------------------------------------------------------------------- /apps/unsupported/pivoting/curvature.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cnr-isti-vclab/vcglib/88c881d8393929c8e09b9df765ce8582bf386499/apps/unsupported/pivoting/curvature.h -------------------------------------------------------------------------------- /apps/unsupported/pivoting/glarea.h: -------------------------------------------------------------------------------- 1 | #ifndef CG_RENDERAREA_H 2 | #define CG_RENDERAREA_H 3 | 4 | #include 5 | 6 | #include 7 | 8 | #include 9 | #include 10 | #include 11 | #include "cmesh.h" 12 | 13 | 14 | //#include "mls_surface.h" 15 | //#include "advancing.h" 16 | 17 | using namespace tri; 18 | using namespace trimesh; 19 | class GLArea : public QGLWidget { 20 | Q_OBJECT 21 | 22 | public: 23 | 24 | GLArea(QWidget *parent = 0); 25 | bool smooth; 26 | 27 | public slots: 28 | 29 | bool loadModel(const QString &file); 30 | void addFace(); 31 | void add10Faces(); 32 | void add100Faces(); 33 | void add1000Faces(); 34 | void addAll(); 35 | void setTot(int n) { tot = n; } 36 | void addTot(); 37 | 38 | void open(); 39 | void save(); 40 | void setRadius(double _radius) { 41 | radius = _radius; 42 | } 43 | void viewSmooth(bool on); 44 | 45 | protected: 46 | int tot; 47 | 48 | float radius; 49 | vcg::Box3f box; 50 | CMesh mesh; 51 | // Pivot *pivot; 52 | Pivot *pivot; 53 | vcg::Trackball trackball; 54 | 55 | void init(QString file, float radius); 56 | void draw(); 57 | 58 | 59 | void initializeGL(); 60 | void resizeGL(int w, int h); 61 | void paintGL(); 62 | 63 | void wheelEvent(QWheelEvent *e); 64 | void mouseMoveEvent(QMouseEvent *e); 65 | void mousePressEvent(QMouseEvent *e); 66 | void mouseReleaseEvent(QMouseEvent *e); 67 | void keyReleaseEvent ( QKeyEvent * e ); 68 | 69 | }; 70 | 71 | #endif 72 | -------------------------------------------------------------------------------- /apps/unsupported/ptx2ply/ptx2ply.pro: -------------------------------------------------------------------------------- 1 | 2 | TARGET = ptx2ply 3 | LIBPATH += 4 | DEPENDPATH += . 5 | INCLUDEPATH += . ../.. 6 | CONFIG += console stl 7 | TEMPLATE = app 8 | #HEADERS += defs.h sampling.h mesh_type.h 9 | SOURCES += ptx2ply.cpp ../../wrap/ply/plylib.cpp 10 | # Mac specific Config required to avoid to make application bundles 11 | CONFIG -= app_bundle -------------------------------------------------------------------------------- /apps/unsupported/ptx2ply/ptx2ply.sln: -------------------------------------------------------------------------------- 1 | Microsoft Visual Studio Solution File, Format Version 8.00 2 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ptx2ply", "ptx2ply.vcproj", "{80BC3B30-0C1E-4714-9B4A-B8076C935BA0}" 3 | ProjectSection(ProjectDependencies) = postProject 4 | EndProjectSection 5 | EndProject 6 | Global 7 | GlobalSection(SolutionConfiguration) = preSolution 8 | Debug = Debug 9 | Release = Release 10 | EndGlobalSection 11 | GlobalSection(ProjectConfiguration) = postSolution 12 | {80BC3B30-0C1E-4714-9B4A-B8076C935BA0}.Debug.ActiveCfg = Debug|Win32 13 | {80BC3B30-0C1E-4714-9B4A-B8076C935BA0}.Debug.Build.0 = Debug|Win32 14 | {80BC3B30-0C1E-4714-9B4A-B8076C935BA0}.Release.ActiveCfg = Release|Win32 15 | {80BC3B30-0C1E-4714-9B4A-B8076C935BA0}.Release.Build.0 = Release|Win32 16 | EndGlobalSection 17 | GlobalSection(ExtensibilityGlobals) = postSolution 18 | EndGlobalSection 19 | GlobalSection(ExtensibilityAddIns) = postSolution 20 | EndGlobalSection 21 | EndGlobal 22 | -------------------------------------------------------------------------------- /apps/unsupported/quadrangulator/bunny.ply: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cnr-isti-vclab/vcglib/88c881d8393929c8e09b9df765ce8582bf386499/apps/unsupported/quadrangulator/bunny.ply -------------------------------------------------------------------------------- /apps/unsupported/quadrangulator/configuration.txt: -------------------------------------------------------------------------------- 1 | mesh=bunny.ply 2 | field=bunny.ffield 3 | scalegradient=1 4 | gradient=60 5 | directround=0 6 | out=bunny_quad.obj 7 | -------------------------------------------------------------------------------- /apps/unsupported/shadevis/history.txt: -------------------------------------------------------------------------------- 1 | 2 | VCGLib http://vcg.sf.net o o 3 | Visual and Computer Graphics Library o o 4 | _ O _ 5 | Copyright(C) 2005-2006 \/)\/ 6 | Visual Computing Lab http://vcg.isti.cnr.it /\/| 7 | ISTI - Italian National Research Council | 8 | \ 9 | ShadeVis 1.00 2005/11/11 10 | All rights reserved. 11 | 12 | 13 | 2005/11/11 Release 1.00 14 | Initial Release -------------------------------------------------------------------------------- /apps/unsupported/shadevis/shadevis.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cnr-isti-vclab/vcglib/88c881d8393929c8e09b9df765ce8582bf386499/apps/unsupported/shadevis/shadevis.txt -------------------------------------------------------------------------------- /apps/unsupported/texdeci/texdeci.pro: -------------------------------------------------------------------------------- 1 | #DEFINES += VCG_USE_EIGEN 2 | TARGET = texdeci 3 | #LIBPATH += 4 | DEPENDPATH += . ../.. 5 | INCLUDEPATH += . ../.. 6 | CONFIG += console stl debug_and_release 7 | TEMPLATE = app 8 | HEADERS += 9 | SOURCES += texdeci.cpp ../../wrap/ply/plylib.cpp 10 | 11 | QT-=gui 12 | 13 | 14 | # Mac specific Config required to avoid to make application bundles 15 | CONFIG -= app_bundle 16 | 17 | -------------------------------------------------------------------------------- /apps/unsupported/trimesh_SDL/trimesh_sdl.pro: -------------------------------------------------------------------------------- 1 | ###################################################################### 2 | # Automatically generated by qmake (2.00a) ven 24. giu 14:14:20 2005 3 | ###################################################################### 4 | 5 | TARGET = trimesh_sdl 6 | LIBPATH += ../../../../code/lib/SDL/lib 7 | LIBPATH += ../../../../code/lib/glew/lib 8 | win32:LIBS += SDL.lib SDLmain.lib opengl32.lib glu32.lib glew32s.lib glew32.lib 9 | DEPENDPATH += . 10 | INCLUDEPATH += . ../../.. 11 | INCLUDEPATH += . ../../../../code/lib/glew/include 12 | INCLUDEPATH += . ../../../../code/lib/SDL/include/SDL 13 | CONFIG += console stl 14 | TEMPLATE = app 15 | SOURCES += trimesh_sdl.cpp ../../../wrap/ply/plylib.cpp ../../../wrap/gui/trackball.cpp ../../../wrap/gui/trackmode.cpp 16 | -------------------------------------------------------------------------------- /apps/unsupported/trimeshinfo/InstancesNode.h: -------------------------------------------------------------------------------- 1 | 2 | #include 3 | #include 4 | #include 5 | #include "Node.h" 6 | 7 | 8 | class InstanceNode: public Node 9 | { 10 | public: 11 | InstanceNode(void){node_type = INSTANCE_NODE; id = "empty"; type= "empty";}; 12 | char* id; 13 | char* type; 14 | int node_type; 15 | 16 | OwnSlotsNode own_slots; 17 | void addOwnSlots(OwnSlotsNode* own_slots); 18 | virtual void printNode(); 19 | virtual int qualifyNode(); 20 | }; 21 | 22 | void InstanceNode::addOwnSlots(OwnSlotsNode* sn) 23 | { 24 | own_slots.addOwnSlot(&sn->own_slot); 25 | } 26 | 27 | 28 | 29 | void InstanceNode::printNode() 30 | { 31 | cout<<"InstanceNode: Node node_type is "<addOwnSlots(&in->own_slots); 57 | 58 | } 59 | 60 | void InstancesNode::printNode() 61 | { 62 | cout<<"InstancesNode: Node type is "<::iterator it; 64 | for(it = instances.Sons.begin(); it!=instances.Sons.end(); ++it) 65 | (*it)->printNode(); 66 | } 67 | 68 | int InstancesNode::qualifyNode() 69 | {return node_type;} 70 | -------------------------------------------------------------------------------- /apps/unsupported/trimeshinfo/Node.h: -------------------------------------------------------------------------------- 1 | 2 | #ifndef NODE_H 3 | #define NODE_H 4 | #include 5 | 6 | 7 | using namespace std; 8 | 9 | class Node 10 | { 11 | public: 12 | //int node_type; 13 | virtual ~Node(void){}; 14 | virtual void printNode()=0; 15 | virtual int qualifyNode()=0; 16 | }; 17 | 18 | 19 | class NodeGroup :public Node 20 | { 21 | public: 22 | virtual ~NodeGroup(); 23 | typedef list::iterator iterator; 24 | list Sons; 25 | virtual void addNode(Node* nd); 26 | virtual void printNode(); 27 | virtual int qualifyNode(); 28 | 29 | }; 30 | 31 | NodeGroup::~NodeGroup() //distruttore: disalloca tutti i figli 32 | { 33 | //for(iterator i=Sons.begin();i!=Sons.end();++i) 34 | // delete (*i); 35 | } 36 | 37 | void NodeGroup::addNode(Node* nd) 38 | { 39 | Sons.push_back(nd); 40 | } 41 | void NodeGroup::printNode() 42 | {} 43 | 44 | int NodeGroup::qualifyNode() 45 | {return 0;} 46 | 47 | const int MAIN_NODE= 0; 48 | const int SLOTS_NODE= 1; 49 | const int SLOT_NODE= 2; 50 | const int OWNSLOT_NODE= 3; 51 | const int ENTRY_NODE= 4; 52 | const int VALUE_NODE= 5; 53 | 54 | const int CLASSES_NODE= 6; 55 | const int CLASS_NODE= 7; 56 | const int OWNSLOTS_NODE= 8; 57 | 58 | const int INSTANCES_NODE= 9; 59 | const int INSTANCE_NODE= 10; 60 | 61 | 62 | enum values {VALUE_INTEGER, VALUE_FLOAT, VALUE_BOOL, VALUE_STRING}; 63 | 64 | //#define MAIN_NODE 0; 65 | //#define SLOTS_NODE 1; 66 | //#define SLOT_NODE 2; 67 | //#define OWNSLOT_NODE 3; 68 | //#define ENTRY_NODE 4; 69 | //#define VALUE_NODE 5; 70 | // 71 | //#define CLASSES_NODE 6; 72 | //#define CLASS_NODE 7; 73 | //#define OWNSLOTS_NODE 8; 74 | // 75 | //#define INSTANCES_NODE 9; 76 | //#define INSTANCE_NODE 10; 77 | 78 | #endif 79 | -------------------------------------------------------------------------------- /apps/unsupported/trimeshinfo/trimeshinfo.pro: -------------------------------------------------------------------------------- 1 | 2 | TARGET = trimeshinfo 3 | LIBPATH += 4 | DEPENDPATH += . 5 | INCLUDEPATH += . ../.. 6 | CONFIG += console stl 7 | TEMPLATE = app 8 | HEADERS += 9 | SOURCES += trimeshinfo.cpp ../../wrap/ply/plylib.cpp -------------------------------------------------------------------------------- /docs/ContributorLicenseAgreement.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cnr-isti-vclab/vcglib/88c881d8393929c8e09b9df765ce8582bf386499/docs/ContributorLicenseAgreement.pdf -------------------------------------------------------------------------------- /docs/Doxygen/groups.dox: -------------------------------------------------------------------------------- 1 | 2 | 3 | /** \defgroup space Space 4 | This module contains all the basic types for representing spatial entities like points (vcg::Point3) box3, line planes etc. 5 | This module contains the documentation for the types and the functions used for... 6 | */ 7 | 8 | /** \defgroup math Math 9 | This module contains the documentation for the types and the functions used for representing and managing mathematical entities. 10 | */ 11 | 12 | /** \defgroup VertexComponentGroup Vertex Components 13 | \brief Components that you can use to compose your Vertex type 14 | */ 15 | 16 | /** \defgroup EdgeComponentGroup Edge Components 17 | \brief Components that you can use to compose your Edge type 18 | */ 19 | 20 | /** \defgroup FaceComponentGroup Face Components 21 | \brief Components that you can use to compose your Face type 22 | */ 23 | 24 | /** \defgroup trimesh Triangular Meshes 25 | This module contains the documentation for the types and the functions used for representing and managing generic \b triangular \b meshes. 26 | */ 27 | 28 | /** \defgroup code_sample Code Examples 29 | \brief This module contains a number of small examples to explain the library features 30 | 31 | All the examples here listed are located in the folder `vcglib/apps/sample`. 32 | To compile each sample, please use the corresponding `qmake` `*.pro` project files. 33 | 34 | 35 | */ 36 | 37 | -------------------------------------------------------------------------------- /docs/Doxygen/img/FF_Adj.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cnr-isti-vclab/vcglib/88c881d8393929c8e09b9df765ce8582bf386499/docs/Doxygen/img/FF_Adj.png -------------------------------------------------------------------------------- /docs/Doxygen/img/FF_nonmanifold.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cnr-isti-vclab/vcglib/88c881d8393929c8e09b9df765ce8582bf386499/docs/Doxygen/img/FF_nonmanifold.png -------------------------------------------------------------------------------- /docs/Doxygen/img/VertexStar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cnr-isti-vclab/vcglib/88c881d8393929c8e09b9df765ce8582bf386499/docs/Doxygen/img/VertexStar.png -------------------------------------------------------------------------------- /docs/Doxygen/img/ff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cnr-isti-vclab/vcglib/88c881d8393929c8e09b9df765ce8582bf386499/docs/Doxygen/img/ff.png -------------------------------------------------------------------------------- /docs/Doxygen/img/figure.xar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cnr-isti-vclab/vcglib/88c881d8393929c8e09b9df765ce8582bf386499/docs/Doxygen/img/figure.xar -------------------------------------------------------------------------------- /docs/Doxygen/img/pos_example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cnr-isti-vclab/vcglib/88c881d8393929c8e09b9df765ce8582bf386499/docs/Doxygen/img/pos_example.png -------------------------------------------------------------------------------- /docs/Doxygen/img/shot-Camera_model.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cnr-isti-vclab/vcglib/88c881d8393929c8e09b9df765ce8582bf386499/docs/Doxygen/img/shot-Camera_model.png -------------------------------------------------------------------------------- /docs/Doxygen/img/shot-Distort1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cnr-isti-vclab/vcglib/88c881d8393929c8e09b9df765ce8582bf386499/docs/Doxygen/img/shot-Distort1.jpg -------------------------------------------------------------------------------- /docs/Doxygen/img/shot-Distort2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cnr-isti-vclab/vcglib/88c881d8393929c8e09b9df765ce8582bf386499/docs/Doxygen/img/shot-Distort2.jpg -------------------------------------------------------------------------------- /docs/Doxygen/img/shot-Distort3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cnr-isti-vclab/vcglib/88c881d8393929c8e09b9df765ce8582bf386499/docs/Doxygen/img/shot-Distort3.jpg -------------------------------------------------------------------------------- /docs/Doxygen/img/shot-Focal.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cnr-isti-vclab/vcglib/88c881d8393929c8e09b9df765ce8582bf386499/docs/Doxygen/img/shot-Focal.jpg -------------------------------------------------------------------------------- /docs/Doxygen/img/shot-Projection.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cnr-isti-vclab/vcglib/88c881d8393929c8e09b9df765ce8582bf386499/docs/Doxygen/img/shot-Projection.png -------------------------------------------------------------------------------- /docs/Doxygen/img/triord.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cnr-isti-vclab/vcglib/88c881d8393929c8e09b9df765ce8582bf386499/docs/Doxygen/img/triord.png -------------------------------------------------------------------------------- /docs/Doxygen/img/vcglogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cnr-isti-vclab/vcglib/88c881d8393929c8e09b9df765ce8582bf386499/docs/Doxygen/img/vcglogo.png -------------------------------------------------------------------------------- /docs/Doxygen/namespaces.dox: -------------------------------------------------------------------------------- 1 | /** Main namespace. It contain all the other namespaces and */ namespace vcg {} /** Everything about triangular meshes lie in this namespace */ namespace vcg::tri {} /** Everything about tetrahedral meshes lie in this namespace */ namespace vcg::tetra {} /** Global algorithms and classes working on generic faces are defined in this namespace. Typical example are the topological surgery functions (like vcg::face::Detach and vcg::face::IsBorder) and the class vcg::face::Pos for defining \e positions over a mesh. Note that for sake of brevity the main face class is defined outside this namespace. */ namespace vcg::face {} /** Wrapper for symbols and structs defind in the old ply library */ namespace vcg::ply {} /** For all the functions and classes used to read and write meshes */ namespace vcg::tri::io {} /** For all the functions and classes used to read and write Tetrahedral Meshes */ namespace vcg::tetra::io {} /** For all the generic math functions and classes. */ namespace vcg::math {} -------------------------------------------------------------------------------- /docs/Doxygen/vcg_footer.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /docs/introduction to vcg.ppt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cnr-isti-vclab/vcglib/88c881d8393929c8e09b9df765ce8582bf386499/docs/introduction to vcg.ppt -------------------------------------------------------------------------------- /eigenlib/Eigen/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | include(RegexUtils) 2 | test_escape_string_as_regex() 3 | 4 | file(GLOB Eigen_directory_files "*") 5 | 6 | escape_string_as_regex(ESCAPED_CMAKE_CURRENT_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}") 7 | 8 | foreach(f ${Eigen_directory_files}) 9 | if(NOT f MATCHES "\\.txt" AND NOT f MATCHES "${ESCAPED_CMAKE_CURRENT_SOURCE_DIR}/[.].+" AND NOT f MATCHES "${ESCAPED_CMAKE_CURRENT_SOURCE_DIR}/src") 10 | list(APPEND Eigen_directory_files_to_install ${f}) 11 | endif() 12 | endforeach(f ${Eigen_directory_files}) 13 | 14 | install(FILES 15 | ${Eigen_directory_files_to_install} 16 | DESTINATION ${INCLUDE_INSTALL_DIR}/Eigen COMPONENT Devel 17 | ) 18 | 19 | install(DIRECTORY src DESTINATION ${INCLUDE_INSTALL_DIR}/Eigen COMPONENT Devel FILES_MATCHING PATTERN "*.h") 20 | -------------------------------------------------------------------------------- /eigenlib/Eigen/Cholesky: -------------------------------------------------------------------------------- 1 | // This file is part of Eigen, a lightweight C++ template library 2 | // for linear algebra. 3 | // 4 | // This Source Code Form is subject to the terms of the Mozilla 5 | // Public License v. 2.0. If a copy of the MPL was not distributed 6 | // with this file, You can obtain one at the mozilla.org home page 7 | 8 | #ifndef EIGEN_CHOLESKY_MODULE_H 9 | #define EIGEN_CHOLESKY_MODULE_H 10 | 11 | #include "Core" 12 | #include "Jacobi" 13 | 14 | #include "src/Core/util/DisableStupidWarnings.h" 15 | 16 | /** \defgroup Cholesky_Module Cholesky module 17 | * 18 | * 19 | * 20 | * This module provides two variants of the Cholesky decomposition for selfadjoint (hermitian) matrices. 21 | * Those decompositions are also accessible via the following methods: 22 | * - MatrixBase::llt() 23 | * - MatrixBase::ldlt() 24 | * - SelfAdjointView::llt() 25 | * - SelfAdjointView::ldlt() 26 | * 27 | * \code 28 | * #include 29 | * \endcode 30 | */ 31 | 32 | #include "src/Cholesky/LLT.h" 33 | #include "src/Cholesky/LDLT.h" 34 | #ifdef EIGEN_USE_LAPACKE 35 | #ifdef EIGEN_USE_MKL 36 | #include "mkl_lapacke.h" 37 | #else 38 | #include "src/misc/lapacke.h" 39 | #endif 40 | #include "src/Cholesky/LLT_LAPACKE.h" 41 | #endif 42 | 43 | #include "src/Core/util/ReenableStupidWarnings.h" 44 | 45 | #endif // EIGEN_CHOLESKY_MODULE_H 46 | /* vim: set filetype=cpp et sw=2 ts=2 ai: */ 47 | -------------------------------------------------------------------------------- /eigenlib/Eigen/Dense: -------------------------------------------------------------------------------- 1 | #include "Core" 2 | #include "LU" 3 | #include "Cholesky" 4 | #include "QR" 5 | #include "SVD" 6 | #include "Geometry" 7 | #include "Eigenvalues" 8 | -------------------------------------------------------------------------------- /eigenlib/Eigen/Eigen: -------------------------------------------------------------------------------- 1 | #include "Dense" 2 | #include "Sparse" 3 | -------------------------------------------------------------------------------- /eigenlib/Eigen/Householder: -------------------------------------------------------------------------------- 1 | // This file is part of Eigen, a lightweight C++ template library 2 | // for linear algebra. 3 | // 4 | // This Source Code Form is subject to the terms of the Mozilla 5 | // Public License v. 2.0. If a copy of the MPL was not distributed 6 | // with this file, You can obtain one at the mozilla.org home page 7 | 8 | #ifndef EIGEN_HOUSEHOLDER_MODULE_H 9 | #define EIGEN_HOUSEHOLDER_MODULE_H 10 | 11 | #include "Core" 12 | 13 | #include "src/Core/util/DisableStupidWarnings.h" 14 | 15 | /** \defgroup Householder_Module Householder module 16 | * This module provides Householder transformations. 17 | * 18 | * \code 19 | * #include 20 | * \endcode 21 | */ 22 | 23 | #include "src/Householder/Householder.h" 24 | #include "src/Householder/HouseholderSequence.h" 25 | #include "src/Householder/BlockHouseholder.h" 26 | 27 | #include "src/Core/util/ReenableStupidWarnings.h" 28 | 29 | #endif // EIGEN_HOUSEHOLDER_MODULE_H 30 | /* vim: set filetype=cpp et sw=2 ts=2 ai: */ 31 | -------------------------------------------------------------------------------- /eigenlib/Eigen/Jacobi: -------------------------------------------------------------------------------- 1 | // This file is part of Eigen, a lightweight C++ template library 2 | // for linear algebra. 3 | // 4 | // This Source Code Form is subject to the terms of the Mozilla 5 | // Public License v. 2.0. If a copy of the MPL was not distributed 6 | // with this file, You can obtain one at the mozilla.org home page 7 | 8 | #ifndef EIGEN_JACOBI_MODULE_H 9 | #define EIGEN_JACOBI_MODULE_H 10 | 11 | #include "Core" 12 | 13 | #include "src/Core/util/DisableStupidWarnings.h" 14 | 15 | /** \defgroup Jacobi_Module Jacobi module 16 | * This module provides Jacobi and Givens rotations. 17 | * 18 | * \code 19 | * #include 20 | * \endcode 21 | * 22 | * In addition to listed classes, it defines the two following MatrixBase methods to apply a Jacobi or Givens rotation: 23 | * - MatrixBase::applyOnTheLeft() 24 | * - MatrixBase::applyOnTheRight(). 25 | */ 26 | 27 | #include "src/Jacobi/Jacobi.h" 28 | 29 | #include "src/Core/util/ReenableStupidWarnings.h" 30 | 31 | #endif // EIGEN_JACOBI_MODULE_H 32 | /* vim: set filetype=cpp et sw=2 ts=2 ai: */ 33 | 34 | -------------------------------------------------------------------------------- /eigenlib/Eigen/LU: -------------------------------------------------------------------------------- 1 | // This file is part of Eigen, a lightweight C++ template library 2 | // for linear algebra. 3 | // 4 | // This Source Code Form is subject to the terms of the Mozilla 5 | // Public License v. 2.0. If a copy of the MPL was not distributed 6 | // with this file, You can obtain one at the mozilla.org home page 7 | 8 | #ifndef EIGEN_LU_MODULE_H 9 | #define EIGEN_LU_MODULE_H 10 | 11 | #include "Core" 12 | 13 | #include "src/Core/util/DisableStupidWarnings.h" 14 | 15 | /** \defgroup LU_Module LU module 16 | * This module includes %LU decomposition and related notions such as matrix inversion and determinant. 17 | * This module defines the following MatrixBase methods: 18 | * - MatrixBase::inverse() 19 | * - MatrixBase::determinant() 20 | * 21 | * \code 22 | * #include 23 | * \endcode 24 | */ 25 | 26 | #include "src/misc/Kernel.h" 27 | #include "src/misc/Image.h" 28 | #include "src/LU/FullPivLU.h" 29 | #include "src/LU/PartialPivLU.h" 30 | #ifdef EIGEN_USE_LAPACKE 31 | #ifdef EIGEN_USE_MKL 32 | #include "mkl_lapacke.h" 33 | #else 34 | #include "src/misc/lapacke.h" 35 | #endif 36 | #include "src/LU/PartialPivLU_LAPACKE.h" 37 | #endif 38 | #include "src/LU/Determinant.h" 39 | #include "src/LU/InverseImpl.h" 40 | 41 | // Use the SSE optimized version whenever possible. At the moment the 42 | // SSE version doesn't compile when AVX is enabled 43 | #if defined EIGEN_VECTORIZE_SSE && !defined EIGEN_VECTORIZE_AVX 44 | #include "src/LU/arch/Inverse_SSE.h" 45 | #endif 46 | 47 | #include "src/Core/util/ReenableStupidWarnings.h" 48 | 49 | #endif // EIGEN_LU_MODULE_H 50 | /* vim: set filetype=cpp et sw=2 ts=2 ai: */ 51 | -------------------------------------------------------------------------------- /eigenlib/Eigen/MetisSupport: -------------------------------------------------------------------------------- 1 | // This file is part of Eigen, a lightweight C++ template library 2 | // for linear algebra. 3 | // 4 | // This Source Code Form is subject to the terms of the Mozilla 5 | // Public License v. 2.0. If a copy of the MPL was not distributed 6 | // with this file, You can obtain one at the mozilla.org home page 7 | 8 | #ifndef EIGEN_METISSUPPORT_MODULE_H 9 | #define EIGEN_METISSUPPORT_MODULE_H 10 | 11 | #include "SparseCore" 12 | 13 | #include "src/Core/util/DisableStupidWarnings.h" 14 | 15 | extern "C" { 16 | #include 17 | } 18 | 19 | 20 | /** \ingroup Support_modules 21 | * \defgroup MetisSupport_Module MetisSupport module 22 | * 23 | * \code 24 | * #include 25 | * \endcode 26 | * This module defines an interface to the METIS reordering package (xxxp://glaros.dtc.umn.edu/gkhome/views/metis). 27 | * It can be used just as any other built-in method as explained in \link OrderingMethods_Module here. \endlink 28 | */ 29 | 30 | 31 | #include "src/MetisSupport/MetisSupport.h" 32 | 33 | #include "src/Core/util/ReenableStupidWarnings.h" 34 | 35 | #endif // EIGEN_METISSUPPORT_MODULE_H 36 | -------------------------------------------------------------------------------- /eigenlib/Eigen/PaStiXSupport: -------------------------------------------------------------------------------- 1 | // This file is part of Eigen, a lightweight C++ template library 2 | // for linear algebra. 3 | // 4 | // This Source Code Form is subject to the terms of the Mozilla 5 | // Public License v. 2.0. If a copy of the MPL was not distributed 6 | // with this file, You can obtain one at the mozilla.org home page 7 | 8 | #ifndef EIGEN_PASTIXSUPPORT_MODULE_H 9 | #define EIGEN_PASTIXSUPPORT_MODULE_H 10 | 11 | #include "SparseCore" 12 | 13 | #include "src/Core/util/DisableStupidWarnings.h" 14 | 15 | extern "C" { 16 | #include 17 | #include 18 | } 19 | 20 | #ifdef complex 21 | #undef complex 22 | #endif 23 | 24 | /** \ingroup Support_modules 25 | * \defgroup PaStiXSupport_Module PaStiXSupport module 26 | * 27 | * This module provides an interface to the PaSTiX library. 28 | * PaSTiX is a general \b supernodal, \b parallel and \b opensource sparse solver. 29 | * It provides the two following main factorization classes: 30 | * - class PastixLLT : a supernodal, parallel LLt Cholesky factorization. 31 | * - class PastixLDLT: a supernodal, parallel LDLt Cholesky factorization. 32 | * - class PastixLU : a supernodal, parallel LU factorization (optimized for a symmetric pattern). 33 | * 34 | * \code 35 | * #include 36 | * \endcode 37 | * 38 | * In order to use this module, the PaSTiX headers must be accessible from the include paths, and your binary must be linked to the PaSTiX library and its dependencies. 39 | * The dependencies depend on how PaSTiX has been compiled. 40 | * For a cmake based project, you can use our FindPaSTiX.cmake module to help you in this task. 41 | * 42 | */ 43 | 44 | #include "src/PaStiXSupport/PaStiXSupport.h" 45 | 46 | #include "src/Core/util/ReenableStupidWarnings.h" 47 | 48 | #endif // EIGEN_PASTIXSUPPORT_MODULE_H 49 | -------------------------------------------------------------------------------- /eigenlib/Eigen/PardisoSupport: -------------------------------------------------------------------------------- 1 | // This file is part of Eigen, a lightweight C++ template library 2 | // for linear algebra. 3 | // 4 | // This Source Code Form is subject to the terms of the Mozilla 5 | // Public License v. 2.0. If a copy of the MPL was not distributed 6 | // with this file, You can obtain one at the mozilla.org home page 7 | 8 | #ifndef EIGEN_PARDISOSUPPORT_MODULE_H 9 | #define EIGEN_PARDISOSUPPORT_MODULE_H 10 | 11 | #include "SparseCore" 12 | 13 | #include "src/Core/util/DisableStupidWarnings.h" 14 | 15 | #include 16 | 17 | /** \ingroup Support_modules 18 | * \defgroup PardisoSupport_Module PardisoSupport module 19 | * 20 | * This module brings support for the Intel(R) MKL PARDISO direct sparse solvers. 21 | * 22 | * \code 23 | * #include 24 | * \endcode 25 | * 26 | * In order to use this module, the MKL headers must be accessible from the include paths, and your binary must be linked to the MKL library and its dependencies. 27 | * See this \ref TopicUsingIntelMKL "page" for more information on MKL-Eigen integration. 28 | * 29 | */ 30 | 31 | #include "src/PardisoSupport/PardisoSupport.h" 32 | 33 | #include "src/Core/util/ReenableStupidWarnings.h" 34 | 35 | #endif // EIGEN_PARDISOSUPPORT_MODULE_H 36 | -------------------------------------------------------------------------------- /eigenlib/Eigen/QR: -------------------------------------------------------------------------------- 1 | // This file is part of Eigen, a lightweight C++ template library 2 | // for linear algebra. 3 | // 4 | // This Source Code Form is subject to the terms of the Mozilla 5 | // Public License v. 2.0. If a copy of the MPL was not distributed 6 | // with this file, You can obtain one at the mozilla.org home page 7 | 8 | #ifndef EIGEN_QR_MODULE_H 9 | #define EIGEN_QR_MODULE_H 10 | 11 | #include "Core" 12 | 13 | #include "Cholesky" 14 | #include "Jacobi" 15 | #include "Householder" 16 | 17 | #include "src/Core/util/DisableStupidWarnings.h" 18 | 19 | /** \defgroup QR_Module QR module 20 | * 21 | * 22 | * 23 | * This module provides various QR decompositions 24 | * This module also provides some MatrixBase methods, including: 25 | * - MatrixBase::householderQr() 26 | * - MatrixBase::colPivHouseholderQr() 27 | * - MatrixBase::fullPivHouseholderQr() 28 | * 29 | * \code 30 | * #include 31 | * \endcode 32 | */ 33 | 34 | #include "src/QR/HouseholderQR.h" 35 | #include "src/QR/FullPivHouseholderQR.h" 36 | #include "src/QR/ColPivHouseholderQR.h" 37 | #include "src/QR/CompleteOrthogonalDecomposition.h" 38 | #ifdef EIGEN_USE_LAPACKE 39 | #ifdef EIGEN_USE_MKL 40 | #include "mkl_lapacke.h" 41 | #else 42 | #include "src/misc/lapacke.h" 43 | #endif 44 | #include "src/QR/HouseholderQR_LAPACKE.h" 45 | #include "src/QR/ColPivHouseholderQR_LAPACKE.h" 46 | #endif 47 | 48 | #include "src/Core/util/ReenableStupidWarnings.h" 49 | 50 | #endif // EIGEN_QR_MODULE_H 51 | /* vim: set filetype=cpp et sw=2 ts=2 ai: */ 52 | -------------------------------------------------------------------------------- /eigenlib/Eigen/QtAlignedMalloc: -------------------------------------------------------------------------------- 1 | // This file is part of Eigen, a lightweight C++ template library 2 | // for linear algebra. 3 | // 4 | // This Source Code Form is subject to the terms of the Mozilla 5 | // Public License v. 2.0. If a copy of the MPL was not distributed 6 | // with this file, You can obtain one at the mozilla.org home page 7 | 8 | #ifndef EIGEN_QTMALLOC_MODULE_H 9 | #define EIGEN_QTMALLOC_MODULE_H 10 | 11 | #include "Core" 12 | 13 | #if (!EIGEN_MALLOC_ALREADY_ALIGNED) 14 | 15 | #include "src/Core/util/DisableStupidWarnings.h" 16 | 17 | void *qMalloc(std::size_t size) 18 | { 19 | return Eigen::internal::aligned_malloc(size); 20 | } 21 | 22 | void qFree(void *ptr) 23 | { 24 | Eigen::internal::aligned_free(ptr); 25 | } 26 | 27 | void *qRealloc(void *ptr, std::size_t size) 28 | { 29 | void* newPtr = Eigen::internal::aligned_malloc(size); 30 | std::memcpy(newPtr, ptr, size); 31 | Eigen::internal::aligned_free(ptr); 32 | return newPtr; 33 | } 34 | 35 | #include "src/Core/util/ReenableStupidWarnings.h" 36 | 37 | #endif 38 | 39 | #endif // EIGEN_QTMALLOC_MODULE_H 40 | /* vim: set filetype=cpp et sw=2 ts=2 ai: */ 41 | -------------------------------------------------------------------------------- /eigenlib/Eigen/SPQRSupport: -------------------------------------------------------------------------------- 1 | // This file is part of Eigen, a lightweight C++ template library 2 | // for linear algebra. 3 | // 4 | // This Source Code Form is subject to the terms of the Mozilla 5 | // Public License v. 2.0. If a copy of the MPL was not distributed 6 | // with this file, You can obtain one at the mozilla.org home page 7 | 8 | #ifndef EIGEN_SPQRSUPPORT_MODULE_H 9 | #define EIGEN_SPQRSUPPORT_MODULE_H 10 | 11 | #include "SparseCore" 12 | 13 | #include "src/Core/util/DisableStupidWarnings.h" 14 | 15 | #include "SuiteSparseQR.hpp" 16 | 17 | /** \ingroup Support_modules 18 | * \defgroup SPQRSupport_Module SuiteSparseQR module 19 | * 20 | * This module provides an interface to the SPQR library, which is part of the suitesparse package. 21 | * 22 | * \code 23 | * #include 24 | * \endcode 25 | * 26 | * In order to use this module, the SPQR headers must be accessible from the include paths, and your binary must be linked to the SPQR library and its dependencies (Cholmod, AMD, COLAMD,...). 27 | * For a cmake based project, you can use our FindSPQR.cmake and FindCholmod.Cmake modules 28 | * 29 | */ 30 | 31 | #include "src/CholmodSupport/CholmodSupport.h" 32 | #include "src/SPQRSupport/SuiteSparseQRSupport.h" 33 | 34 | #endif 35 | -------------------------------------------------------------------------------- /eigenlib/Eigen/SVD: -------------------------------------------------------------------------------- 1 | // This file is part of Eigen, a lightweight C++ template library 2 | // for linear algebra. 3 | // 4 | // This Source Code Form is subject to the terms of the Mozilla 5 | // Public License v. 2.0. If a copy of the MPL was not distributed 6 | // with this file, You can obtain one at the mozilla.org home page 7 | 8 | #ifndef EIGEN_SVD_MODULE_H 9 | #define EIGEN_SVD_MODULE_H 10 | 11 | #include "QR" 12 | #include "Householder" 13 | #include "Jacobi" 14 | 15 | #include "src/Core/util/DisableStupidWarnings.h" 16 | 17 | /** \defgroup SVD_Module SVD module 18 | * 19 | * 20 | * 21 | * This module provides SVD decomposition for matrices (both real and complex). 22 | * Two decomposition algorithms are provided: 23 | * - JacobiSVD implementing two-sided Jacobi iterations is numerically very accurate, fast for small matrices, but very slow for larger ones. 24 | * - BDCSVD implementing a recursive divide & conquer strategy on top of an upper-bidiagonalization which remains fast for large problems. 25 | * These decompositions are accessible via the respective classes and following MatrixBase methods: 26 | * - MatrixBase::jacobiSvd() 27 | * - MatrixBase::bdcSvd() 28 | * 29 | * \code 30 | * #include 31 | * \endcode 32 | */ 33 | 34 | #include "src/misc/RealSvd2x2.h" 35 | #include "src/SVD/UpperBidiagonalization.h" 36 | #include "src/SVD/SVDBase.h" 37 | #include "src/SVD/JacobiSVD.h" 38 | #include "src/SVD/BDCSVD.h" 39 | #if defined(EIGEN_USE_LAPACKE) && !defined(EIGEN_USE_LAPACKE_STRICT) 40 | #ifdef EIGEN_USE_MKL 41 | #include "mkl_lapacke.h" 42 | #else 43 | #include "src/misc/lapacke.h" 44 | #endif 45 | #include "src/SVD/JacobiSVD_LAPACKE.h" 46 | #endif 47 | 48 | #include "src/Core/util/ReenableStupidWarnings.h" 49 | 50 | #endif // EIGEN_SVD_MODULE_H 51 | /* vim: set filetype=cpp et sw=2 ts=2 ai: */ 52 | -------------------------------------------------------------------------------- /eigenlib/Eigen/Sparse: -------------------------------------------------------------------------------- 1 | // This file is part of Eigen, a lightweight C++ template library 2 | // for linear algebra. 3 | // 4 | // This Source Code Form is subject to the terms of the Mozilla 5 | // Public License v. 2.0. If a copy of the MPL was not distributed 6 | // with this file, You can obtain one at the mozilla.org home page 7 | 8 | #ifndef EIGEN_SPARSE_MODULE_H 9 | #define EIGEN_SPARSE_MODULE_H 10 | 11 | /** \defgroup Sparse_Module Sparse meta-module 12 | * 13 | * Meta-module including all related modules: 14 | * - \ref SparseCore_Module 15 | * - \ref OrderingMethods_Module 16 | * - \ref SparseCholesky_Module 17 | * - \ref SparseLU_Module 18 | * - \ref SparseQR_Module 19 | * - \ref IterativeLinearSolvers_Module 20 | * 21 | \code 22 | #include 23 | \endcode 24 | */ 25 | 26 | #include "SparseCore" 27 | #include "OrderingMethods" 28 | #ifndef EIGEN_MPL2_ONLY 29 | #include "SparseCholesky" 30 | #endif 31 | #include "SparseLU" 32 | #include "SparseQR" 33 | #include "IterativeLinearSolvers" 34 | 35 | #endif // EIGEN_SPARSE_MODULE_H 36 | 37 | -------------------------------------------------------------------------------- /eigenlib/Eigen/SparseCholesky: -------------------------------------------------------------------------------- 1 | // This file is part of Eigen, a lightweight C++ template library 2 | // for linear algebra. 3 | // 4 | // Copyright (C) 2008-2013 Gael Guennebaud 5 | // 6 | // This Source Code Form is subject to the terms of the Mozilla 7 | // Public License v. 2.0. If a copy of the MPL was not distributed 8 | // with this file, You can obtain one at the mozilla.org home page 9 | 10 | #ifndef EIGEN_SPARSECHOLESKY_MODULE_H 11 | #define EIGEN_SPARSECHOLESKY_MODULE_H 12 | 13 | #include "SparseCore" 14 | #include "OrderingMethods" 15 | 16 | #include "src/Core/util/DisableStupidWarnings.h" 17 | 18 | /** 19 | * \defgroup SparseCholesky_Module SparseCholesky module 20 | * 21 | * This module currently provides two variants of the direct sparse Cholesky decomposition for selfadjoint (hermitian) matrices. 22 | * Those decompositions are accessible via the following classes: 23 | * - SimplicialLLt, 24 | * - SimplicialLDLt 25 | * 26 | * Such problems can also be solved using the ConjugateGradient solver from the IterativeLinearSolvers module. 27 | * 28 | * \code 29 | * #include 30 | * \endcode 31 | */ 32 | 33 | #ifdef EIGEN_MPL2_ONLY 34 | #error The SparseCholesky module has nothing to offer in MPL2 only mode 35 | #endif 36 | 37 | #include "src/SparseCholesky/SimplicialCholesky.h" 38 | 39 | #ifndef EIGEN_MPL2_ONLY 40 | #include "src/SparseCholesky/SimplicialCholesky_impl.h" 41 | #endif 42 | 43 | #include "src/Core/util/ReenableStupidWarnings.h" 44 | 45 | #endif // EIGEN_SPARSECHOLESKY_MODULE_H 46 | -------------------------------------------------------------------------------- /eigenlib/Eigen/SparseQR: -------------------------------------------------------------------------------- 1 | // This file is part of Eigen, a lightweight C++ template library 2 | // for linear algebra. 3 | // 4 | // This Source Code Form is subject to the terms of the Mozilla 5 | // Public License v. 2.0. If a copy of the MPL was not distributed 6 | // with this file, You can obtain one at the mozilla.org home page 7 | 8 | #ifndef EIGEN_SPARSEQR_MODULE_H 9 | #define EIGEN_SPARSEQR_MODULE_H 10 | 11 | #include "SparseCore" 12 | #include "OrderingMethods" 13 | #include "src/Core/util/DisableStupidWarnings.h" 14 | 15 | /** \defgroup SparseQR_Module SparseQR module 16 | * \brief Provides QR decomposition for sparse matrices 17 | * 18 | * This module provides a simplicial version of the left-looking Sparse QR decomposition. 19 | * The columns of the input matrix should be reordered to limit the fill-in during the 20 | * decomposition. Built-in methods (COLAMD, AMD) or external methods (METIS) can be used to this end. 21 | * See the \link OrderingMethods_Module OrderingMethods\endlink module for the list 22 | * of built-in and external ordering methods. 23 | * 24 | * \code 25 | * #include 26 | * \endcode 27 | * 28 | * 29 | */ 30 | 31 | #include "src/SparseCore/SparseColEtree.h" 32 | #include "src/SparseQR/SparseQR.h" 33 | 34 | #include "src/Core/util/ReenableStupidWarnings.h" 35 | 36 | #endif 37 | -------------------------------------------------------------------------------- /eigenlib/Eigen/StdDeque: -------------------------------------------------------------------------------- 1 | // This file is part of Eigen, a lightweight C++ template library 2 | // for linear algebra. 3 | // 4 | // Copyright (C) 2009 Gael Guennebaud 5 | // Copyright (C) 2009 Hauke Heibel 6 | // 7 | // This Source Code Form is subject to the terms of the Mozilla 8 | // Public License v. 2.0. If a copy of the MPL was not distributed 9 | // with this file, You can obtain one at the mozilla.org home page 10 | 11 | #ifndef EIGEN_STDDEQUE_MODULE_H 12 | #define EIGEN_STDDEQUE_MODULE_H 13 | 14 | #include "Core" 15 | #include 16 | 17 | #if EIGEN_COMP_MSVC && EIGEN_OS_WIN64 && (EIGEN_MAX_STATIC_ALIGN_BYTES<=16) /* MSVC auto aligns up to 16 bytes in 64 bit builds */ 18 | 19 | #define EIGEN_DEFINE_STL_DEQUE_SPECIALIZATION(...) 20 | 21 | #else 22 | 23 | #include "src/StlSupport/StdDeque.h" 24 | 25 | #endif 26 | 27 | #endif // EIGEN_STDDEQUE_MODULE_H 28 | -------------------------------------------------------------------------------- /eigenlib/Eigen/StdList: -------------------------------------------------------------------------------- 1 | // This file is part of Eigen, a lightweight C++ template library 2 | // for linear algebra. 3 | // 4 | // Copyright (C) 2009 Hauke Heibel 5 | // 6 | // This Source Code Form is subject to the terms of the Mozilla 7 | // Public License v. 2.0. If a copy of the MPL was not distributed 8 | // with this file, You can obtain one at the mozilla.org home page 9 | 10 | #ifndef EIGEN_STDLIST_MODULE_H 11 | #define EIGEN_STDLIST_MODULE_H 12 | 13 | #include "Core" 14 | #include 15 | 16 | #if EIGEN_COMP_MSVC && EIGEN_OS_WIN64 && (EIGEN_MAX_STATIC_ALIGN_BYTES<=16) /* MSVC auto aligns up to 16 bytes in 64 bit builds */ 17 | 18 | #define EIGEN_DEFINE_STL_LIST_SPECIALIZATION(...) 19 | 20 | #else 21 | 22 | #include "src/StlSupport/StdList.h" 23 | 24 | #endif 25 | 26 | #endif // EIGEN_STDLIST_MODULE_H 27 | -------------------------------------------------------------------------------- /eigenlib/Eigen/StdVector: -------------------------------------------------------------------------------- 1 | // This file is part of Eigen, a lightweight C++ template library 2 | // for linear algebra. 3 | // 4 | // Copyright (C) 2009 Gael Guennebaud 5 | // Copyright (C) 2009 Hauke Heibel 6 | // 7 | // This Source Code Form is subject to the terms of the Mozilla 8 | // Public License v. 2.0. If a copy of the MPL was not distributed 9 | // with this file, You can obtain one at the mozilla.org home page 10 | 11 | #ifndef EIGEN_STDVECTOR_MODULE_H 12 | #define EIGEN_STDVECTOR_MODULE_H 13 | 14 | #include "Core" 15 | #include 16 | 17 | #if EIGEN_COMP_MSVC && EIGEN_OS_WIN64 && (EIGEN_MAX_STATIC_ALIGN_BYTES<=16) /* MSVC auto aligns up to 16 bytes in 64 bit builds */ 18 | 19 | #define EIGEN_DEFINE_STL_VECTOR_SPECIALIZATION(...) 20 | 21 | #else 22 | 23 | #include "src/StlSupport/StdVector.h" 24 | 25 | #endif 26 | 27 | #endif // EIGEN_STDVECTOR_MODULE_H 28 | -------------------------------------------------------------------------------- /eigenlib/Eigen/UmfPackSupport: -------------------------------------------------------------------------------- 1 | // This file is part of Eigen, a lightweight C++ template library 2 | // for linear algebra. 3 | // 4 | // This Source Code Form is subject to the terms of the Mozilla 5 | // Public License v. 2.0. If a copy of the MPL was not distributed 6 | // with this file, You can obtain one at the mozilla.org home page 7 | 8 | #ifndef EIGEN_UMFPACKSUPPORT_MODULE_H 9 | #define EIGEN_UMFPACKSUPPORT_MODULE_H 10 | 11 | #include "SparseCore" 12 | 13 | #include "src/Core/util/DisableStupidWarnings.h" 14 | 15 | extern "C" { 16 | #include 17 | } 18 | 19 | /** \ingroup Support_modules 20 | * \defgroup UmfPackSupport_Module UmfPackSupport module 21 | * 22 | * This module provides an interface to the UmfPack library which is part of the suitesparse package. 23 | * It provides the following factorization class: 24 | * - class UmfPackLU: a multifrontal sequential LU factorization. 25 | * 26 | * \code 27 | * #include 28 | * \endcode 29 | * 30 | * In order to use this module, the umfpack headers must be accessible from the include paths, and your binary must be linked to the umfpack library and its dependencies. 31 | * The dependencies depend on how umfpack has been compiled. 32 | * For a cmake based project, you can use our FindUmfPack.cmake module to help you in this task. 33 | * 34 | */ 35 | 36 | #include "src/UmfPackSupport/UmfPackSupport.h" 37 | 38 | #include "src/Core/util/ReenableStupidWarnings.h" 39 | 40 | #endif // EIGEN_UMFPACKSUPPORT_MODULE_H 41 | -------------------------------------------------------------------------------- /eigenlib/Eigen/src/Core/DiagonalProduct.h: -------------------------------------------------------------------------------- 1 | // This file is part of Eigen, a lightweight C++ template library 2 | // for linear algebra. 3 | // 4 | // Copyright (C) 2008 Gael Guennebaud 5 | // Copyright (C) 2007-2009 Benoit Jacob 6 | // 7 | // This Source Code Form is subject to the terms of the Mozilla 8 | // Public License v. 2.0. If a copy of the MPL was not distributed 9 | // with this file, You can obtain one at the mozilla.org home page 10 | 11 | #ifndef EIGEN_DIAGONALPRODUCT_H 12 | #define EIGEN_DIAGONALPRODUCT_H 13 | 14 | namespace Eigen { 15 | 16 | /** \returns the diagonal matrix product of \c *this by the diagonal matrix \a diagonal. 17 | */ 18 | template 19 | template 20 | inline const Product 21 | MatrixBase::operator*(const DiagonalBase &a_diagonal) const 22 | { 23 | return Product(derived(),a_diagonal.derived()); 24 | } 25 | 26 | } // end namespace Eigen 27 | 28 | #endif // EIGEN_DIAGONALPRODUCT_H 29 | -------------------------------------------------------------------------------- /eigenlib/Eigen/src/Core/arch/AVX/TypeCasting.h: -------------------------------------------------------------------------------- 1 | // This file is part of Eigen, a lightweight C++ template library 2 | // for linear algebra. 3 | // 4 | // Copyright (C) 2015 Benoit Steiner 5 | // 6 | // This Source Code Form is subject to the terms of the Mozilla 7 | // Public License v. 2.0. If a copy of the MPL was not distributed 8 | // with this file, You can obtain one at the mozilla.org home page 9 | 10 | #ifndef EIGEN_TYPE_CASTING_AVX_H 11 | #define EIGEN_TYPE_CASTING_AVX_H 12 | 13 | namespace Eigen { 14 | 15 | namespace internal { 16 | 17 | // For now we use SSE to handle integers, so we can't use AVX instructions to cast 18 | // from int to float 19 | template <> 20 | struct type_casting_traits { 21 | enum { 22 | VectorizedCast = 0, 23 | SrcCoeffRatio = 1, 24 | TgtCoeffRatio = 1 25 | }; 26 | }; 27 | 28 | template <> 29 | struct type_casting_traits { 30 | enum { 31 | VectorizedCast = 0, 32 | SrcCoeffRatio = 1, 33 | TgtCoeffRatio = 1 34 | }; 35 | }; 36 | 37 | 38 | 39 | template<> EIGEN_STRONG_INLINE Packet8i pcast(const Packet8f& a) { 40 | return _mm256_cvtps_epi32(a); 41 | } 42 | 43 | template<> EIGEN_STRONG_INLINE Packet8f pcast(const Packet8i& a) { 44 | return _mm256_cvtepi32_ps(a); 45 | } 46 | 47 | } // end namespace internal 48 | 49 | } // end namespace Eigen 50 | 51 | #endif // EIGEN_TYPE_CASTING_AVX_H 52 | -------------------------------------------------------------------------------- /eigenlib/Eigen/src/Core/functors/TernaryFunctors.h: -------------------------------------------------------------------------------- 1 | // This file is part of Eigen, a lightweight C++ template library 2 | // for linear algebra. 3 | // 4 | // Copyright (C) 2016 Eugene Brevdo 5 | // 6 | // This Source Code Form is subject to the terms of the Mozilla 7 | // Public License v. 2.0. If a copy of the MPL was not distributed 8 | // with this file, You can obtain one at the mozilla.org home page 9 | 10 | #ifndef EIGEN_TERNARY_FUNCTORS_H 11 | #define EIGEN_TERNARY_FUNCTORS_H 12 | 13 | namespace Eigen { 14 | 15 | namespace internal { 16 | 17 | //---------- associative ternary functors ---------- 18 | 19 | 20 | 21 | } // end namespace internal 22 | 23 | } // end namespace Eigen 24 | 25 | #endif // EIGEN_TERNARY_FUNCTORS_H 26 | -------------------------------------------------------------------------------- /eigenlib/Eigen/src/Core/util/NonMPL2.h: -------------------------------------------------------------------------------- 1 | #ifdef EIGEN_MPL2_ONLY 2 | #error Including non-MPL2 code in EIGEN_MPL2_ONLY mode 3 | #endif 4 | -------------------------------------------------------------------------------- /eigenlib/Eigen/src/Core/util/ReenableStupidWarnings.h: -------------------------------------------------------------------------------- 1 | #ifdef EIGEN_WARNINGS_DISABLED_2 2 | // "DisableStupidWarnings.h" was included twice recursively: Do not reenable warnings yet! 3 | # undef EIGEN_WARNINGS_DISABLED_2 4 | 5 | #elif defined(EIGEN_WARNINGS_DISABLED) 6 | #undef EIGEN_WARNINGS_DISABLED 7 | 8 | #ifndef EIGEN_PERMANENTLY_DISABLE_STUPID_WARNINGS 9 | #ifdef _MSC_VER 10 | #pragma warning( pop ) 11 | #elif defined __INTEL_COMPILER 12 | #pragma warning pop 13 | #elif defined __clang__ 14 | #pragma clang diagnostic pop 15 | #elif defined __GNUC__ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) 16 | #pragma GCC diagnostic pop 17 | #endif 18 | 19 | #if defined __NVCC__ 20 | // Don't reenable the diagnostic messages, as it turns out these messages need 21 | // to be disabled at the point of the template instantiation (i.e the user code) 22 | // otherwise they'll be triggered by nvcc. 23 | // #pragma diag_default code_is_unreachable 24 | // #pragma diag_default initialization_not_reachable 25 | // #pragma diag_default 2651 26 | // #pragma diag_default 2653 27 | #endif 28 | 29 | #endif 30 | 31 | #endif // EIGEN_WARNINGS_DISABLED 32 | -------------------------------------------------------------------------------- /eigenlib/Eigen/src/SparseCore/SparseFuzzy.h: -------------------------------------------------------------------------------- 1 | // This file is part of Eigen, a lightweight C++ template library 2 | // for linear algebra. 3 | // 4 | // Copyright (C) 2008-2014 Gael Guennebaud 5 | // 6 | // This Source Code Form is subject to the terms of the Mozilla 7 | // Public License v. 2.0. If a copy of the MPL was not distributed 8 | // with this file, You can obtain one at the mozilla.org home page 9 | 10 | #ifndef EIGEN_SPARSE_FUZZY_H 11 | #define EIGEN_SPARSE_FUZZY_H 12 | 13 | namespace Eigen { 14 | 15 | template 16 | template 17 | bool SparseMatrixBase::isApprox(const SparseMatrixBase& other, const RealScalar &prec) const 18 | { 19 | const typename internal::nested_eval::type actualA(derived()); 20 | typename internal::conditional::type, 22 | const PlainObject>::type actualB(other.derived()); 23 | 24 | return (actualA - actualB).squaredNorm() <= prec * prec * numext::mini(actualA.squaredNorm(), actualB.squaredNorm()); 25 | } 26 | 27 | } // end namespace Eigen 28 | 29 | #endif // EIGEN_SPARSE_FUZZY_H 30 | -------------------------------------------------------------------------------- /eigenlib/Eigen/src/misc/lapacke_mangling.h: -------------------------------------------------------------------------------- 1 | #ifndef LAPACK_HEADER_INCLUDED 2 | #define LAPACK_HEADER_INCLUDED 3 | 4 | #ifndef LAPACK_GLOBAL 5 | #if defined(LAPACK_GLOBAL_PATTERN_LC) || defined(ADD_) 6 | #define LAPACK_GLOBAL(lcname,UCNAME) lcname##_ 7 | #elif defined(LAPACK_GLOBAL_PATTERN_UC) || defined(UPPER) 8 | #define LAPACK_GLOBAL(lcname,UCNAME) UCNAME 9 | #elif defined(LAPACK_GLOBAL_PATTERN_MC) || defined(NOCHANGE) 10 | #define LAPACK_GLOBAL(lcname,UCNAME) lcname 11 | #else 12 | #define LAPACK_GLOBAL(lcname,UCNAME) lcname##_ 13 | #endif 14 | #endif 15 | 16 | #endif 17 | 18 | -------------------------------------------------------------------------------- /eigenlib/howto.txt: -------------------------------------------------------------------------------- 1 | Current Eigen Version 3.1.2 (05.11.2012) 2 | Current Eigen Version 3.2.1 (26.02.2014) updated on 14/05/2014 3 | Current Eigen Version 3.2.2 (04.08.2014) updated on 21/10/2014 4 | Current Eigen Version 3.2.5 (16.06.2015) updated on 24/09/2015 5 | Current Eigen Version 3.3.2 (18.01.2017) updated on 24/01/2017 6 | Current Eigen Version 3.3.9 (04.12.2020) updated on 15/06/2021 7 | 8 | To update the lib: 9 | - download Eigen 10 | - unzip it somewhere 11 | - delete (in the filesystem) the content of the folder eigenlib/Eigen - copy the folders 'Eigen' and 'unsupported' there 12 | - execute the two following shell commands in the folder 'Eigen' and 'unsupported' 13 | 14 | grep -RiIl 'http://mozilla.org/MPL/2.0/.' * | xargs sed -i 's/http:\/\/mozilla.org\/MPL\/2.0\/./the mozilla.org home page/g' 15 | grep -RiIl 'http' * | xargs sed -i 's/http/xxxp/g' 16 | 17 | - check the git status. 18 | - update this file 19 | - commit everything 20 | -------------------------------------------------------------------------------- /eigenlib/unsupported/Eigen/ArpackSupport: -------------------------------------------------------------------------------- 1 | // This file is part of Eigen, a lightweight C++ template library 2 | // for linear algebra. 3 | // 4 | // 5 | // This Source Code Form is subject to the terms of the Mozilla 6 | // Public License v. 2.0. If a copy of the MPL was not distributed 7 | // with this file, You can obtain one at the mozilla.org home page 8 | 9 | #ifndef EIGEN_ARPACKSUPPORT_MODULE_H 10 | #define EIGEN_ARPACKSUPPORT_MODULE_H 11 | 12 | #include 13 | 14 | /** \defgroup ArpackSupport_Module Arpack support module 15 | * 16 | * This module provides a wrapper to Arpack, a library for sparse eigenvalue decomposition. 17 | * 18 | * \code 19 | * #include 20 | * \endcode 21 | */ 22 | 23 | #include 24 | 25 | #include 26 | #include "src/Eigenvalues/ArpackSelfAdjointEigenSolver.h" 27 | 28 | #include 29 | 30 | #endif // EIGEN_ARPACKSUPPORT_MODULE_H 31 | /* vim: set filetype=cpp et sw=2 ts=2 ai: */ 32 | -------------------------------------------------------------------------------- /eigenlib/unsupported/Eigen/AutoDiff: -------------------------------------------------------------------------------- 1 | // This file is part of Eigen, a lightweight C++ template library 2 | // for linear algebra. 3 | // 4 | // Copyright (C) 2008-2009 Gael Guennebaud 5 | // 6 | // This Source Code Form is subject to the terms of the Mozilla 7 | // Public License v. 2.0. If a copy of the MPL was not distributed 8 | // with this file, You can obtain one at the mozilla.org home page 9 | 10 | #ifndef EIGEN_AUTODIFF_MODULE 11 | #define EIGEN_AUTODIFF_MODULE 12 | 13 | namespace Eigen { 14 | 15 | /** 16 | * \defgroup AutoDiff_Module Auto Diff module 17 | * 18 | * This module features forward automatic differentation via a simple 19 | * templated scalar type wrapper AutoDiffScalar. 20 | * 21 | * Warning : this should NOT be confused with numerical differentiation, which 22 | * is a different method and has its own module in Eigen : \ref NumericalDiff_Module. 23 | * 24 | * \code 25 | * #include 26 | * \endcode 27 | */ 28 | //@{ 29 | 30 | } 31 | 32 | #include "src/AutoDiff/AutoDiffScalar.h" 33 | // #include "src/AutoDiff/AutoDiffVector.h" 34 | #include "src/AutoDiff/AutoDiffJacobian.h" 35 | 36 | namespace Eigen { 37 | //@} 38 | } 39 | 40 | #endif // EIGEN_AUTODIFF_MODULE 41 | -------------------------------------------------------------------------------- /eigenlib/unsupported/Eigen/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set(Eigen_HEADERS 2 | AdolcForward 3 | AlignedVector3 4 | ArpackSupport 5 | AutoDiff 6 | BVH 7 | EulerAngles 8 | FFT 9 | IterativeSolvers 10 | KroneckerProduct 11 | LevenbergMarquardt 12 | MatrixFunctions 13 | MoreVectorization 14 | MPRealSupport 15 | NonLinearOptimization 16 | NumericalDiff 17 | OpenGLSupport 18 | Polynomials 19 | Skyline 20 | SparseExtra 21 | SpecialFunctions 22 | Splines 23 | ) 24 | 25 | install(FILES 26 | ${Eigen_HEADERS} 27 | DESTINATION ${INCLUDE_INSTALL_DIR}/unsupported/Eigen COMPONENT Devel 28 | ) 29 | 30 | install(DIRECTORY src DESTINATION ${INCLUDE_INSTALL_DIR}/unsupported/Eigen COMPONENT Devel FILES_MATCHING PATTERN "*.h") 31 | 32 | add_subdirectory(CXX11) 33 | -------------------------------------------------------------------------------- /eigenlib/unsupported/Eigen/CXX11/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set(Eigen_CXX11_HEADERS Tensor TensorSymmetry ThreadPool) 2 | 3 | install(FILES 4 | ${Eigen_CXX11_HEADERS} 5 | DESTINATION ${INCLUDE_INSTALL_DIR}/unsupported/Eigen/CXX11 COMPONENT Devel 6 | ) 7 | 8 | install(DIRECTORY src DESTINATION ${INCLUDE_INSTALL_DIR}/unsupported/Eigen/CXX11 COMPONENT Devel FILES_MATCHING PATTERN "*.h") 9 | -------------------------------------------------------------------------------- /eigenlib/unsupported/Eigen/CXX11/TensorSymmetry: -------------------------------------------------------------------------------- 1 | // This file is part of Eigen, a lightweight C++ template library 2 | // for linear algebra. 3 | // 4 | // Copyright (C) 2013 Christian Seiler 5 | // 6 | // This Source Code Form is subject to the terms of the Mozilla 7 | // Public License v. 2.0. If a copy of the MPL was not distributed 8 | // with this file, You can obtain one at the mozilla.org home page 9 | 10 | #ifndef EIGEN_CXX11_TENSORSYMMETRY_MODULE 11 | #define EIGEN_CXX11_TENSORSYMMETRY_MODULE 12 | 13 | #include 14 | 15 | #include 16 | 17 | #include "src/util/CXX11Meta.h" 18 | 19 | /** \defgroup CXX11_TensorSymmetry_Module Tensor Symmetry Module 20 | * 21 | * This module provides a classes that allow for the definition of 22 | * symmetries w.r.t. tensor indices. 23 | * 24 | * Including this module will implicitly include the Tensor module. 25 | * 26 | * \code 27 | * #include 28 | * \endcode 29 | */ 30 | 31 | #include "src/TensorSymmetry/util/TemplateGroupTheory.h" 32 | #include "src/TensorSymmetry/Symmetry.h" 33 | #include "src/TensorSymmetry/StaticSymmetry.h" 34 | #include "src/TensorSymmetry/DynamicSymmetry.h" 35 | 36 | #include 37 | 38 | #endif // EIGEN_CXX11_TENSORSYMMETRY_MODULE 39 | 40 | /* 41 | * kate: space-indent on; indent-width 2; mixedindent off; indent-mode cstyle; 42 | */ 43 | -------------------------------------------------------------------------------- /eigenlib/unsupported/Eigen/CXX11/src/Tensor/TensorContractionBlocking.h: -------------------------------------------------------------------------------- 1 | // This file is part of Eigen, a lightweight C++ template library 2 | // for linear algebra. 3 | // 4 | // Copyright (C) 2014 Benoit Steiner 5 | // 6 | // This Source Code Form is subject to the terms of the Mozilla 7 | // Public License v. 2.0. If a copy of the MPL was not distributed 8 | // with this file, You can obtain one at the mozilla.org home page 9 | 10 | #ifndef EIGEN_CXX11_TENSOR_TENSOR_CONTRACTION_BLOCKING_H 11 | #define EIGEN_CXX11_TENSOR_TENSOR_CONTRACTION_BLOCKING_H 12 | 13 | 14 | namespace Eigen { 15 | namespace internal { 16 | 17 | enum { 18 | ShardByRow = 0, 19 | ShardByCol = 1 20 | }; 21 | 22 | 23 | // Default Blocking Strategy 24 | template 25 | class TensorContractionBlocking { 26 | public: 27 | 28 | typedef typename LhsMapper::Scalar LhsScalar; 29 | typedef typename RhsMapper::Scalar RhsScalar; 30 | 31 | EIGEN_DEVICE_FUNC TensorContractionBlocking(Index k, Index m, Index n, Index num_threads = 1) : 32 | kc_(k), mc_(m), nc_(n) 33 | { 34 | if (ShardingType == ShardByCol) { 35 | computeProductBlockingSizes(kc_, mc_, nc_, num_threads); 36 | } 37 | else { 38 | computeProductBlockingSizes(kc_, nc_, mc_, num_threads); 39 | } 40 | } 41 | 42 | EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE Index kc() const { return kc_; } 43 | EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE Index mc() const { return mc_; } 44 | EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE Index nc() const { return nc_; } 45 | 46 | private: 47 | Index kc_; 48 | Index mc_; 49 | Index nc_; 50 | }; 51 | 52 | 53 | } // end namespace internal 54 | } // end namespace Eigen 55 | 56 | #endif // EIGEN_CXX11_TENSOR_TENSOR_CONTRACTION_BLOCKING_H 57 | -------------------------------------------------------------------------------- /eigenlib/unsupported/Eigen/CXX11/src/Tensor/TensorGlobalFunctions.h: -------------------------------------------------------------------------------- 1 | // This file is part of Eigen, a lightweight C++ template library 2 | // for linear algebra. 3 | // 4 | // Copyright (C) 2016 Eugene Brevdo 5 | // 6 | // This Source Code Form is subject to the terms of the Mozilla 7 | // Public License v. 2.0. If a copy of the MPL was not distributed 8 | // with this file, You can obtain one at the mozilla.org home page 9 | 10 | #ifndef EIGEN_CXX11_TENSOR_TENSOR_GLOBAL_FUNCTIONS_H 11 | #define EIGEN_CXX11_TENSOR_TENSOR_GLOBAL_FUNCTIONS_H 12 | 13 | namespace Eigen { 14 | 15 | /** \cpp11 \returns an expression of the coefficient-wise betainc(\a x, \a a, \a b) to the given tensors. 16 | * 17 | * This function computes the regularized incomplete beta function (integral). 18 | * 19 | */ 20 | template 21 | EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const 22 | TensorCwiseTernaryOp, 23 | const ADerived, const BDerived, const XDerived> 24 | betainc(const ADerived& a, const BDerived& b, const XDerived& x) { 25 | return TensorCwiseTernaryOp< 26 | internal::scalar_betainc_op, const ADerived, 27 | const BDerived, const XDerived>( 28 | a, b, x, internal::scalar_betainc_op()); 29 | } 30 | 31 | } // end namespace Eigen 32 | 33 | #endif // EIGEN_CXX11_TENSOR_TENSOR_GLOBAL_FUNCTIONS_H 34 | -------------------------------------------------------------------------------- /eigenlib/unsupported/Eigen/CXX11/src/Tensor/TensorMacros.h: -------------------------------------------------------------------------------- 1 | // This file is part of Eigen, a lightweight C++ template library 2 | // for linear algebra. 3 | // 4 | // Copyright (C) 2015 Benoit Steiner 5 | // 6 | // This Source Code Form is subject to the terms of the Mozilla 7 | // Public License v. 2.0. If a copy of the MPL was not distributed 8 | // with this file, You can obtain one at the mozilla.org home page 9 | 10 | #ifndef EIGEN_CXX11_TENSOR_TENSOR_META_MACROS_H 11 | #define EIGEN_CXX11_TENSOR_TENSOR_META_MACROS_H 12 | 13 | 14 | /** use this macro in sfinae selection in templated functions 15 | * 16 | * template::value , int >::type = 0 18 | * > 19 | * void foo(){} 20 | * 21 | * becomes => 22 | * 23 | * template::value ) 25 | * > 26 | * void foo(){} 27 | */ 28 | 29 | // SFINAE requires variadic templates 30 | #ifndef __CUDACC__ 31 | #if EIGEN_HAS_VARIADIC_TEMPLATES 32 | // SFINAE doesn't work for gcc <= 4.7 33 | #ifdef EIGEN_COMP_GNUC 34 | #if EIGEN_GNUC_AT_LEAST(4,8) 35 | #define EIGEN_HAS_SFINAE 36 | #endif 37 | #else 38 | #define EIGEN_HAS_SFINAE 39 | #endif 40 | #endif 41 | #endif 42 | 43 | #define EIGEN_SFINAE_ENABLE_IF( __condition__ ) \ 44 | typename internal::enable_if< ( __condition__ ) , int >::type = 0 45 | 46 | 47 | #if EIGEN_HAS_CONSTEXPR 48 | #define EIGEN_CONSTEXPR constexpr 49 | #else 50 | #define EIGEN_CONSTEXPR 51 | #endif 52 | 53 | 54 | #endif 55 | -------------------------------------------------------------------------------- /eigenlib/unsupported/Eigen/CXX11/src/ThreadPool/ThreadEnvironment.h: -------------------------------------------------------------------------------- 1 | // This file is part of Eigen, a lightweight C++ template library 2 | // for linear algebra. 3 | // 4 | // Copyright (C) 2014 Benoit Steiner 5 | // 6 | // This Source Code Form is subject to the terms of the Mozilla 7 | // Public License v. 2.0. If a copy of the MPL was not distributed 8 | // with this file, You can obtain one at the mozilla.org home page 9 | 10 | #ifndef EIGEN_CXX11_THREADPOOL_THREAD_ENVIRONMENT_H 11 | #define EIGEN_CXX11_THREADPOOL_THREAD_ENVIRONMENT_H 12 | 13 | namespace Eigen { 14 | 15 | struct StlThreadEnvironment { 16 | struct Task { 17 | std::function f; 18 | }; 19 | 20 | // EnvThread constructor must start the thread, 21 | // destructor must join the thread. 22 | class EnvThread { 23 | public: 24 | EnvThread(std::function f) : thr_(std::move(f)) {} 25 | ~EnvThread() { thr_.join(); } 26 | 27 | private: 28 | std::thread thr_; 29 | }; 30 | 31 | EnvThread* CreateThread(std::function f) { return new EnvThread(std::move(f)); } 32 | Task CreateTask(std::function f) { return Task{std::move(f)}; } 33 | void ExecuteTask(const Task& t) { t.f(); } 34 | }; 35 | 36 | } // namespace Eigen 37 | 38 | #endif // EIGEN_CXX11_THREADPOOL_THREAD_ENVIRONMENT_H 39 | -------------------------------------------------------------------------------- /eigenlib/unsupported/Eigen/CXX11/src/ThreadPool/ThreadLocal.h: -------------------------------------------------------------------------------- 1 | // This file is part of Eigen, a lightweight C++ template library 2 | // for linear algebra. 3 | // 4 | // Copyright (C) 2016 Benoit Steiner 5 | // 6 | // This Source Code Form is subject to the terms of the Mozilla 7 | // Public License v. 2.0. If a copy of the MPL was not distributed 8 | // with this file, You can obtain one at the mozilla.org home page 9 | 10 | #ifndef EIGEN_CXX11_THREADPOOL_THREAD_LOCAL_H 11 | #define EIGEN_CXX11_THREADPOOL_THREAD_LOCAL_H 12 | 13 | // Try to come up with a portable implementation of thread local variables 14 | #if EIGEN_COMP_GNUC && EIGEN_GNUC_AT_MOST(4, 7) 15 | #define EIGEN_THREAD_LOCAL static __thread 16 | #elif EIGEN_COMP_CLANG 17 | #define EIGEN_THREAD_LOCAL static __thread 18 | #else 19 | #define EIGEN_THREAD_LOCAL static thread_local 20 | #endif 21 | 22 | #endif // EIGEN_CXX11_THREADPOOL_THREAD_LOCAL_H 23 | -------------------------------------------------------------------------------- /eigenlib/unsupported/Eigen/CXX11/src/ThreadPool/ThreadPoolInterface.h: -------------------------------------------------------------------------------- 1 | // This file is part of Eigen, a lightweight C++ template library 2 | // for linear algebra. 3 | // 4 | // Copyright (C) 2014 Benoit Steiner 5 | // 6 | // This Source Code Form is subject to the terms of the Mozilla 7 | // Public License v. 2.0. If a copy of the MPL was not distributed 8 | // with this file, You can obtain one at the mozilla.org home page 9 | 10 | #ifndef EIGEN_CXX11_THREADPOOL_THREAD_POOL_INTERFACE_H 11 | #define EIGEN_CXX11_THREADPOOL_THREAD_POOL_INTERFACE_H 12 | 13 | namespace Eigen { 14 | 15 | // This defines an interface that ThreadPoolDevice can take to use 16 | // custom thread pools underneath. 17 | class ThreadPoolInterface { 18 | public: 19 | virtual void Schedule(std::function fn) = 0; 20 | 21 | // Returns the number of threads in the pool. 22 | virtual int NumThreads() const = 0; 23 | 24 | // Returns a logical thread index between 0 and NumThreads() - 1 if called 25 | // from one of the threads in the pool. Returns -1 otherwise. 26 | virtual int CurrentThreadId() const = 0; 27 | 28 | virtual ~ThreadPoolInterface() {} 29 | }; 30 | 31 | } // namespace Eigen 32 | 33 | #endif // EIGEN_CXX11_THREADPOOL_THREAD_POOL_INTERFACE_H 34 | -------------------------------------------------------------------------------- /eigenlib/unsupported/Eigen/CXX11/src/ThreadPool/ThreadYield.h: -------------------------------------------------------------------------------- 1 | // This file is part of Eigen, a lightweight C++ template library 2 | // for linear algebra. 3 | // 4 | // Copyright (C) 2016 Benoit Steiner 5 | // 6 | // This Source Code Form is subject to the terms of the Mozilla 7 | // Public License v. 2.0. If a copy of the MPL was not distributed 8 | // with this file, You can obtain one at the mozilla.org home page 9 | 10 | #ifndef EIGEN_CXX11_THREADPOOL_THREAD_YIELD_H 11 | #define EIGEN_CXX11_THREADPOOL_THREAD_YIELD_H 12 | 13 | // Try to come up with a portable way to yield 14 | #if EIGEN_COMP_GNUC && EIGEN_GNUC_AT_MOST(4, 7) 15 | #define EIGEN_THREAD_YIELD() sched_yield() 16 | #else 17 | #define EIGEN_THREAD_YIELD() std::this_thread::yield() 18 | #endif 19 | 20 | #endif // EIGEN_CXX11_THREADPOOL_THREAD_YIELD_H 21 | -------------------------------------------------------------------------------- /eigenlib/unsupported/Eigen/EulerAngles: -------------------------------------------------------------------------------- 1 | // This file is part of Eigen, a lightweight C++ template library 2 | // for linear algebra. 3 | // 4 | // Copyright (C) 2015 Tal Hadad 5 | // 6 | // This Source Code Form is subject to the terms of the Mozilla 7 | // Public License v. 2.0. If a copy of the MPL was not distributed 8 | // with this file, You can obtain one at the mozilla.org home page 9 | 10 | #ifndef EIGEN_EULERANGLES_MODULE_H 11 | #define EIGEN_EULERANGLES_MODULE_H 12 | 13 | 14 | #include "Eigen/Core" 15 | #include "Eigen/Geometry" 16 | 17 | #include "Eigen/src/Core/util/DisableStupidWarnings.h" 18 | 19 | namespace Eigen { 20 | 21 | /** 22 | * \defgroup EulerAngles_Module EulerAngles module 23 | * \brief This module provides generic euler angles rotation. 24 | * 25 | * Euler angles are a way to represent 3D rotation. 26 | * 27 | * In order to use this module in your code, include this header: 28 | * \code 29 | * #include 30 | * \endcode 31 | * 32 | * See \ref EulerAngles for more information. 33 | * 34 | */ 35 | 36 | } 37 | 38 | #include "src/EulerAngles/EulerSystem.h" 39 | #include "src/EulerAngles/EulerAngles.h" 40 | 41 | #include "Eigen/src/Core/util/ReenableStupidWarnings.h" 42 | 43 | #endif // EIGEN_EULERANGLES_MODULE_H 44 | -------------------------------------------------------------------------------- /eigenlib/unsupported/Eigen/IterativeSolvers: -------------------------------------------------------------------------------- 1 | // This file is part of Eigen, a lightweight C++ template library 2 | // for linear algebra. 3 | // 4 | // Copyright (C) 2008-2009 Gael Guennebaud 5 | // 6 | // This Source Code Form is subject to the terms of the Mozilla 7 | // Public License v. 2.0. If a copy of the MPL was not distributed 8 | // with this file, You can obtain one at the mozilla.org home page 9 | 10 | #ifndef EIGEN_ITERATIVE_SOLVERS_MODULE_H 11 | #define EIGEN_ITERATIVE_SOLVERS_MODULE_H 12 | 13 | #include 14 | 15 | /** 16 | * \defgroup IterativeSolvers_Module Iterative solvers module 17 | * This module aims to provide various iterative linear and non linear solver algorithms. 18 | * It currently provides: 19 | * - a constrained conjugate gradient 20 | * - a Householder GMRES implementation 21 | * \code 22 | * #include 23 | * \endcode 24 | */ 25 | //@{ 26 | 27 | #ifndef EIGEN_MPL2_ONLY 28 | #include "src/IterativeSolvers/IterationController.h" 29 | #include "src/IterativeSolvers/ConstrainedConjGrad.h" 30 | #endif 31 | 32 | #include "src/IterativeSolvers/IncompleteLU.h" 33 | #include "../../Eigen/Jacobi" 34 | #include "../../Eigen/Householder" 35 | #include "src/IterativeSolvers/GMRES.h" 36 | #include "src/IterativeSolvers/DGMRES.h" 37 | //#include "src/IterativeSolvers/SSORPreconditioner.h" 38 | #include "src/IterativeSolvers/MINRES.h" 39 | 40 | //@} 41 | 42 | #endif // EIGEN_ITERATIVE_SOLVERS_MODULE_H 43 | -------------------------------------------------------------------------------- /eigenlib/unsupported/Eigen/KroneckerProduct: -------------------------------------------------------------------------------- 1 | // This file is part of Eigen, a lightweight C++ template library 2 | // for linear algebra. 3 | // 4 | // 5 | // This Source Code Form is subject to the terms of the Mozilla 6 | // Public License v. 2.0. If a copy of the MPL was not distributed 7 | // with this file, You can obtain one at the mozilla.org home page 8 | 9 | #ifndef EIGEN_KRONECKER_PRODUCT_MODULE_H 10 | #define EIGEN_KRONECKER_PRODUCT_MODULE_H 11 | 12 | #include "../../Eigen/Core" 13 | 14 | #include "../../Eigen/src/Core/util/DisableStupidWarnings.h" 15 | 16 | #include "../../Eigen/src/SparseCore/SparseUtil.h" 17 | 18 | namespace Eigen { 19 | 20 | /** 21 | * \defgroup KroneckerProduct_Module KroneckerProduct module 22 | * 23 | * This module contains an experimental Kronecker product implementation. 24 | * 25 | * \code 26 | * #include 27 | * \endcode 28 | */ 29 | 30 | } // namespace Eigen 31 | 32 | #include "src/KroneckerProduct/KroneckerTensorProduct.h" 33 | 34 | #include "../../Eigen/src/Core/util/ReenableStupidWarnings.h" 35 | 36 | #endif // EIGEN_KRONECKER_PRODUCT_MODULE_H 37 | -------------------------------------------------------------------------------- /eigenlib/unsupported/Eigen/LevenbergMarquardt: -------------------------------------------------------------------------------- 1 | // This file is part of Eigen, a lightweight C++ template library 2 | // for linear algebra. 3 | // 4 | // Copyright (C) 2009 Thomas Capricelli 5 | // 6 | // This Source Code Form is subject to the terms of the Mozilla 7 | // Public License v. 2.0. If a copy of the MPL was not distributed 8 | // with this file, You can obtain one at the mozilla.org home page 9 | 10 | #ifndef EIGEN_LEVENBERGMARQUARDT_MODULE 11 | #define EIGEN_LEVENBERGMARQUARDT_MODULE 12 | 13 | // #include 14 | 15 | #include 16 | #include 17 | #include 18 | #include 19 | 20 | #include 21 | 22 | /** 23 | * \defgroup LevenbergMarquardt_Module Levenberg-Marquardt module 24 | * 25 | * \code 26 | * #include 27 | * \endcode 28 | * 29 | * 30 | */ 31 | 32 | #include "Eigen/SparseCore" 33 | #ifndef EIGEN_PARSED_BY_DOXYGEN 34 | 35 | #include "src/LevenbergMarquardt/LMqrsolv.h" 36 | #include "src/LevenbergMarquardt/LMcovar.h" 37 | #include "src/LevenbergMarquardt/LMpar.h" 38 | 39 | #endif 40 | 41 | #include "src/LevenbergMarquardt/LevenbergMarquardt.h" 42 | #include "src/LevenbergMarquardt/LMonestep.h" 43 | 44 | 45 | #endif // EIGEN_LEVENBERGMARQUARDT_MODULE 46 | -------------------------------------------------------------------------------- /eigenlib/unsupported/Eigen/MoreVectorization: -------------------------------------------------------------------------------- 1 | // This file is part of Eigen, a lightweight C++ template library 2 | // for linear algebra. 3 | // 4 | // 5 | // This Source Code Form is subject to the terms of the Mozilla 6 | // Public License v. 2.0. If a copy of the MPL was not distributed 7 | // with this file, You can obtain one at the mozilla.org home page 8 | 9 | #ifndef EIGEN_MOREVECTORIZATION_MODULE_H 10 | #define EIGEN_MOREVECTORIZATION_MODULE_H 11 | 12 | #include 13 | 14 | namespace Eigen { 15 | 16 | /** 17 | * \defgroup MoreVectorization More vectorization module 18 | */ 19 | 20 | } 21 | 22 | #include "src/MoreVectorization/MathFunctions.h" 23 | 24 | #endif // EIGEN_MOREVECTORIZATION_MODULE_H 25 | -------------------------------------------------------------------------------- /eigenlib/unsupported/Eigen/Skyline: -------------------------------------------------------------------------------- 1 | // This file is part of Eigen, a lightweight C++ template library 2 | // for linear algebra. 3 | // 4 | // 5 | // This Source Code Form is subject to the terms of the Mozilla 6 | // Public License v. 2.0. If a copy of the MPL was not distributed 7 | // with this file, You can obtain one at the mozilla.org home page 8 | 9 | #ifndef EIGEN_SKYLINE_MODULE_H 10 | #define EIGEN_SKYLINE_MODULE_H 11 | 12 | 13 | #include "Eigen/Core" 14 | 15 | #include "Eigen/src/Core/util/DisableStupidWarnings.h" 16 | 17 | #include 18 | #include 19 | #include 20 | #include 21 | 22 | /** 23 | * \defgroup Skyline_Module Skyline module 24 | * 25 | * 26 | * 27 | * 28 | */ 29 | 30 | #include "src/Skyline/SkylineUtil.h" 31 | #include "src/Skyline/SkylineMatrixBase.h" 32 | #include "src/Skyline/SkylineStorage.h" 33 | #include "src/Skyline/SkylineMatrix.h" 34 | #include "src/Skyline/SkylineInplaceLU.h" 35 | #include "src/Skyline/SkylineProduct.h" 36 | 37 | #include "Eigen/src/Core/util/ReenableStupidWarnings.h" 38 | 39 | #endif // EIGEN_SKYLINE_MODULE_H 40 | -------------------------------------------------------------------------------- /eigenlib/unsupported/Eigen/SparseExtra: -------------------------------------------------------------------------------- 1 | // This file is part of Eigen, a lightweight C++ template library 2 | // for linear algebra. 3 | // 4 | // Copyright (C) 2008-2009 Gael Guennebaud 5 | // 6 | // This Source Code Form is subject to the terms of the Mozilla 7 | // Public License v. 2.0. If a copy of the MPL was not distributed 8 | // with this file, You can obtain one at the mozilla.org home page 9 | 10 | #ifndef EIGEN_SPARSE_EXTRA_MODULE_H 11 | #define EIGEN_SPARSE_EXTRA_MODULE_H 12 | 13 | #include "../../Eigen/Sparse" 14 | 15 | #include "../../Eigen/src/Core/util/DisableStupidWarnings.h" 16 | 17 | #include 18 | #include 19 | #include 20 | #include 21 | #include 22 | #include 23 | #include 24 | 25 | #ifdef EIGEN_GOOGLEHASH_SUPPORT 26 | #include 27 | #endif 28 | 29 | /** 30 | * \defgroup SparseExtra_Module SparseExtra module 31 | * 32 | * This module contains some experimental features extending the sparse module. 33 | * 34 | * \code 35 | * #include 36 | * \endcode 37 | */ 38 | 39 | 40 | #include "src/SparseExtra/DynamicSparseMatrix.h" 41 | #include "src/SparseExtra/BlockOfDynamicSparseMatrix.h" 42 | #include "src/SparseExtra/RandomSetter.h" 43 | 44 | #include "src/SparseExtra/MarketIO.h" 45 | 46 | #if !defined(_WIN32) 47 | #include 48 | #include "src/SparseExtra/MatrixMarketIterator.h" 49 | #endif 50 | 51 | #include "../../Eigen/src/Core/util/ReenableStupidWarnings.h" 52 | 53 | #endif // EIGEN_SPARSE_EXTRA_MODULE_H 54 | -------------------------------------------------------------------------------- /eigenlib/unsupported/Eigen/SpecialFunctions: -------------------------------------------------------------------------------- 1 | // This file is part of Eigen, a lightweight C++ template library 2 | // for linear algebra. 3 | // 4 | // Copyright (C) 2016 Gael Guennebaud 5 | // 6 | // This Source Code Form is subject to the terms of the Mozilla 7 | // Public License v. 2.0. If a copy of the MPL was not distributed 8 | // with this file, You can obtain one at the mozilla.org home page 9 | 10 | #ifndef EIGEN_SPECIALFUNCTIONS_MODULE 11 | #define EIGEN_SPECIALFUNCTIONS_MODULE 12 | 13 | #include 14 | 15 | #include "../../Eigen/Core" 16 | 17 | #include "../../Eigen/src/Core/util/DisableStupidWarnings.h" 18 | 19 | namespace Eigen { 20 | 21 | /** 22 | * \defgroup SpecialFunctions_Module Special math functions module 23 | * 24 | * This module features additional coefficient-wise math functions available 25 | * within the numext:: namespace for the scalar version, and as method and/or free 26 | * functions of Array. Those include: 27 | * 28 | * - erf 29 | * - erfc 30 | * - lgamma 31 | * - igamma 32 | * - igammac 33 | * - digamma 34 | * - polygamma 35 | * - zeta 36 | * - betainc 37 | * 38 | * \code 39 | * #include 40 | * \endcode 41 | */ 42 | //@{ 43 | 44 | } 45 | 46 | #include "src/SpecialFunctions/SpecialFunctionsImpl.h" 47 | #include "src/SpecialFunctions/SpecialFunctionsPacketMath.h" 48 | #include "src/SpecialFunctions/SpecialFunctionsHalf.h" 49 | #include "src/SpecialFunctions/SpecialFunctionsFunctors.h" 50 | #include "src/SpecialFunctions/SpecialFunctionsArrayAPI.h" 51 | 52 | #if defined EIGEN_VECTORIZE_CUDA 53 | #include "src/SpecialFunctions/arch/CUDA/CudaSpecialFunctions.h" 54 | #endif 55 | 56 | namespace Eigen { 57 | //@} 58 | } 59 | 60 | 61 | #include "../../Eigen/src/Core/util/ReenableStupidWarnings.h" 62 | 63 | #endif // EIGEN_SPECIALFUNCTIONS_MODULE 64 | -------------------------------------------------------------------------------- /eigenlib/unsupported/Eigen/Splines: -------------------------------------------------------------------------------- 1 | // This file is part of Eigen, a lightweight C++ template library 2 | // for linear algebra. 3 | // 4 | // Copyright (C) 20010-2011 Hauke Heibel 5 | // 6 | // This Source Code Form is subject to the terms of the Mozilla 7 | // Public License v. 2.0. If a copy of the MPL was not distributed 8 | // with this file, You can obtain one at the mozilla.org home page 9 | 10 | #ifndef EIGEN_SPLINES_MODULE_H 11 | #define EIGEN_SPLINES_MODULE_H 12 | 13 | namespace Eigen 14 | { 15 | /** 16 | * \defgroup Splines_Module Spline and spline fitting module 17 | * 18 | * This module provides a simple multi-dimensional spline class while 19 | * offering most basic functionality to fit a spline to point sets. 20 | * 21 | * \code 22 | * #include 23 | * \endcode 24 | */ 25 | } 26 | 27 | #include "src/Splines/SplineFwd.h" 28 | #include "src/Splines/Spline.h" 29 | #include "src/Splines/SplineFitting.h" 30 | 31 | #endif // EIGEN_SPLINES_MODULE_H 32 | -------------------------------------------------------------------------------- /eigenlib/unsupported/Eigen/src/EulerAngles/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | FILE(GLOB Eigen_EulerAngles_SRCS "*.h") 2 | 3 | INSTALL(FILES 4 | ${Eigen_EulerAngles_SRCS} 5 | DESTINATION ${INCLUDE_INSTALL_DIR}/unsupported/Eigen/src/EulerAngles COMPONENT Devel 6 | ) 7 | -------------------------------------------------------------------------------- /eigenlib/unsupported/Eigen/src/NonLinearOptimization/r1mpyq.h: -------------------------------------------------------------------------------- 1 | namespace Eigen { 2 | 3 | namespace internal { 4 | 5 | // TODO : move this to GivensQR once there's such a thing in Eigen 6 | 7 | template 8 | void r1mpyq(DenseIndex m, DenseIndex n, Scalar *a, const std::vector > &v_givens, const std::vector > &w_givens) 9 | { 10 | typedef DenseIndex Index; 11 | 12 | /* apply the first set of givens rotations to a. */ 13 | for (Index j = n-2; j>=0; --j) 14 | for (Index i = 0; i 6 | void rwupdt( 7 | Matrix< Scalar, Dynamic, Dynamic > &r, 8 | const Matrix< Scalar, Dynamic, 1> &w, 9 | Matrix< Scalar, Dynamic, 1> &b, 10 | Scalar alpha) 11 | { 12 | typedef DenseIndex Index; 13 | 14 | const Index n = r.cols(); 15 | eigen_assert(r.rows()>=n); 16 | std::vector > givens(n); 17 | 18 | /* Local variables */ 19 | Scalar temp, rowj; 20 | 21 | /* Function Body */ 22 | for (Index j = 0; j < n; ++j) { 23 | rowj = w[j]; 24 | 25 | /* apply the previous transformations to */ 26 | /* r(i,j), i=0,1,...,j-1, and to w(j). */ 27 | for (Index i = 0; i < j; ++i) { 28 | temp = givens[i].c() * r(i,j) + givens[i].s() * rowj; 29 | rowj = -givens[i].s() * r(i,j) + givens[i].c() * rowj; 30 | r(i,j) = temp; 31 | } 32 | 33 | /* determine a givens rotation which eliminates w(j). */ 34 | givens[j].makeGivens(-r(j,j), rowj); 35 | 36 | if (rowj == 0.) 37 | continue; // givens[j] is identity 38 | 39 | /* apply the current transformation to r(j,j), b(j), and alpha. */ 40 | r(j,j) = givens[j].c() * r(j,j) + givens[j].s() * rowj; 41 | temp = givens[j].c() * b[j] + givens[j].s() * alpha; 42 | alpha = -givens[j].s() * b[j] + givens[j].c() * alpha; 43 | b[j] = temp; 44 | } 45 | } 46 | 47 | } // end namespace internal 48 | 49 | } // end namespace Eigen 50 | -------------------------------------------------------------------------------- /img/img.h: -------------------------------------------------------------------------------- 1 | #ifndef IMG_INCLUDES_H_ 2 | #define IMG_INCLUDES_H_ 3 | /*! \file img.h 4 | \brief includes all img headers 5 | 6 | This header just includes every img module header. 7 | */ 8 | 9 | #include "img/img_base.h" 10 | #include "img_scalar.h" 11 | #include "img/img_image.h" 12 | #include "img_convert.h" 13 | #include "img_cs_base.h" 14 | #include "img_io.h" 15 | #include "img_info.h" 16 | #include "img_filter.h" 17 | 18 | #endif /*IMG_INCLUDES_H_*/ 19 | -------------------------------------------------------------------------------- /img/img_info.h: -------------------------------------------------------------------------------- 1 | #ifndef IMG_INFO_H_ 2 | #define IMG_INFO_H_ 3 | 4 | // functions that extrapolate information from read-only images 5 | 6 | namespace img { 7 | 8 | template 9 | inline ScalarType minValue(const Image &image) 10 | { 11 | assert(image.isValid()); 12 | if(Safe){ 13 | if(!image.isValid()) throw ImageException("Invalid image"); 14 | } 15 | ScalarType* array = image.dataValues(); 16 | int length =image.dataValuesSize(); 17 | 18 | ScalarType min = array[0]; 19 | for(int offset=0;offset array[offset]) 21 | min = array[offset]; 22 | return min; 23 | } 24 | 25 | template 26 | inline ScalarType maxValue(const Image &image) 27 | { 28 | assert(image.isValid()); 29 | if(Safe){ 30 | if(!image.isValid()) throw ImageException("Invalid image"); 31 | } 32 | ScalarType* array = image.dataValues(); 33 | int length =image.dataValuesSize(); 34 | 35 | ScalarType max = array[0]; 36 | for(int offset=0;offset 8 | class TetFuser { 9 | typedef typename TetraMesh::VertexType VertexType; 10 | typedef typename TetraMesh::TetraType TetraType; 11 | typedef typename TetraMesh::CoordType CoordType; 12 | typedef typename TetraMesh::ScalarType ScalarType; 13 | 14 | 15 | }; 16 | 17 | } 18 | } 19 | 20 | #endif -------------------------------------------------------------------------------- /vcg/space/colorspace.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cnr-isti-vclab/vcglib/88c881d8393929c8e09b9df765ce8582bf386499/vcg/space/colorspace.h -------------------------------------------------------------------------------- /wrap/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.13) 2 | 3 | project(VCGWrap) 4 | 5 | add_subdirectory(nanoply) 6 | -------------------------------------------------------------------------------- /wrap/embree/.vscode/c_cpp_properties.json: -------------------------------------------------------------------------------- 1 | { 2 | "configurations": [ 3 | { 4 | "name": "Linux", 5 | "includePath": [ 6 | "${workspaceFolder}/**" 7 | ], 8 | "defines": [], 9 | "compilerPath": "/usr/bin/clang-15", 10 | "cStandard": "c17", 11 | "cppStandard": "c++14", 12 | "intelliSenseMode": "linux-clang-x64" 13 | } 14 | ], 15 | "version": 4 16 | } -------------------------------------------------------------------------------- /wrap/embree/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "files.associations": { 3 | "array": "cpp", 4 | "atomic": "cpp", 5 | "bit": "cpp", 6 | "*.tcc": "cpp", 7 | "cctype": "cpp", 8 | "clocale": "cpp", 9 | "cmath": "cpp", 10 | "compare": "cpp", 11 | "concepts": "cpp", 12 | "cstdarg": "cpp", 13 | "cstddef": "cpp", 14 | "cstdint": "cpp", 15 | "cstdio": "cpp", 16 | "cstdlib": "cpp", 17 | "cwchar": "cpp", 18 | "cwctype": "cpp", 19 | "deque": "cpp", 20 | "string": "cpp", 21 | "unordered_map": "cpp", 22 | "vector": "cpp", 23 | "exception": "cpp", 24 | "algorithm": "cpp", 25 | "functional": "cpp", 26 | "iterator": "cpp", 27 | "memory": "cpp", 28 | "memory_resource": "cpp", 29 | "numeric": "cpp", 30 | "random": "cpp", 31 | "string_view": "cpp", 32 | "system_error": "cpp", 33 | "tuple": "cpp", 34 | "type_traits": "cpp", 35 | "utility": "cpp", 36 | "initializer_list": "cpp", 37 | "iosfwd": "cpp", 38 | "iostream": "cpp", 39 | "istream": "cpp", 40 | "limits": "cpp", 41 | "new": "cpp", 42 | "numbers": "cpp", 43 | "ostream": "cpp", 44 | "stdexcept": "cpp", 45 | "streambuf": "cpp", 46 | "typeinfo": "cpp" 47 | } 48 | } -------------------------------------------------------------------------------- /wrap/gcache/docs/css/prettify.css: -------------------------------------------------------------------------------- 1 | .str,.atv{color:#080} 2 | .kwd,.tag{color:#008} 3 | .com{color:#800} 4 | .typ,.atn,.dec{color:#606} 5 | .lit{color:#066} 6 | .pun{color:#660} 7 | .pln{color:#000} 8 | pre.prettyprint{padding:2px;border:1px solid #888} 9 | @media print{.str{color:#060} 10 | .kwd,.tag{color:#006;font-weight:bold} 11 | .com{color:#600;font-style:italic} 12 | .typ{font-weight:bold} 13 | .lit{color:#044} 14 | .pun{color:#440} 15 | .atn,.typ{color:#404} 16 | .atv{color:#060}} 17 | -------------------------------------------------------------------------------- /wrap/gcache/docs/img/architecture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cnr-isti-vclab/vcglib/88c881d8393929c8e09b9df765ce8582bf386499/wrap/gcache/docs/img/architecture.png -------------------------------------------------------------------------------- /wrap/gcache/docs/img/overflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cnr-isti-vclab/vcglib/88c881d8393929c8e09b9df765ce8582bf386499/wrap/gcache/docs/img/overflow.png -------------------------------------------------------------------------------- /wrap/gcache/docs/img/shadow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cnr-isti-vclab/vcglib/88c881d8393929c8e09b9df765ce8582bf386499/wrap/gcache/docs/img/shadow.png -------------------------------------------------------------------------------- /wrap/gcache/docs/js/prettify.css: -------------------------------------------------------------------------------- 1 | .str,.atv{color:#080} 2 | .kwd,.tag{color:#008} 3 | .com{color:#800} 4 | .typ,.atn,.dec{color:#606} 5 | .lit{color:#066} 6 | .pun{color:#660} 7 | .pln{color:#000} 8 | pre.prettyprint{padding:2px;border:1px solid #888} 9 | @media print{.str{color:#060} 10 | .kwd,.tag{color:#006;font-weight:bold} 11 | .com{color:#600;font-style:italic} 12 | .typ{font-weight:bold} 13 | .lit{color:#044} 14 | .pun{color:#440} 15 | .atn,.typ{color:#404} 16 | .atv{color:#060}} 17 | -------------------------------------------------------------------------------- /wrap/gl/splatting_apss/splatrenderer.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | shaders/Raycasting.glsl 4 | shaders/Finalization.glsl 5 | 6 | 7 | -------------------------------------------------------------------------------- /wrap/glw/common.h: -------------------------------------------------------------------------------- 1 | #ifndef GLW_COMMON_H 2 | #define GLW_COMMON_H 3 | 4 | #include 5 | 6 | #include "./config.h" 7 | 8 | #define GLW_DONT_CARE (0xFFFFFFFF) 9 | #define GLW_CARE_OF(X) ((X) != GLW_DONT_CARE) 10 | 11 | #define GLW_CHECK_GL_ERROR GLW_ASSERT(glGetError() == GL_NO_ERROR) 12 | #define GLW_CHECK_GL_READ_FRAMEBUFFER_STATUS GLW_ASSERT(glCheckFramebufferStatus(GL_READ_FRAMEBUFFER) == GL_FRAMEBUFFER_COMPLETE) 13 | #define GLW_CHECK_GL_DRAW_FRAMEBUFFER_STATUS GLW_ASSERT(glCheckFramebufferStatus(GL_DRAW_FRAMEBUFFER) == GL_FRAMEBUFFER_COMPLETE) 14 | #define GLW_CHECK_GL_READ_DRAW_FRAMEBUFFER_STATUS GLW_ASSERT(glCheckFramebufferStatus(GL_FRAMEBUFFER) == GL_FRAMEBUFFER_COMPLETE) 15 | 16 | namespace glw 17 | { 18 | 19 | namespace detail 20 | { 21 | 22 | } 23 | 24 | }; 25 | 26 | #endif // GLW_COMMON_H 27 | -------------------------------------------------------------------------------- /wrap/glw/config.h: -------------------------------------------------------------------------------- 1 | #ifndef GLW_CONFIG_H 2 | #define GLW_CONFIG_H 3 | 4 | #ifndef GLW_ASSERT 5 | # define GLW_ASSERT assert 6 | #endif 7 | 8 | #ifndef GLW_IMPLEMENT_CUSTOM_UNIFORMS 9 | # define GLW_IMPLEMENT_CUSTOM_UNIFORMS 10 | #endif 11 | 12 | #ifndef GLW_PRINT_LOG_TO_STDERR 13 | # define GLW_PRINT_LOG_TO_STDERR 1 14 | #endif 15 | 16 | #ifndef GLW_ASSERT_UNIFORM_LOCATION 17 | # define GLW_ASSERT_UNIFORM_LOCATION 0 18 | #endif 19 | 20 | #endif // GLW_CONFIG_H 21 | -------------------------------------------------------------------------------- /wrap/glw/glheaders.h: -------------------------------------------------------------------------------- 1 | #ifndef GLW_GLHEADERS_H 2 | #define GLW_GLHEADERS_H 3 | 4 | #include 5 | 6 | #endif // GLW_GLHEADERS_H 7 | -------------------------------------------------------------------------------- /wrap/glw/glw.h: -------------------------------------------------------------------------------- 1 | #ifndef GLW_GLW_H 2 | #define GLW_GLW_H 3 | 4 | #include "./context.h" 5 | #include "./utility.h" 6 | 7 | #endif // GLW_GLW_H 8 | -------------------------------------------------------------------------------- /wrap/glw/noncopyable.h: -------------------------------------------------------------------------------- 1 | #ifndef GLW_NONCOPYABLE_H 2 | #define GLW_NONCOPYABLE_H 3 | 4 | #include "./common.h" 5 | 6 | namespace glw 7 | { 8 | 9 | namespace detail 10 | { 11 | 12 | class NonCopyable 13 | { 14 | public: 15 | 16 | typedef void BaseType; 17 | typedef NonCopyable ThisType; 18 | 19 | NonCopyable(void) 20 | { 21 | ; 22 | } 23 | 24 | private: 25 | 26 | NonCopyable(const ThisType & that) 27 | { 28 | (void)that; 29 | } 30 | 31 | ThisType & operator = (const ThisType & that) 32 | { 33 | (void)that; 34 | return (*this); 35 | } 36 | }; 37 | 38 | }; 39 | 40 | }; 41 | 42 | #endif // GLW_NONCOPYABLE_H 43 | -------------------------------------------------------------------------------- /wrap/glw/objectdeleter.h: -------------------------------------------------------------------------------- 1 | #ifndef GLW_OBJECTDELETER_H 2 | #define GLW_OBJECTDELETER_H 3 | 4 | #include "./common.h" 5 | 6 | namespace glw 7 | { 8 | 9 | class Object; 10 | 11 | namespace detail 12 | { 13 | 14 | class ObjectDeleter 15 | { 16 | public: 17 | 18 | typedef void BaseType; 19 | typedef ObjectDeleter ThisType; 20 | 21 | inline void operator () (Object * object) const; 22 | }; 23 | 24 | }; 25 | 26 | }; 27 | 28 | #endif // GLW_OBJECTDELETER_H 29 | -------------------------------------------------------------------------------- /wrap/glw/type.h: -------------------------------------------------------------------------------- 1 | #ifndef GLW_TYPE_H 2 | #define GLW_TYPE_H 3 | 4 | #include "./common.h" 5 | 6 | namespace glw 7 | { 8 | 9 | enum Type 10 | { 11 | InvalidType = 0, 12 | BufferType, 13 | RenderbufferType, 14 | VertexShaderType, 15 | GeometryShaderType, 16 | FragmentShaderType, 17 | ProgramType, 18 | Texture2DType, 19 | TextureCubeType, 20 | FramebufferType 21 | }; 22 | 23 | }; 24 | 25 | #endif // GLW_TYPE_H 26 | -------------------------------------------------------------------------------- /wrap/igl/sample/trimesh_field_smoothing/trimesh_field_smoothing.pro: -------------------------------------------------------------------------------- 1 | DEPENDPATH += . ../../../../.. 2 | INCLUDEPATH += . ../../../.. ../../../../eigenlib 3 | 4 | CONFIG += console c++11 5 | TEMPLATE = app 6 | # Mac specific Config required to avoid to make application bundles 7 | CONFIG -= app_bundle 8 | 9 | QMAKE_CXXFLAGS += -std=c++11 10 | TARGET = trimesh_field_smoothing 11 | SOURCES += trimesh_field_smoothing.cpp ../../../ply/plylib.cpp 12 | -------------------------------------------------------------------------------- /wrap/io_trimesh/precision.h: -------------------------------------------------------------------------------- 1 | #ifndef __VCGLIB_PRECISION 2 | #define __VCGLIB_PRECISION 3 | 4 | namespace vcg 5 | { 6 | namespace tri 7 | { 8 | namespace io 9 | { 10 | template 11 | struct Precision 12 | { 13 | static int digits() {return 0;} 14 | static const char* typeName() {return "";} 15 | }; 16 | 17 | template<> 18 | struct Precision 19 | { 20 | static int digits() {return 7;} 21 | static const char* typeName() {return "float";} 22 | 23 | }; 24 | 25 | template<> 26 | struct Precision 27 | { 28 | static int digits() {return 16;} 29 | static const char* typeName() {return "double";} 30 | }; 31 | } 32 | } 33 | } 34 | 35 | 36 | #endif 37 | -------------------------------------------------------------------------------- /wrap/math/sparse_matrix.h: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | 5 | 6 | ///this class define the interface to use sparse matrix 7 | ///you must extend this class and implement the code of each function in order 8 | ///to the system solver you're using. 9 | ///For details on implementation see system_interface_LDL.h as example 10 | template 11 | class SparseMatrix{ 12 | 13 | public: 14 | 15 | std::vector _Ap; 16 | std::vector _Ai; 17 | std::vector _Ax; 18 | 19 | typedef typename std::pair IndexType; 20 | 21 | int _dimension; 22 | 23 | public: 24 | 25 | ///initilaization of the system 26 | virtual void Initalize(int dimension) 27 | {_dimension=dimension;} 28 | 29 | ///create a sparse matrix given a set of entries as vector 30 | ///of pair of int 31 | virtual void CreateSparse(std::vector Entries) 32 | {} 33 | 34 | ///return the value of the matrix 35 | virtual ScalarType &A(int row,int col) 36 | {return (_Ax[0]);} 37 | 38 | ///return true if the represention of sparse matriz is symmetric 39 | virtual bool IsSymmetric() 40 | {return false;} 41 | 42 | virtual void Zero() 43 | {} 44 | 45 | ///return the dimension of the matrix 46 | virtual int Size(){return _dimension;} 47 | 48 | }; 49 | -------------------------------------------------------------------------------- /wrap/nanoply/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.13) 2 | project(VCGNanoplyExamples) 3 | 4 | add_subdirectory(nanoply_demo) 5 | add_subdirectory(nanoply_vcg) 6 | -------------------------------------------------------------------------------- /wrap/nanoply/docs/index.dxy: -------------------------------------------------------------------------------- 1 | 2 | /** \mainpage The NanoPLY Library 3 | The NanoPLY is a C++ header-only library to read and write PLY file. It allow to load and save polygonal meshes and point clouds. 4 | 5 | NanoPLY does not require compiling or installing, just an #include in your code. 6 | 7 | 8 | Examples 9 | ---------------- 10 | The following code shows how to open and save a Ply file using a custom definition of mesh. 11 | 12 | \include nanoply_demo/main.cpp 13 | 14 | 15 | The following code shows how to open and save a Ply file using a VCGLib mesh. 16 | 17 | \include nanoply_vcg/main.cpp 18 | 19 | 20 | */ 21 | -------------------------------------------------------------------------------- /wrap/nanoply/nanoply_demo/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.13) 2 | project(nanoply_demo) 3 | 4 | if (VCG_HEADER_ONLY) 5 | set(SOURCES 6 | main.cpp) 7 | endif() 8 | 9 | add_executable(nanoply_demo 10 | ${SOURCES}) 11 | 12 | target_link_libraries( 13 | nanoply_demo 14 | PUBLIC 15 | vcglib 16 | ) 17 | -------------------------------------------------------------------------------- /wrap/nanoply/nanoply_demo/nanoply_demo.pro: -------------------------------------------------------------------------------- 1 | DEPENDPATH += ../include 2 | INCLUDEPATH += ../include 3 | CONFIG += stl cmdline c++11 4 | CONFIG -= qt 5 | TEMPLATE = app 6 | SOURCES += main.cpp 7 | 8 | # Mac specific Config required to avoid to make application bundles 9 | CONFIG -= app_bundle 10 | -------------------------------------------------------------------------------- /wrap/nanoply/nanoply_vcg/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.13) 2 | 3 | if ("cxx_std_17" IN_LIST CMAKE_CXX_COMPILE_FEATURES) 4 | 5 | project(nanoply_vcg) 6 | 7 | if (MSVC) 8 | add_compile_options(/bigobj) 9 | endif() 10 | 11 | if (VCG_HEADER_ONLY) 12 | set(SOURCES 13 | main.cpp) 14 | endif() 15 | 16 | add_executable(nanoply_vcg 17 | ${SOURCES}) 18 | target_compile_features(nanoply_vcg PRIVATE cxx_std_17) 19 | 20 | target_link_libraries( 21 | nanoply_vcg 22 | PUBLIC 23 | vcglib 24 | ) 25 | 26 | endif() 27 | -------------------------------------------------------------------------------- /wrap/nanoply/nanoply_vcg/nanoply_vcg.pro: -------------------------------------------------------------------------------- 1 | INCLUDEPATH += ../../../ ../../../eigenlib 2 | CONFIG += console stl c++17 3 | CONFIG += qt 4 | TEMPLATE = app 5 | SOURCES += main.cpp 6 | QT += core 7 | 8 | # Mac specific Config required to avoid to make application bundles 9 | CONFIG -= app_bundle 10 | -------------------------------------------------------------------------------- /wrap/openfbx/.gitignore: -------------------------------------------------------------------------------- 1 | # Prerequisites 2 | *.d 3 | 4 | # Compiled Object files 5 | *.slo 6 | *.lo 7 | *.o 8 | *.obj 9 | 10 | # Precompiled Headers 11 | *.gch 12 | *.pch 13 | 14 | # Compiled Dynamic libraries 15 | *.so 16 | *.dylib 17 | *.dll 18 | 19 | # Fortran module files 20 | *.mod 21 | *.smod 22 | 23 | # Compiled Static libraries 24 | *.lai 25 | *.la 26 | *.a 27 | *.lib 28 | 29 | projects/tmp/* 30 | 31 | # Executables 32 | *.out 33 | *.app 34 | 35 | runtime/imgui.ini -------------------------------------------------------------------------------- /wrap/openfbx/LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 Mikulas Florek 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /wrap/openfbx/README.md: -------------------------------------------------------------------------------- 1 | [![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/nem0/LumixEngine?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) 2 | [![License](http://img.shields.io/:license-mit-blue.svg)](http://doge.mit-license.org) 3 | 4 | # OpenFBX 5 | 6 | Lightweight open source FBX importer. Used in [Lumix Engine](https://github.com/nem0/lumixengine). It's not a full-featured importer, but it suits all my needs. It can load geometry (with uvs, normals, tangents, colors), skeletons, animations, materials and textures. 7 | 8 | Feel free to request new features. I will eventually try to add all missing fbx features. 9 | 10 | ## Use the library in your own project 11 | 12 | Note: It's recommended to be familiar with fbx format to use this library, you can read about it more [here](http://help.autodesk.com/view/FBX/2017/ENU/?guid=__files_GUID_F194000D_5AD4_49C1_86CC_5DAC2CE64E97_htm). 13 | 14 | 1. add files from src to your project 15 | 2. use 16 | 17 | See [demo](https://github.com/nem0/OpenFBX/blob/master/demo/main.cpp#L203) as an example how to use the library. 18 | See [Lumix Engine](https://github.com/nem0/LumixEngine/blob/master/src/renderer/editor/import_asset_dialog.cpp#L504) as more advanced use case. 19 | 20 | ## Compile demo project 21 | 22 | 1. download source code 23 | 2. execute [projects/genie_vs15.bat](https://github.com/nem0/OpenFBX/blob/master/projects/genie_vs15.bat) 24 | 3. open projects/tmp/vs2015/OpenFBX.sln in Visual Studio 2015 25 | 4. compile and run 26 | 27 | Demo is windows only. Library is multiplatform. 28 | 29 | ![ofbx](https://user-images.githubusercontent.com/153526/27876079-eea3c872-61b5-11e7-9fce-3a7c558fb0d2.png) 30 | -------------------------------------------------------------------------------- /wrap/qt/anttweakbarMapper.h: -------------------------------------------------------------------------------- 1 | #ifndef ANTTWEAKBARMAPPER_H 2 | #define ANTTWEAKBARMAPPER_H 3 | 4 | #include 5 | #include 6 | #include 7 | 8 | void TW_CALL CopyCDStringToClient(char **destPtr, const char *src); 9 | void TW_CALL CopyStdStringToClient(std::string& destClientString, const std::string& srcLibraryString); 10 | 11 | TwMouseButtonID Qt2TwMouseButtonId(QMouseEvent *e); 12 | int TwMousePressQt(QMouseEvent *e); 13 | int TwMouseReleaseQt(QMouseEvent *e); 14 | int TwMousePressQt(QWidget *qw, QMouseEvent *e); 15 | int TwMouseReleaseQt(QWidget *qw, QMouseEvent *e); 16 | int TwKeyPressQt(QKeyEvent *e); 17 | 18 | #endif // ANTTWEAKBARMAPPER_H 19 | -------------------------------------------------------------------------------- /wrap/qt/col_qt_convert.h: -------------------------------------------------------------------------------- 1 | #ifndef COL_QT_CONVERT_H_ 2 | #define COL_QT_CONVERT_H_ 3 | 4 | #include 5 | #include "../../vcg/space/color4.h" 6 | 7 | namespace vcg 8 | { 9 | class ColorConverter 10 | { 11 | public: 12 | inline static vcg::Color4b ToColor4b(const QColor& col) 13 | { 14 | return vcg::Color4b(col.red(),col.green(),col.blue(),col.alpha()); 15 | } 16 | 17 | inline static QColor ToQColor(const vcg::Color4b& col) 18 | { 19 | return QColor(col[0],col[1],col[2],col[3]); 20 | } 21 | }; 22 | } 23 | 24 | #endif -------------------------------------------------------------------------------- /wrap/qt/device_to_logical.h: -------------------------------------------------------------------------------- 1 | #ifndef DEVICE_TO_LOGICAL_H 2 | #define DEVICE_TO_LOGICAL_H 3 | #include 4 | #include 5 | #include 6 | 7 | template < class ValueType> 8 | inline ValueType QTLogicalToDevice( QWidget *qw, const ValueType &value) 9 | { 10 | #if QT_VERSION >= 0x050000 11 | return value*qw->devicePixelRatio() ; 12 | #else 13 | Q_UNUSED(qw); 14 | return value; 15 | #endif 16 | } 17 | 18 | template < class ValueType> 19 | inline ValueType QTLogicalToDevice( QPainter *qp, const ValueType &value) 20 | { 21 | #if QT_VERSION >= 0x050000 22 | return value*qp->device()->devicePixelRatio() ; 23 | #else 24 | Q_UNUSED(qp); 25 | return value; 26 | #endif 27 | } 28 | 29 | template < class ValueType> 30 | inline ValueType QTDeviceToLogical( QWidget *qw, const ValueType &value) 31 | { 32 | #if QT_VERSION >= 0x050000 33 | return value/qw->devicePixelRatio() ; 34 | #else 35 | Q_UNUSED(qw); 36 | return value; 37 | #endif 38 | } 39 | 40 | template < class ValueType> 41 | inline ValueType QTDeviceToLogical( QPainter *qp, const ValueType &value) 42 | { 43 | #if QT_VERSION >= 0x050000 44 | return value/qp->device()->devicePixelRatio() ; 45 | #else 46 | Q_UNUSED(qp); 47 | return value; 48 | #endif 49 | } 50 | 51 | inline vcg::Point2f QTLogicalToOpenGL( QWidget *qw, const QPoint &p) 52 | { 53 | return vcg::Point2f(QTLogicalToDevice(qw,p.x()), QTLogicalToDevice(qw,qw->height()-p.y())); 54 | } 55 | 56 | 57 | inline int QTDeviceHeight(QWidget *qw) {return QTLogicalToDevice(qw,qw->height());} 58 | inline int QTDeviceWidth(QWidget *qw) {return QTLogicalToDevice(qw,qw->width());} 59 | #endif // DEVICE_TO_LOGICAL_H 60 | -------------------------------------------------------------------------------- /wrap/qt/img_qt.h: -------------------------------------------------------------------------------- 1 | #ifndef IMG_QT_INCLUDES_H_ 2 | #define IMG_QT_INCLUDES_H_ 3 | 4 | // includes all img and all qt wrap headers 5 | 6 | #include "img/img.h" 7 | 8 | #include "wrap/qt/img_qt_convert.h" 9 | #include "wrap/qt/img_qt_io.h" 10 | 11 | #endif /*IMG_QT_INCLUDES_H_*/ 12 | -------------------------------------------------------------------------------- /wrap/qt/outline2_rasterizer.h: -------------------------------------------------------------------------------- 1 | #ifndef QTPOLYRASTERIZER_H 2 | #define QTPOLYRASTERIZER_H 3 | 4 | #include 5 | //#include 6 | #include 7 | #include 8 | #include 9 | #include 10 | #include 11 | #include 12 | 13 | ///this class is used to draw polygons on an image could be vectorial or not 14 | class QtOutline2Rasterizer 15 | { 16 | public: 17 | static void rasterize(vcg::RasterizedOutline2 &poly, 18 | float scaleFactor, 19 | int rast_i, int rotationNum, int gutterWidth); 20 | 21 | static std::vector > rotateGridCWise(std::vector< std::vector >& inGrid); 22 | }; 23 | #endif // QTPOLYRASTERIZER_H 24 | -------------------------------------------------------------------------------- /wrap/qt/to_string.h: -------------------------------------------------------------------------------- 1 | #ifndef TOSTRING_H 2 | #define TOSTRING_H 3 | #include 4 | #include 5 | 6 | inline QString toString( const vcg::Point4f& p ){ 7 | QString s; 8 | s.sprintf("%f %f %f %f", p[0], p[1], p[2], p[3]); 9 | return s; 10 | } 11 | inline QString toString( const vcg::Point3f& p ){ 12 | QString s; 13 | s.sprintf("%f %f %f", p[0], p[1], p[2]); 14 | return s; 15 | } 16 | inline QString toString( const vcg::Point2f& p ){ 17 | QString s; 18 | s.sprintf("%f %f", p[0], p[1]); 19 | return s; 20 | } 21 | inline QString toString( const vcg::Point2i& p ){ 22 | QString s; 23 | s.sprintf("%d %d", p[0], p[1]); 24 | return s; 25 | } 26 | inline QString toString(vcg::Matrix44f& m){ 27 | QString mat; 28 | for(int i=0; i<3; i++){ 29 | mat.append( toString( m.GetRow4(i) ) ); 30 | mat.append("\n"); 31 | } 32 | return mat; 33 | } 34 | #endif // TOSTRING_H 35 | -------------------------------------------------------------------------------- /wrap/system/multithreading/atomic_int.h: -------------------------------------------------------------------------------- 1 | #ifndef _ATOMIC_INT_H 2 | #define _ATOMIC_INT_H 3 | 4 | #ifdef QT_CORE_LIB 5 | #include 6 | namespace mt{ 7 | typedef QAtomicInt atomicInt; 8 | } 9 | 10 | #elif defined(__APPLE__) 11 | # include "atomic_int_apple.h" 12 | 13 | 14 | //generic implementation using mutexes 15 | #else 16 | # include "atomic_int_generic.h" 17 | #endif 18 | 19 | /* 20 | #elif defined(_WIN32) 21 | # include "atomic_int_win32.h" 22 | #endif 23 | 24 | #elif defined(__linux__) 25 | # include "atomic_int_linux.h" 26 | #endif 27 | */ 28 | /* 29 | __linux__ 30 | __unix__ 31 | __posix__ 32 | */ 33 | 34 | #endif // _ATOMIC_INT_H 35 | 36 | -------------------------------------------------------------------------------- /wrap/system/multithreading/base.h: -------------------------------------------------------------------------------- 1 | #ifndef MT_BASE_H 2 | #define MT_BASE_H 3 | 4 | #include 5 | 6 | #define MT_PREVENT_COPY(CLASS_NAME) \ 7 | private: \ 8 | CLASS_NAME (const CLASS_NAME &); \ 9 | CLASS_NAME & operator = (const CLASS_NAME &); 10 | 11 | #define MT_ASSERT assert 12 | 13 | namespace mt 14 | { 15 | 16 | } 17 | 18 | #endif // MT_BASE_H 19 | -------------------------------------------------------------------------------- /wrap/system/multithreading/condition.h: -------------------------------------------------------------------------------- 1 | #ifndef MT_CONDITION_H 2 | #define MT_CONDITION_H 3 | 4 | #include "base.h" 5 | #include "mutex.h" 6 | 7 | #include 8 | 9 | namespace mt 10 | { 11 | 12 | class condition 13 | { 14 | MT_PREVENT_COPY(condition) 15 | 16 | public: 17 | 18 | typedef condition this_type; 19 | typedef void base_type; 20 | 21 | condition(void) 22 | { 23 | pthread_cond_init(&(this->c), 0); 24 | } 25 | 26 | ~condition(void) 27 | { 28 | pthread_cond_destroy(&(this->c)); 29 | } 30 | 31 | void signal(void) 32 | { 33 | pthread_cond_signal(&(this->c)); 34 | } 35 | 36 | void broadcast(void) 37 | { 38 | pthread_cond_broadcast(&(this->c)); 39 | } 40 | 41 | void wait(mutex & m) 42 | { 43 | pthread_cond_wait(&(this->c), &(m.m)); 44 | } 45 | 46 | private: 47 | 48 | pthread_cond_t c; 49 | }; 50 | 51 | } 52 | 53 | #endif // MT_CONDITION_H 54 | -------------------------------------------------------------------------------- /wrap/system/multithreading/mt.h: -------------------------------------------------------------------------------- 1 | #ifndef MT_MT_H 2 | #define MT_MT_H 3 | 4 | 5 | #ifdef QT_CORE_LIB 6 | 7 | #include 8 | #include 9 | #include 10 | 11 | namespace mt { 12 | typedef QThread thread; 13 | typedef QMutex mutex; 14 | typedef QMutexLocker mutexlocker; 15 | typedef QSemaphore semaphore; 16 | 17 | //cache.h, token.h 18 | //QAtomicInt 19 | 20 | }//namespace 21 | 22 | 23 | #else 24 | 25 | #include "base.h" 26 | #include "mutex.h" 27 | #include "rw_lock.h" 28 | #include "semaphore.h" 29 | #include "thread.h" 30 | #include "scoped_mutex_lock.h" 31 | #include "scoped_read_lock.h" 32 | #include "scoped_write_lock.h" 33 | 34 | namespace mt{ 35 | typedef scoped_mutex_lock mutexlocker; 36 | } 37 | #endif 38 | 39 | #endif // MT_MT_H 40 | -------------------------------------------------------------------------------- /wrap/system/multithreading/mutex.h: -------------------------------------------------------------------------------- 1 | #ifndef MT_MUTEX_H 2 | #define MT_MUTEX_H 3 | 4 | #include "base.h" 5 | 6 | #include 7 | 8 | namespace mt 9 | { 10 | 11 | class condition; 12 | 13 | class mutex 14 | { 15 | MT_PREVENT_COPY(mutex) 16 | 17 | public: 18 | 19 | typedef mutex this_type; 20 | typedef void base_type; 21 | 22 | mutex(void) 23 | { 24 | pthread_mutex_init(&(this->m), 0); 25 | } 26 | 27 | ~mutex(void) 28 | { 29 | pthread_mutex_destroy(&(this->m)); 30 | } 31 | 32 | void lock(void) 33 | { 34 | pthread_mutex_lock(&(this->m)); 35 | } 36 | 37 | void unlock(void) 38 | { 39 | pthread_mutex_unlock(&(this->m)); 40 | } 41 | bool tryLock(void) 42 | { 43 | int a = pthread_mutex_trylock(&(this->m)); 44 | return a == 0; 45 | } 46 | 47 | private: 48 | 49 | friend class condition; 50 | 51 | pthread_mutex_t m; 52 | }; 53 | 54 | } 55 | 56 | #endif // MT_MUTEX_H 57 | -------------------------------------------------------------------------------- /wrap/system/multithreading/rw_lock.h: -------------------------------------------------------------------------------- 1 | #ifndef MT_RW_LOCK_H 2 | #define MT_RW_LOCK_H 3 | 4 | #include "base.h" 5 | 6 | #include 7 | 8 | namespace mt 9 | { 10 | 11 | class rw_lock 12 | { 13 | MT_PREVENT_COPY(rw_lock) 14 | 15 | public: 16 | 17 | typedef rw_lock this_type; 18 | typedef void base_type; 19 | 20 | rw_lock(void) 21 | { 22 | pthread_rwlock_init(&(this->rw), 0); 23 | } 24 | 25 | ~rw_lock(void) 26 | { 27 | pthread_rwlock_destroy(&(this->rw)); 28 | } 29 | 30 | void lock_read(void) 31 | { 32 | pthread_rwlock_rdlock(&(this->rw)); 33 | } 34 | 35 | void unlock_read(void) 36 | { 37 | pthread_rwlock_unlock(&(this->rw)); 38 | } 39 | 40 | void lock_write(void) 41 | { 42 | pthread_rwlock_wrlock(&(this->rw)); 43 | } 44 | 45 | void unlock_write(void) 46 | { 47 | pthread_rwlock_unlock(&(this->rw)); 48 | } 49 | 50 | private: 51 | 52 | pthread_rwlock_t rw; 53 | }; 54 | 55 | } 56 | 57 | #endif // MT_RW_LOCK_H 58 | -------------------------------------------------------------------------------- /wrap/system/multithreading/scoped_read_lock.h: -------------------------------------------------------------------------------- 1 | #ifndef MT_SCOPED_READ_LOCK_H 2 | #define MT_SCOPED_READ_LOCK_H 3 | 4 | #include "rw_lock.h" 5 | 6 | namespace mt 7 | { 8 | 9 | class scoped_read_lock 10 | { 11 | MT_PREVENT_COPY(scoped_read_lock) 12 | 13 | public: 14 | 15 | typedef scoped_read_lock this_type; 16 | typedef void base_type; 17 | 18 | scoped_read_lock(rw_lock & rwl) : rw(rwl) 19 | { 20 | this->rw.lock_read(); 21 | } 22 | 23 | ~scoped_read_lock(void) 24 | { 25 | this->rw.unlock_read(); 26 | } 27 | 28 | protected: 29 | 30 | rw_lock & rw; 31 | }; 32 | 33 | } 34 | 35 | #endif // MT_SCOPED_READ_LOCK_H 36 | -------------------------------------------------------------------------------- /wrap/system/multithreading/scoped_write_lock.h: -------------------------------------------------------------------------------- 1 | #ifndef MT_SCOPED_WRITE_LOCK_H 2 | #define MT_SCOPED_WRITE_LOCK_H 3 | 4 | #include "rw_lock.h" 5 | 6 | namespace mt 7 | { 8 | 9 | class scoped_write_lock 10 | { 11 | MT_PREVENT_COPY(scoped_write_lock) 12 | 13 | public: 14 | 15 | typedef scoped_write_lock this_type; 16 | typedef void base_type; 17 | 18 | scoped_write_lock(rw_lock & rwl) : rw(rwl) 19 | { 20 | this->rw.lock_write(); 21 | } 22 | 23 | ~scoped_write_lock(void) 24 | { 25 | this->rw.unlock_write(); 26 | } 27 | 28 | protected: 29 | 30 | rw_lock & rw; 31 | }; 32 | 33 | } 34 | 35 | #endif // MT_SCOPED_WRITE_LOCK_H 36 | -------------------------------------------------------------------------------- /wrap/system/multithreading/util.h: -------------------------------------------------------------------------------- 1 | #ifndef MT_UTIL_H 2 | #define MT_UTIL_H 3 | 4 | #if (defined(_MSC_VER)) 5 | #include 6 | #elif (defined(__MINGW32__)) 7 | #include 8 | #elif (defined(__linux__)) 9 | #include 10 | #else 11 | #include 12 | //#error "mt utils.h : unrecognized environment." 13 | #endif 14 | 15 | namespace mt 16 | { 17 | 18 | inline void sleep_ms(unsigned int msecs) 19 | { 20 | #if (defined(_MSC_VER)) 21 | Sleep(DWORD(msecs)); 22 | #elif (defined(__MINGW32__)) 23 | Sleep(DWORD(msecs)); 24 | #elif (defined(__linux__)) 25 | const unsigned int secs = ((unsigned int)(msecs / 1000)); 26 | const unsigned long usecs = ((unsigned long)((msecs % 1000) * 1000)); 27 | 28 | sleep(secs); 29 | usleep(usecs); 30 | #else 31 | const unsigned int secs = ((unsigned int)(msecs / 1000)); 32 | const unsigned long usecs = ((unsigned long)((msecs % 1000) * 1000)); 33 | 34 | sleep(secs); 35 | usleep(usecs); 36 | #endif 37 | } 38 | 39 | } 40 | 41 | #endif // MT_UTIL_H 42 | --------------------------------------------------------------------------------