use codenano::*;
fn crossover2x(nst : Nanostructure, id1 : i32, i1 : i32, d1 : bool, id2 : i32, i2: i32, d2 : bool) {
let di1 = if d1 { 1 } else { -1 };
let di2 = if d2 { 1 } else { -1 };
// nst.make_jump(nst.get_nucl(id1, i1, d1), nst.get_nucl(id2, i2, d2));
// nst.make_jump(nst.get_nucl(id2, i2+di2, d2), nst.get_nucl(id1, i1+di1, d1));
}
pub fn main() {
let mut ori = Nanostructure::new();
let n = 30;
let n_d = 30.;
let pi = std::f64::consts::PI;
let id_bas = ori.add_helix(0., 0., 0., 0., 0., 0.);
let id_haut = ori.add_helix(n_d*0.05, 0.225, 0., 0., 0., pi);
let dxy = n_d*0.035;
let id_45bas = ori.add_helix(0.6, 0.41, pi/6., 0., pi/4., 0.);
let id_45haut = ori.add_helix(dxy+0.2, dxy+0.41, 0., pi/2., pi/4., pi);
ori.draw_strand(id_bas, false, 0, n, AUTO_COLOR);
ori.draw_strand(id_bas, true, 0, n, AUTO_COLOR);
ori.draw_strand(id_haut, false, 0, n, AUTO_COLOR);
ori.draw_strand(id_haut, true, 0, n, AUTO_COLOR);
ori.draw_strand(id_45bas, false, 0, n, AUTO_COLOR);
ori.draw_strand(id_45bas, true, 0, n, AUTO_COLOR);
ori.draw_strand(id_45haut, false, 0, n, AUTO_COLOR);
ori.draw_strand(id_45haut, true, 0, n, AUTO_COLOR);
// crossover2x(ori, id_45haut, 10, false, id_45bas, n-5, false);
ori.make_jump(ori.get_nucl(id_45haut, 8, false), ori.get_nucl(id_45bas, n-14, false));
ori.make_jump(ori.get_nucl(id_45bas, n-14-1, false), ori.get_nucl(id_45haut, 8+1, false));
ori.make_jump(ori.get_nucl(id_haut, 16, false), ori.get_nucl(id_45bas, 0, false));
ori.make_jump(ori.get_nucl(id_45haut, n-1, false), ori.get_nucl(id_haut, 25, false));
//ori.make_jump(ori.get_nucl(id_45bas, n-14-1, false), ori.get_nucl(id_45haut, 8+1, false));
// ori.make_jump(nst.get_nucl(id_1, 11, false), nst.get_nucl(id_0, 11, true));
// ori.make_jump(nst.get_nucl(id_0, 12, true), nst.get_nucl(id_1, 12, false));
ori.finish();
}