use cad_cs::{cs, dms};
use cad_cs::libs::cs::{Cs2, Cs3};
use cad_cs::libs::cs::model_coords::{Coords2dXyPolar, Coords3dXyzSpherical};
use cad_cs::libs::cs::debug_print::{Cs2ConsoleDebug, Cs3ConsoleDebug};
use cad_cs::libs::angle::AngleFmt;
fn main() {
println!("🚀 Uruchamiam demonstrację biblioteki cad-cs!\n");
let pt_2d = cs![3.0, 4.0];
let pt_3d = cs![3.0, 4.0, 12.0];
println!("🔷 Punkt 2D kartezjański: {:?}", pt_2d);
println!("🔶 Punkt 3D kartezjański: {:?}", pt_3d);
println!("📏 Promień 2D (rxy): {}", pt_2d.rxy());
println!("📏 Promień 3D pełny (rxyz): {}", pt_3d.rxyz());
println!("📐 Kąt (azymut) dla 2D: {:.4} rad", pt_2d.arctan_y_x());
println!("\n----------------------------------------------------\n");
let punkt_z_biegunowego: Cs2 = Coords2dXyPolar {
r_xy: 10.0,
f_yx: std::f64::consts::PI / 2.0, }.into();
println!("🟪 Cs2 z biegunowego (R=10, Φ=90°): {:?}", punkt_z_biegunowego);
let punkt_ze_sferycznego: Cs3 = Coords3dXyzSpherical {
r_xyz: 20.0,
f_yx: 0.0, t_zr: std::f64::consts::PI / 4.0, }.into();
println!("🟫 Cs3 ze sferycznego (R=20, Φ=0°, Θ=45°): {:?}", punkt_ze_sferycznego);
println!("\n----------------------------------------------------\n");
let stawowa2 = cs![
dms!(50, 14, 56.3),
dms!(19, 8, 2.3)
];
let r_ziemi = 6_371_000.0;
let stawowa_xyz = stawowa2.to_ecef_from_rad_sn_we(r_ziemi);
println!("🌐: {:?}", stawowa2);
stawowa_xyz.print("stawowa2", AngleFmt::Deg);
stawowa_xyz.print_dms_sn_we("stawowa_xyz");
println!("🌐 Radiany (Szer, Dług): {:?}", stawowa2);
println!("📍 Ulica Stawowa względem Jądra Ziemi (metry):");
println!(" X: {:.2} m", stawowa_xyz[0]);
println!(" Y: {:.2} m", stawowa_xyz[1]);
println!(" Z: {:.2} m", stawowa_xyz[2]);
println!("📏 Odległość od Jądra (kontrola): {:.2} m", stawowa_xyz.rxyz());
let z_powrotem_na_powierzchnie = stawowa_xyz.to_dms_sn_we_from_xyz();
println!("🔄 Z powrotem do DMS: {:?}", z_powrotem_na_powierzchnie);
}