pub trait DiscreteConnection<const D: usize> {
// Required methods
fn n_edges(&self) -> usize;
fn edge_vertices(&self, e: usize) -> [usize; 2];
fn frame_transport(&self, e: usize) -> &[f64];
// Provided methods
fn transport_forward<F: Fiber>(
&self,
e: usize,
element: &F::Element,
) -> F::Element { ... }
fn transport_reverse<F: Fiber>(
&self,
e: usize,
element: &F::Element,
) -> F::Element { ... }
}Expand description
Discrete connection: SO(D) frame transport per edge.
Each edge stores a D x D orthogonal matrix (row-major flat slice of length D*D) representing parallel transport from vertex v0 to v1. The reverse transport (v1 to v0) is the matrix transpose.
Required Methods§
Sourcefn edge_vertices(&self, e: usize) -> [usize; 2]
fn edge_vertices(&self, e: usize) -> [usize; 2]
Edge endpoints: [v0, v1] for edge e.
Sourcefn frame_transport(&self, e: usize) -> &[f64]
fn frame_transport(&self, e: usize) -> &[f64]
SO(D) transport matrix for edge e (v0 -> v1), row-major flat.
Returned slice has length >= D*D.
Provided Methods§
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.