forked from StudioInfinity/dyna3
Primarily, switch to using trailing commas. Also uniformizes commas with respect to switch branches, makes function call layout more consistent, line breaking more consistent, alphabetizes imports, uses the field init shorthand when possible, etc. Resolves #99. Co-authored-by: Aaron Fenyes <aaron.fenyes@fareycircles.ooo> Reviewed-on: StudioInfinity/dyna3#108 Co-authored-by: Vectornaut <vectornaut@nobody@nowhere.net> Co-committed-by: Vectornaut <vectornaut@nobody@nowhere.net>
32 lines
No EOL
1.2 KiB
Rust
32 lines
No EOL
1.2 KiB
Rust
#[path = "common/print.rs"]
|
|
mod print;
|
|
|
|
use nalgebra::{DMatrix, DVector};
|
|
|
|
use dyna3::engine::{ConfigNeighborhood, examples::realize_kaleidocycle};
|
|
|
|
fn main() {
|
|
const SCALED_TOL: f64 = 1.0e-12;
|
|
let realization = realize_kaleidocycle(SCALED_TOL);
|
|
print::title("Kaleidocycle");
|
|
print::realization_diagnostics(&realization);
|
|
if let Ok(ConfigNeighborhood { config, nbhd: tangent }) = realization.result {
|
|
// print the completed Gram matrix and the realized configuration
|
|
print::gram_matrix(&config);
|
|
print::config(&config);
|
|
|
|
// find the kaleidocycle's twist motion by projecting onto the tangent
|
|
// space
|
|
const N_POINTS: usize = 12;
|
|
let up = DVector::from_column_slice(&[0.0, 0.0, 1.0, 0.0]);
|
|
let down = -&up;
|
|
let twist_motion: DMatrix<_> = (0..N_POINTS).step_by(4).flat_map(
|
|
|n| [
|
|
tangent.proj(&up.as_view(), n),
|
|
tangent.proj(&down.as_view(), n+1),
|
|
]
|
|
).sum();
|
|
let normalization = 5.0 / twist_motion[(2, 0)];
|
|
println!("\nTwist motion:{}", (normalization * twist_motion).to_string().trim_end());
|
|
}
|
|
} |