Skip to main content

DiscreteConnection

Trait DiscreteConnection 

Source
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§

Source

fn n_edges(&self) -> usize

Number of edges.

Source

fn edge_vertices(&self, e: usize) -> [usize; 2]

Edge endpoints: [v0, v1] for edge e.

Source

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§

Source

fn transport_forward<F: Fiber>( &self, e: usize, element: &F::Element, ) -> F::Element

Transport a fiber element from v0 to v1 along edge e.

Source

fn transport_reverse<F: Fiber>( &self, e: usize, element: &F::Element, ) -> F::Element

Transport a fiber element from v1 to v0 along edge e (uses R^T).

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.

Implementors§