Trait quantized_density_fields::qdf::state::State
source · pub trait State: Sized + Clone + Default + Send + Sync + Debug {
fn subdivide(&self, subdivisions: usize) -> Vec<Self>;
fn merge(states: &[Self]) -> Self;
fn super_state_at_level(&self, dimensions: usize, level: usize) -> Self { ... }
}
Expand description
Trait that describes QDF space state.
Examples
use quantized_density_fields::State;
use std::iter::repeat;
#[derive(Debug, Default, Eq, PartialEq, Clone)]
struct Integer(i32);
impl State for Integer {
fn subdivide(&self, subdivisions: usize) -> Vec<Self> {
repeat(Integer(self.0 / subdivisions as i32)).take(subdivisions).collect()
}
fn merge(states: &[Self]) -> Self {
Integer(states.iter().map(|v| v.0).sum())
}
}
let substates = Integer(16).subdivide(4);
assert_eq!(substates, vec![Integer(4), Integer(4), Integer(4), Integer(4)]);
let state = State::merge(&substates);
assert_eq!(state, Integer(16));
Required Methods
Provided Methods
sourcefn super_state_at_level(&self, dimensions: usize, level: usize) -> Self
fn super_state_at_level(&self, dimensions: usize, level: usize) -> Self
Multiply and merge multiple instances of itself into one super state.
Arguments
dimensions
- number of dimensions.level
- number level at which you merge.