use shapers;
fn main() {
let n_points = 10000;
let all_angles = (0..n_points).map(|i| 2.0 * std::f64::consts::PI * (i as f64) / n_points as f64).collect::<Vec<f64>>();
let circle_radius = 5.0;
let _std = 0.0;
let circle_center = vec![80.2, 55.3];
let xs = all_angles.clone().iter().map(|theta| circle_center[0] + circle_radius * theta.cos()).collect::<Vec<f64>>();
let ys = all_angles.iter().map(|theta| circle_center[1] + circle_radius * theta.sin()).collect::<Vec<f64>>();
println!("Executing circular fit...");
let center_lsq = shapers::circle_fit::fit_lsq(xs.clone(), ys.clone(), Some("lbfgs"));
println!("Real center: {:?}", circle_center);
println!("Geometrical center: {:?}", shapers::circle_fit::fit_geometrical(xs, ys));
println!("LSQ Center: {:?}", center_lsq);
}