Loading CMakeLists.txt +3 −3 Original line number Diff line number Diff line Loading @@ -50,7 +50,7 @@ set(CMAKE_POSITION_INDEPENDENT_CODE ON) ################################################################################ # FloatTetwild options option(FLOAT_TETWILD_ENABLE_TBB "Enable TBB" ON) option(FLOAT_TETWILD_ENABLE_TBB "Enable TBB" OFF) option(FLOAT_TETWILD_USE_FLOAT "Use floats instead of double" OFF) option(FLOAT_TETWILD_WITH_SANITIZERS "Use sanitizers" OFF) option(FLOAT_TETWILD_WITH_EXACT_ENVELOPE "Use exact envelope" OFF) Loading Loading @@ -97,7 +97,7 @@ ENDIF() # ENDIF() # add_library() can only be called without any source since CMake 3.11 ... add_library(${PROJECT_NAME} src/Logger.cpp) add_library(${PROJECT_NAME} src/Logger.cpp src/external/WindingNumber.h) # Public include directory for FloatTetwild target_include_directories(${PROJECT_NAME} PUBLIC ${PROJECT_BINARY_DIR}/include) Loading Loading @@ -135,7 +135,7 @@ target_link_libraries(${PROJECT_NAME} geogram::geogram spdlog::spdlog Threads::Threads fast_winding_number # fast_winding_number json ${GMP_LIBRARIES} # ${MPFR_LIBRARIES} Loading cmake/FloatTetwildDependencies.cmake +27 −27 Original line number Diff line number Diff line Loading @@ -93,30 +93,30 @@ endif() # 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}/") if(FLOAT_TETWILD_WITH_EXACT_ENVELOPE) float_tetwild_download_exact_envelope() add_subdirectory(${FLOAT_TETWILD_EXTERNAL}/exact_envelope) endif() No newline at end of file #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}/") # #if(FLOAT_TETWILD_WITH_EXACT_ENVELOPE) # float_tetwild_download_exact_envelope() # add_subdirectory(${FLOAT_TETWILD_EXTERNAL}/exact_envelope) #endif() No newline at end of file cmake/FloatTetwildDownloadExternal.cmake +8 −8 Original line number Diff line number Diff line Loading @@ -28,7 +28,7 @@ endfunction() function(float_tetwild_download_libigl) float_tetwild_download_project(libigl GIT_REPOSITORY https://github.com/libigl/libigl.git GIT_TAG 015ac35cd135e3a40c3e71443eeda4a9a4ccf7f5 GIT_TAG fb3bd3571e7cc36d99ea505bc5ccba99650ad73c ) endfunction() Loading Loading @@ -104,13 +104,13 @@ function(float_tetwild_download_aabbcc) ) 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() ### winding number #function(float_tetwild_download_windingnumber) # float_tetwild_download_project(windingnumber # GIT_REPOSITORY https://github.com/alecjacobson/WindingNumber.git # GIT_TAG bde8780ec848fa71c1294a0af50347e968b19493 # ) #endfunction() ## exact envelope Loading src/external/CMakeLists.txt +1 −0 Original line number Diff line number Diff line Loading @@ -53,6 +53,7 @@ else() bfs_orient.h bfs_orient.cpp WindingNumber.h FastWindingNumber.hpp FastWindingNumber.cpp Loading src/external/FastWindingNumber.cpp +17 −21 Original line number Diff line number Diff line #include <floattetwild/FastWindingNumber.hpp> #include <igl/parallel_for.h> #include <windingnumber/UT_SolidAngle.h> #include <floattetwild/WindingNumber.h> //#include <windingnumber/UT_SolidAngle.h> #include <cstdlib> #define _USE_MATH_DEFINES #include <math.h> namespace floatTetWild { void fast_winding_number(const Eigen::MatrixXd &V, const Eigen::MatrixXi &F, const Eigen::MatrixXd &P, Eigen::VectorXd &W) { void floatTetWild::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; igl::FastWindingNumber::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()); std::vector<igl::FastWindingNumber::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); Loading @@ -33,11 +30,10 @@ void fast_winding_number(const Eigen::MatrixXd &V, const Eigen::MatrixXi &F, con //for(int p = 0;p<P.rows();p++) igl::parallel_for(P.rows(), [&](int p) { HDK_Sample::UT_Vector3T<float>Pp; igl::FastWindingNumber::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 } No newline at end of file Loading
CMakeLists.txt +3 −3 Original line number Diff line number Diff line Loading @@ -50,7 +50,7 @@ set(CMAKE_POSITION_INDEPENDENT_CODE ON) ################################################################################ # FloatTetwild options option(FLOAT_TETWILD_ENABLE_TBB "Enable TBB" ON) option(FLOAT_TETWILD_ENABLE_TBB "Enable TBB" OFF) option(FLOAT_TETWILD_USE_FLOAT "Use floats instead of double" OFF) option(FLOAT_TETWILD_WITH_SANITIZERS "Use sanitizers" OFF) option(FLOAT_TETWILD_WITH_EXACT_ENVELOPE "Use exact envelope" OFF) Loading Loading @@ -97,7 +97,7 @@ ENDIF() # ENDIF() # add_library() can only be called without any source since CMake 3.11 ... add_library(${PROJECT_NAME} src/Logger.cpp) add_library(${PROJECT_NAME} src/Logger.cpp src/external/WindingNumber.h) # Public include directory for FloatTetwild target_include_directories(${PROJECT_NAME} PUBLIC ${PROJECT_BINARY_DIR}/include) Loading Loading @@ -135,7 +135,7 @@ target_link_libraries(${PROJECT_NAME} geogram::geogram spdlog::spdlog Threads::Threads fast_winding_number # fast_winding_number json ${GMP_LIBRARIES} # ${MPFR_LIBRARIES} Loading
cmake/FloatTetwildDependencies.cmake +27 −27 Original line number Diff line number Diff line Loading @@ -93,30 +93,30 @@ endif() # 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}/") if(FLOAT_TETWILD_WITH_EXACT_ENVELOPE) float_tetwild_download_exact_envelope() add_subdirectory(${FLOAT_TETWILD_EXTERNAL}/exact_envelope) endif() No newline at end of file #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}/") # #if(FLOAT_TETWILD_WITH_EXACT_ENVELOPE) # float_tetwild_download_exact_envelope() # add_subdirectory(${FLOAT_TETWILD_EXTERNAL}/exact_envelope) #endif() No newline at end of file
cmake/FloatTetwildDownloadExternal.cmake +8 −8 Original line number Diff line number Diff line Loading @@ -28,7 +28,7 @@ endfunction() function(float_tetwild_download_libigl) float_tetwild_download_project(libigl GIT_REPOSITORY https://github.com/libigl/libigl.git GIT_TAG 015ac35cd135e3a40c3e71443eeda4a9a4ccf7f5 GIT_TAG fb3bd3571e7cc36d99ea505bc5ccba99650ad73c ) endfunction() Loading Loading @@ -104,13 +104,13 @@ function(float_tetwild_download_aabbcc) ) 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() ### winding number #function(float_tetwild_download_windingnumber) # float_tetwild_download_project(windingnumber # GIT_REPOSITORY https://github.com/alecjacobson/WindingNumber.git # GIT_TAG bde8780ec848fa71c1294a0af50347e968b19493 # ) #endfunction() ## exact envelope Loading
src/external/CMakeLists.txt +1 −0 Original line number Diff line number Diff line Loading @@ -53,6 +53,7 @@ else() bfs_orient.h bfs_orient.cpp WindingNumber.h FastWindingNumber.hpp FastWindingNumber.cpp Loading
src/external/FastWindingNumber.cpp +17 −21 Original line number Diff line number Diff line #include <floattetwild/FastWindingNumber.hpp> #include <igl/parallel_for.h> #include <windingnumber/UT_SolidAngle.h> #include <floattetwild/WindingNumber.h> //#include <windingnumber/UT_SolidAngle.h> #include <cstdlib> #define _USE_MATH_DEFINES #include <math.h> namespace floatTetWild { void fast_winding_number(const Eigen::MatrixXd &V, const Eigen::MatrixXi &F, const Eigen::MatrixXd &P, Eigen::VectorXd &W) { void floatTetWild::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; igl::FastWindingNumber::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()); std::vector<igl::FastWindingNumber::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); Loading @@ -33,11 +30,10 @@ void fast_winding_number(const Eigen::MatrixXd &V, const Eigen::MatrixXi &F, con //for(int p = 0;p<P.rows();p++) igl::parallel_for(P.rows(), [&](int p) { HDK_Sample::UT_Vector3T<float>Pp; igl::FastWindingNumber::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 } No newline at end of file