1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
//! Meshless (mesh-free) interpolation methods
//!
//! This module groups advanced interpolation techniques that do not require a
//! mesh or grid structure. They operate directly on scattered point clouds
//! in any number of dimensions.
//!
//! ## Modules
//!
//! | Module | Description |
//! |--------|-------------|
//! | [`rbf_interpolant`] | Advanced RBF: polyharmonic splines, Wendland CSRBFs, RBF-FD, Hermite RBF |
//! | [`kriging_interp`] | Kriging variants: ordinary, universal, co-kriging, external drift |
//! | [`partition_unity`] | Partition-of-Unity (PU) blended local RBF patches |
//! | [`shepard`] | Shepard's method: global IDW, modified Shepard, Franke-Little weights |
//!
//! ## Quick Reference
//!
//! ### RBF with Polynomial Augmentation
//!
//! ```rust,ignore
//! use scirs2_interpolate::meshless::rbf_interpolant::{
//! GlobalRbfInterpolant, PolyharmonicKernel, PolyDegree,
//! };
//! use scirs2_core::ndarray::{array, Array2};
//!
//! let pts = Array2::from_shape_vec((4, 2), vec![
//! 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0,
//! ]).expect("doc example: should succeed");
//! let vals = array![0.0, 1.0, 1.0, 2.0];
//! let interp = GlobalRbfInterpolant::new_polyharmonic(
//! &pts.view(), &vals.view(),
//! PolyharmonicKernel::ThinPlate, PolyDegree::Linear,
//! ).expect("doc example: should succeed");
//! let v = interp.evaluate(&[0.5, 0.5]).expect("doc example: should succeed");
//! assert!((v - 1.0).abs() < 1e-9);
//! ```
//!
//! ### Ordinary Kriging
//!
//! ```rust,ignore
//! use scirs2_interpolate::meshless::kriging_interp::{OrdinaryKriging, Variogram};
//! use scirs2_core::ndarray::{array, Array2};
//!
//! let pts = Array2::from_shape_vec((4, 1), vec![0.0, 1.0, 2.0, 3.0]).expect("doc example: should succeed");
//! let vals = array![0.0, 1.0, 4.0, 9.0];
//! let vgm = Variogram::Gaussian { nugget: 0.0, sill: 1.0, range: 5.0 };
//! let ok = OrdinaryKriging::new(&pts.view(), &vals.view(), vgm).expect("doc example: should succeed");
//! let (pred, var) = ok.predict(&[1.5]).expect("doc example: should succeed");
//! ```
//!
//! ### Partition of Unity
//!
//! ```rust,ignore
//! use scirs2_interpolate::meshless::partition_unity::{
//! PartitionUnityInterpolant, BumpFunction,
//! };
//! // ... (see module docs)
//! ```
//!
//! ### Shepard's Method
//!
//! ```rust,ignore
//! use scirs2_interpolate::meshless::shepard::{ShepardInterpolant, ShepardMode};
//! // ...
//! ```
// ---------------------------------------------------------------------------
// Convenience re-exports
// ---------------------------------------------------------------------------
// RBF interpolant types
pub use ;
// Kriging types
pub use ;
// Partition of unity types
pub use ;
// Shepard types
pub use ;