use crate::{ClusteringError, Result};
use ndarray::ArrayView1;
pub use crate::metrics::distance::Manifold;
pub fn christoffel_symbols(
manifold: &Manifold,
point: &ArrayView1<f64>,
) -> Result<Vec<Vec<Vec<f64>>>> {
unimplemented!("christoffel_symbols")
}
pub fn metric_tensor(manifold: &Manifold, point: &ArrayView1<f64>) -> Result<Vec<Vec<f64>>> {
match manifold {
Manifold::Schwarzschild { mass } => {
unimplemented!("Schwarzschild metric tensor")
}
Manifold::Kerr { mass, spin } => {
unimplemented!("Kerr metric tensor")
}
Manifold::Euclidean => {
let dim = point.len();
let mut tensor = vec![vec![0.0; dim]; dim];
for i in 0..dim {
tensor[i][i] = 1.0;
}
Ok(tensor)
}
}
}
pub fn geodesic_path(
manifold: &Manifold,
start: &ArrayView1<f64>,
end: &ArrayView1<f64>,
) -> Result<Vec<Vec<f64>>> {
unimplemented!("geodesic_path")
}
pub fn ricci_scalar(manifold: &Manifold, point: &ArrayView1<f64>) -> Result<f64> {
unimplemented!("ricci_scalar")
}