Skip to content

Latest commit

 

History

History
67 lines (53 loc) · 3.14 KB

File metadata and controls

67 lines (53 loc) · 3.14 KB

natcpp 0.3.1.9000

  • the threads argument of c_weighted_jaccard_sparse() and c_weighted_jaccard_dense() now defaults to NULL, applying a package-wide thread policy (respecting getOption("Ncpus") and OMP_THREAD_LIMIT, else a conservative 2) rather than a hard-coded 4. Pass threads = 0 for 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 = NULL applies 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 under src/vendor/igl and requires RcppEigen; its bundled Houdini HDK amalgamation is marked a system header (one-line #pragma) so its third-party compiler warnings do not surface as install-time R CMD check warnings.

natcpp 0.3.1

  • fix package loading on CRAN's Debian clang r-devel check by conditionally linking libatomic when the C++ atomic compare/exchange runtime helper is required.
  • add src/Makevars.win, since configure is not run on Windows, and a cleanup script to remove the src/Makevars generated by configure. The generated src/Makevars is no longer shipped in the package sources.

Full Changelog: https://github.com/natverse/natcpp/compare/v0.3.0...v0.3.1

natcpp 0.3.0

  • add weighted Jaccard similarity functions for sparse data
    • c_weighted_jaccard_sparse() returns a sparse similarity (or distance) matrix
    • c_weighted_jaccard_dense() returns a dense matrix or a dist-layout vector
    • both run in parallel via RcppThread, with an optional progress bar (RcppProgress)
    • triangle= switches between symmetric upper-triangle output and a full matrix
    • distance= returns 1 - similarity
  • portable src/Makevars using $(SHLIB_OPENMP_CXXFLAGS) in place of a GNU make $(shell ...) callout to RcppThread::LdFlags()

Full Changelog: https://github.com/natverse/natcpp/compare/v0.2...v0.3.0

natcpp 0.2

  • add fast coordinate / index conversion functions in #2
    • c_coords21dindex()
    • c_ijkpos()
    • c_sub2ind() to make nat::coord2ind() and friends much more memory efficient

Full Changelog: https://github.com/natverse/natcpp/compare/v0.1.1...v0.2

natcpp 0.1.1

  • adds c_ListofMatrixRows()

natcpp 0.1.0

  • First version of the package with basic functions for manipulating segment lists and calculating cable lengths.