5 // We use unicode. We would like to use much more of it than Rust allows. |
5 // We use unicode. We would like to use much more of it than Rust allows. |
6 // Live with it. Embrace it. |
6 // Live with it. Embrace it. |
7 #![allow(uncommon_codepoints)] |
7 #![allow(uncommon_codepoints)] |
8 #![allow(mixed_script_confusables)] |
8 #![allow(mixed_script_confusables)] |
9 #![allow(confusable_idents)] |
9 #![allow(confusable_idents)] |
|
10 |
|
11 mod manifold; |
|
12 mod fb; |
|
13 mod cube; |
|
14 mod dist; |
|
15 mod zero; |
|
16 mod scaled; |
10 |
17 |
11 use serde::Serialize; |
18 use serde::Serialize; |
12 use alg_tools::logger::Logger; |
19 use alg_tools::logger::Logger; |
13 use alg_tools::tabledump::{TableDump, write_csv}; |
20 use alg_tools::tabledump::{TableDump, write_csv}; |
14 use alg_tools::error::DynError; |
21 use alg_tools::error::DynError; |
17 use alg_tools::types::*; |
24 use alg_tools::types::*; |
18 use alg_tools::mapping::{Sum, Apply}; |
25 use alg_tools::mapping::{Sum, Apply}; |
19 use alg_tools::iterate::{AlgIteratorOptions, AlgIteratorFactory, Verbose}; |
26 use alg_tools::iterate::{AlgIteratorOptions, AlgIteratorFactory, Verbose}; |
20 use image::{ImageFormat, ImageBuffer, Rgb}; |
27 use image::{ImageFormat, ImageBuffer, Rgb}; |
21 |
28 |
22 use dist::DistToSquaredDiv2; |
29 use dist::{DistTo, DistToSquaredDiv2}; |
23 use fb::{forward_backward, IterInfo}; |
30 use fb::{forward_backward, IterInfo}; |
24 use manifold::EmbeddedManifoldPoint; |
31 use manifold::EmbeddedManifoldPoint; |
25 use cube::*; |
32 use cube::*; |
26 use Face::*; |
33 use Face::*; |
|
34 #[allow(unused_imports)] |
27 use zero::ZeroFn; |
35 use zero::ZeroFn; |
28 |
36 use scaled::Scaled; |
29 mod manifold; |
|
30 mod fb; |
|
31 mod cube; |
|
32 mod dist; |
|
33 mod zero; |
|
34 mod scaled; |
|
35 |
37 |
36 /// Program entry point |
38 /// Program entry point |
37 fn main() { |
39 fn main() { |
38 simple_cube_test().unwrap() |
40 simple_cube_test().unwrap() |
39 } |
41 } |
66 |
68 |
67 //let x = points[0].clone(); |
69 //let x = points[0].clone(); |
68 // OnCube::new(F3, Loc([0.5, 0.5])); goes to opposite side |
70 // OnCube::new(F3, Loc([0.5, 0.5])); goes to opposite side |
69 let x = OnCube::new(F3, Loc([0.5, 0.4])); |
71 let x = OnCube::new(F3, Loc([0.5, 0.4])); |
70 let f = Sum::new(points.into_iter().map(DistToSquaredDiv2)); |
72 let f = Sum::new(points.into_iter().map(DistToSquaredDiv2)); |
71 let g = ZeroFn::new(); |
73 //let g = ZeroFn::new(); |
|
74 let g = Scaled::new(1.0, DistTo(OnCube::new(F4, Loc([0.5, 0.5])))); |
72 let τ = 0.1; |
75 let τ = 0.1; |
73 |
76 |
74 let mut logger = Logger::new(); |
77 let mut logger = Logger::new(); |
75 let logmap = |iter, IterInfo { value, point } : IterInfo<OnCube>| { |
78 let logmap = |iter, IterInfo { value, point } : IterInfo<OnCube>| { |
76 let Loc([x,y,z]) = point.embedded_coords(); |
79 let Loc([x,y,z]) = point.embedded_coords(); |