Loading CMakeLists.txt +1 −0 Original line number Diff line number Diff line Loading @@ -122,6 +122,7 @@ target_link_libraries(${PROJECT_NAME} geogram::geogram spdlog::spdlog Threads::Threads fast_winding_number ) if(FLOAT_TETWILD_ENABLE_TBB) target_link_libraries(${PROJECT_NAME} PUBLIC tbb::tbb) Loading cmake/FloatTetwildDependencies.cmake +27 −0 Original line number Diff line number Diff line Loading @@ -54,6 +54,7 @@ if(NOT TARGET geogram::geogram) include(geogram) endif() # TBB if(FLOAT_TETWILD_ENABLE_TBB AND NOT TARGET tbb::tbb) float_tetwild_download_tbb() Loading @@ -80,3 +81,29 @@ endif() # C++11 threads find_package(Threads REQUIRED) # winding number float_tetwild_download_windingnumber() set(windingnumber_SOURCES ${FLOAT_TETWILD_EXTERNAL}/windingnumber/SYS_Math.h ${FLOAT_TETWILD_EXTERNAL}/windingnumber/SYS_Types.h ${FLOAT_TETWILD_EXTERNAL}/windingnumber/UT_Array.cpp ${FLOAT_TETWILD_EXTERNAL}/windingnumber/UT_Array.h ${FLOAT_TETWILD_EXTERNAL}/windingnumber/UT_ArrayImpl.h ${FLOAT_TETWILD_EXTERNAL}/windingnumber/UT_BVH.h ${FLOAT_TETWILD_EXTERNAL}/windingnumber/UT_BVHImpl.h ${FLOAT_TETWILD_EXTERNAL}/windingnumber/UT_FixedVector.h ${FLOAT_TETWILD_EXTERNAL}/windingnumber/UT_ParallelUtil.h ${FLOAT_TETWILD_EXTERNAL}/windingnumber/UT_SmallArray.h ${FLOAT_TETWILD_EXTERNAL}/windingnumber/UT_SolidAngle.cpp ${FLOAT_TETWILD_EXTERNAL}/windingnumber/UT_SolidAngle.h ${FLOAT_TETWILD_EXTERNAL}/windingnumber/VM_SIMD.h ${FLOAT_TETWILD_EXTERNAL}/windingnumber/VM_SSEFunc.h ) add_library(fast_winding_number ${windingnumber_SOURCES}) target_link_libraries(fast_winding_number PRIVATE tbb::tbb) target_compile_features(fast_winding_number PRIVATE ${CXX17_FEATURES}) target_include_directories(fast_winding_number PUBLIC "${FLOAT_TETWILD_EXTERNAL}/") cmake/FloatTetwildDownloadExternal.cmake +8 −0 Original line number Diff line number Diff line Loading @@ -103,3 +103,11 @@ function(float_tetwild_download_aabbcc) GIT_TAG 0c85e61362d384d70c71946826bfed0fb24a74ba ) endfunction() ## winding number function(float_tetwild_download_windingnumber) float_tetwild_download_project(windingnumber GIT_REPOSITORY https://github.com/alecjacobson/WindingNumber.git GIT_TAG 1e6081e52905575d8e98fb8b7c0921274a18752f ) endfunction() src/external/CMakeLists.txt +3 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,9 @@ set(SOURCES bfs_orient.h bfs_orient.cpp FastWindingNumber.hpp FastWindingNumber.cpp ) prepend_current_path(SOURCES) Loading src/external/FastWindingNumber.cpp 0 → 100644 +42 −0 Original line number Diff line number Diff line #include <floattetwild/FastWindingNumber.hpp> #include <igl/parallel_for.h> #include <windingnumber/UT_SolidAngle.h> #include <cstdlib> namespace floatTetWild { void fast_winding_number(const Eigen::MatrixXd &V, const Eigen::MatrixXi &F, const Eigen::MatrixXd &P, Eigen::VectorXd &W) { Eigen::Matrix<int,Eigen::Dynamic,3,Eigen::RowMajor> F_copy = F; HDK_Sample::UT_SolidAngle<float,float> solid_angle; int order = 2; double accuracy_scale = 2.0; std::vector<HDK_Sample::UT_Vector3T<float> > U(V.rows()); for(int i = 0;i<V.rows();i++) { for(int j = 0;j<3;j++){ U[i][j] = V(i,j); } } solid_angle.init(F_copy.rows(), F_copy.data(), V.rows(), &U[0], order); W.resize(P.rows()); //for(int p = 0;p<P.rows();p++) igl::parallel_for(P.rows(),[&](int p) { HDK_Sample::UT_Vector3T<float>Pp; Pp[0] = P(p,0); Pp[1] = P(p,1); Pp[2] = P(p,2); W(p) = solid_angle.computeSolidAngle(Pp, accuracy_scale)/ (4.0*M_PI); } ,1000); } } No newline at end of file Loading
CMakeLists.txt +1 −0 Original line number Diff line number Diff line Loading @@ -122,6 +122,7 @@ target_link_libraries(${PROJECT_NAME} geogram::geogram spdlog::spdlog Threads::Threads fast_winding_number ) if(FLOAT_TETWILD_ENABLE_TBB) target_link_libraries(${PROJECT_NAME} PUBLIC tbb::tbb) Loading
cmake/FloatTetwildDependencies.cmake +27 −0 Original line number Diff line number Diff line Loading @@ -54,6 +54,7 @@ if(NOT TARGET geogram::geogram) include(geogram) endif() # TBB if(FLOAT_TETWILD_ENABLE_TBB AND NOT TARGET tbb::tbb) float_tetwild_download_tbb() Loading @@ -80,3 +81,29 @@ endif() # C++11 threads find_package(Threads REQUIRED) # winding number float_tetwild_download_windingnumber() set(windingnumber_SOURCES ${FLOAT_TETWILD_EXTERNAL}/windingnumber/SYS_Math.h ${FLOAT_TETWILD_EXTERNAL}/windingnumber/SYS_Types.h ${FLOAT_TETWILD_EXTERNAL}/windingnumber/UT_Array.cpp ${FLOAT_TETWILD_EXTERNAL}/windingnumber/UT_Array.h ${FLOAT_TETWILD_EXTERNAL}/windingnumber/UT_ArrayImpl.h ${FLOAT_TETWILD_EXTERNAL}/windingnumber/UT_BVH.h ${FLOAT_TETWILD_EXTERNAL}/windingnumber/UT_BVHImpl.h ${FLOAT_TETWILD_EXTERNAL}/windingnumber/UT_FixedVector.h ${FLOAT_TETWILD_EXTERNAL}/windingnumber/UT_ParallelUtil.h ${FLOAT_TETWILD_EXTERNAL}/windingnumber/UT_SmallArray.h ${FLOAT_TETWILD_EXTERNAL}/windingnumber/UT_SolidAngle.cpp ${FLOAT_TETWILD_EXTERNAL}/windingnumber/UT_SolidAngle.h ${FLOAT_TETWILD_EXTERNAL}/windingnumber/VM_SIMD.h ${FLOAT_TETWILD_EXTERNAL}/windingnumber/VM_SSEFunc.h ) add_library(fast_winding_number ${windingnumber_SOURCES}) target_link_libraries(fast_winding_number PRIVATE tbb::tbb) target_compile_features(fast_winding_number PRIVATE ${CXX17_FEATURES}) target_include_directories(fast_winding_number PUBLIC "${FLOAT_TETWILD_EXTERNAL}/")
cmake/FloatTetwildDownloadExternal.cmake +8 −0 Original line number Diff line number Diff line Loading @@ -103,3 +103,11 @@ function(float_tetwild_download_aabbcc) GIT_TAG 0c85e61362d384d70c71946826bfed0fb24a74ba ) endfunction() ## winding number function(float_tetwild_download_windingnumber) float_tetwild_download_project(windingnumber GIT_REPOSITORY https://github.com/alecjacobson/WindingNumber.git GIT_TAG 1e6081e52905575d8e98fb8b7c0921274a18752f ) endfunction()
src/external/CMakeLists.txt +3 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,9 @@ set(SOURCES bfs_orient.h bfs_orient.cpp FastWindingNumber.hpp FastWindingNumber.cpp ) prepend_current_path(SOURCES) Loading
src/external/FastWindingNumber.cpp 0 → 100644 +42 −0 Original line number Diff line number Diff line #include <floattetwild/FastWindingNumber.hpp> #include <igl/parallel_for.h> #include <windingnumber/UT_SolidAngle.h> #include <cstdlib> namespace floatTetWild { void fast_winding_number(const Eigen::MatrixXd &V, const Eigen::MatrixXi &F, const Eigen::MatrixXd &P, Eigen::VectorXd &W) { Eigen::Matrix<int,Eigen::Dynamic,3,Eigen::RowMajor> F_copy = F; HDK_Sample::UT_SolidAngle<float,float> solid_angle; int order = 2; double accuracy_scale = 2.0; std::vector<HDK_Sample::UT_Vector3T<float> > U(V.rows()); for(int i = 0;i<V.rows();i++) { for(int j = 0;j<3;j++){ U[i][j] = V(i,j); } } solid_angle.init(F_copy.rows(), F_copy.data(), V.rows(), &U[0], order); W.resize(P.rows()); //for(int p = 0;p<P.rows();p++) igl::parallel_for(P.rows(),[&](int p) { HDK_Sample::UT_Vector3T<float>Pp; Pp[0] = P(p,0); Pp[1] = P(p,1); Pp[2] = P(p,2); W(p) = solid_angle.computeSolidAngle(Pp, accuracy_scale)/ (4.0*M_PI); } ,1000); } } No newline at end of file