21 use alg_tools::tabledump::{TableDump, write_csv}; |
21 use alg_tools::tabledump::{TableDump, write_csv}; |
22 use alg_tools::error::DynError; |
22 use alg_tools::error::DynError; |
23 use alg_tools::lingrid::LinSpace; |
23 use alg_tools::lingrid::LinSpace; |
24 use alg_tools::loc::Loc; |
24 use alg_tools::loc::Loc; |
25 use alg_tools::types::*; |
25 use alg_tools::types::*; |
26 use alg_tools::mapping::{Sum, Mapping}; |
26 use alg_tools::mapping::Mapping; |
|
27 use alg_tools::operator_arithmetic::MappingSum; |
27 use alg_tools::iterate::{AlgIteratorOptions, AlgIteratorFactory, Verbose}; |
28 use alg_tools::iterate::{AlgIteratorOptions, AlgIteratorFactory, Verbose}; |
28 use image::{ImageFormat, ImageBuffer, Rgb}; |
29 use image::{ImageFormat, ImageBuffer, Rgb}; |
29 |
30 |
30 use dist::{DistTo, DistToSquaredDiv2}; |
31 use dist::{DistTo, DistToSquaredDiv2}; |
31 use fb::{forward_backward, IterInfo, Desc, Prox}; |
32 use fb::{forward_backward, IterInfo, Desc, Prox}; |
98 |
99 |
99 std::fs::create_dir_all(dir)?; |
100 std::fs::create_dir_all(dir)?; |
100 write_csv(points.iter().map(CSVPoint::from), format!("{dir}/data.csv"))?; |
101 write_csv(points.iter().map(CSVPoint::from), format!("{dir}/data.csv"))?; |
101 write_csv(std::iter::once(&origin).map(CSVPoint::from), format!("{dir}/origin.csv"))?; |
102 write_csv(std::iter::once(&origin).map(CSVPoint::from), format!("{dir}/origin.csv"))?; |
102 |
103 |
103 let f = Sum::new(points.into_iter().map(DistToSquaredDiv2)); |
104 let f = MappingSum::new(points.into_iter().map(DistToSquaredDiv2)); |
104 //let g = ZeroFn::new(); |
105 //let g = ZeroFn::new(); |
105 let g = Scaled::new(0.5, DistTo(origin)); |
106 let g = Scaled::new(0.5, DistTo(origin)); |
106 let τ = 0.1; |
107 let τ = 0.1; |
107 |
108 |
108 for face in Face::all() { |
109 for face in Face::all() { |
163 |
164 |
164 std::fs::create_dir_all(dir)?; |
165 std::fs::create_dir_all(dir)?; |
165 write_csv(points.iter().map(CSVCylPoint::from), format!("{dir}/data.csv"))?; |
166 write_csv(points.iter().map(CSVCylPoint::from), format!("{dir}/data.csv"))?; |
166 write_csv(std::iter::once(&origin).map(CSVCylPoint::from), format!("{dir}/origin.csv"))?; |
167 write_csv(std::iter::once(&origin).map(CSVCylPoint::from), format!("{dir}/origin.csv"))?; |
167 |
168 |
168 let f = Sum::new(points.into_iter().map(DistToSquaredDiv2)); |
169 let f = MappingSum::new(points.into_iter().map(DistToSquaredDiv2)); |
169 let g = Scaled::new(4.0, DistTo(origin)); |
170 let g = Scaled::new(4.0, DistTo(origin)); |
170 let τ = 0.1; |
171 let τ = 0.1; |
171 |
172 |
172 write_cylinder_faces_csv(dir, &cyl, 32, 32, 32, |x| f.apply(x) + g.apply(x))?; |
173 write_cylinder_faces_csv(dir, &cyl, 32, 32, 32, |x| f.apply(x) + g.apply(x))?; |
173 |
174 |