- the
threadsargument ofc_weighted_jaccard_sparse()andc_weighted_jaccard_dense()now defaults toNULL, applying a package-wide thread policy (respectinggetOption("Ncpus")andOMP_THREAD_LIMIT, else a conservative 2) rather than a hard-coded 4. Passthreads = 0for all cores, or an integer to override. No new package dependency. - add
c_pointsinside(), a robust point-in-mesh test based on the generalised (solid-angle) winding number. Unlike a closest-point signed-distance test it does not depend on surface normals, so it avoids the spurious "outside point classified as inside" results that normal-based tests can give near thin protrusions or sharp features.threads = NULLapplies the package thread policy. c_pointsinside(method=)selects the winding-number back end:"bruteforce"is a self-contained O(P*F) test parallelised over points with RcppThread;"bvh"uses libigl's "Fast Winding Numbers for Soups and Clouds" (Barill et al. 2018), building a bounding-volume hierarchy once and evaluating each query point in O(log F) so it scales to millions of points on large meshes. The default"auto"picks"bvh"for large meshes and"bruteforce"otherwise; the two agree to within the winding-number tolerance. libigl (MPL-2.0) is vendored undersrc/vendor/igland requiresRcppEigen; its bundled Houdini HDK amalgamation is marked a system header (one-line#pragma) so its third-party compiler warnings do not surface as install-timeR CMD checkwarnings.
- fix package loading on CRAN's Debian clang r-devel check by conditionally
linking
libatomicwhen the C++ atomic compare/exchange runtime helper is required. - add
src/Makevars.win, sinceconfigureis not run on Windows, and acleanupscript to remove thesrc/Makevarsgenerated byconfigure. The generatedsrc/Makevarsis no longer shipped in the package sources.
Full Changelog: https://github.com/natverse/natcpp/compare/v0.3.0...v0.3.1
- add weighted Jaccard similarity functions for sparse data
c_weighted_jaccard_sparse()returns a sparse similarity (or distance) matrixc_weighted_jaccard_dense()returns a dense matrix or adist-layout vector- both run in parallel via RcppThread, with an optional progress bar (RcppProgress)
triangle=switches between symmetric upper-triangle output and a full matrixdistance=returns1 - similarity
- portable
src/Makevarsusing$(SHLIB_OPENMP_CXXFLAGS)in place of a GNU make$(shell ...)callout toRcppThread::LdFlags()
Full Changelog: https://github.com/natverse/natcpp/compare/v0.2...v0.3.0
- add fast coordinate / index conversion functions in #2
c_coords21dindex()c_ijkpos()c_sub2ind()to makenat::coord2ind()and friends much more memory efficient
Full Changelog: https://github.com/natverse/natcpp/compare/v0.1.1...v0.2
- adds
c_ListofMatrixRows()
- First version of the package with basic functions for manipulating segment lists and calculating cable lengths.