A Julia package for generating and manipulating point clouds for meshless PDE methods — RBF-FD, generalized finite differences, SPH, and related techniques. Part of the JuliaMeshless organization.
Note
WhatsThePoint.jl is under active development. The API may change before v1.0.
- Surface import from STL and other mesh formats via GeoIO.jl
- Volume discretization with multiple algorithms:
SlakKosecandVanDerSandeFornberg(3D)FornbergFlyer(2D)Octree— octree-guided adaptive point generation (3D)
- Octree-accelerated spatial queries via
TriangleOctreefor fast point-in-volume testing - Normal computation and orientation using PCA with MST+DFS consistent orientation (Hoppe 1992)
- Node repulsion for optimizing point distributions (Miotti 2023)
- Point connectivity with k-nearest neighbor and radius-based topology
- Full unit support through Unitful.jl
- Visualization with Makie.jl
] add https://github.com/JuliaMeshless/WhatsThePoint.jlusing WhatsThePoint, Unitful
# Import a surface mesh
boundary = PointBoundary("model.stl")
# Split surfaces by normal angle
split_surface!(boundary, 75°)
# Generate volume points
spacing = ConstantSpacing(1u"mm")
cloud = discretize(boundary, spacing; alg=VanDerSandeFornberg(), max_points=100_000)
# Optimize point distribution
cloud = repel(cloud, spacing; β=0.2, max_iters=1000)
# Add point connectivity
cloud = set_topology(cloud, KNNTopology, 21)
# Visualize
using GLMakie
visualize(cloud; markersize=0.15)See the documentation for the full guide.
