pub struct SlicingManifold {
pub centroid: [f64; 3],
pub normal: [f64; 3],
pub basis_u: [f64; 3],
pub basis_v: [f64; 3],
pub variance_ratio: f64,
}Expand description
A 2D plane fitted through the 3D projected point cloud that captures the maximum variance. Found by PCA on the Cartesian coordinates of the projected embeddings.
The plane is defined by:
centroid: the mean of all 3D pointsbasis_u,basis_v: orthonormal vectors spanning the plane (directions of max variance)normal: vector perpendicular to the plane (direction of minimum variance)
Fields§
§centroid: [f64; 3]§normal: [f64; 3]§basis_u: [f64; 3]§basis_v: [f64; 3]§variance_ratio: f64Implementations§
Source§impl SlicingManifold
impl SlicingManifold
Sourcepub fn fit(points: &[[f64; 3]]) -> Self
pub fn fit(points: &[[f64; 3]]) -> Self
Fit the optimal slicing plane to a set of 3D points. Each point is (x, y, z) in Cartesian coordinates.
Sourcepub fn project_2d(&self, point: &[f64; 3]) -> (f64, f64)
pub fn project_2d(&self, point: &[f64; 3]) -> (f64, f64)
Project a 3D point onto the plane, returning (u, v) coordinates.
Sourcepub fn distance(&self, point: &[f64; 3]) -> f64
pub fn distance(&self, point: &[f64; 3]) -> f64
Signed distance from the plane (positive = same side as normal).
Sourcepub fn fit_local(query: &[f64; 3], all_points: &[[f64; 3]], k: usize) -> Self
pub fn fit_local(query: &[f64; 3], all_points: &[[f64; 3]], k: usize) -> Self
Fit a local manifold around a query point using its k nearest neighbors.
The local plane captures the shape of the semantic neighborhood:
- If variance_ratio ≈ 1.0, the neighborhood is flat (concepts spread in a plane)
- If variance_ratio ≈ 0.67, concepts are uniformly distributed (spherical)
- The normal direction reveals which semantic axis is least relevant locally
This enables directional search narrowing: once you know the local geometry, you can restrict subsequent queries to the dominant plane, cutting the effective search dimensionality from 3D to 2D in that region.
Trait Implementations§
Source§impl Clone for SlicingManifold
impl Clone for SlicingManifold
Source§fn clone(&self) -> SlicingManifold
fn clone(&self) -> SlicingManifold
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for SlicingManifold
impl RefUnwindSafe for SlicingManifold
impl Send for SlicingManifold
impl Sync for SlicingManifold
impl Unpin for SlicingManifold
impl UnsafeUnpin for SlicingManifold
impl UnwindSafe for SlicingManifold
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more