use halfedge::point_triangle_distance;
fn main() {
let a = [0.0, 0.0, 0.0];
let b = [1.0, 0.0, 0.0];
let c = [0.0, 1.0, 0.0];
println!("三角形 A={:?} B={:?} C={:?}", a, b, c);
println!();
let p = [0.25, 0.25, 0.5]; let d = point_triangle_distance(p, a, b, c);
println!("[面域] P={:?} 距离 = {:.4}(应为 0.5,垂直高度)", p, d);
let p = [-1.0, -1.0, 0.0]; let d = point_triangle_distance(p, a, b, c);
let expected = (2.0_f64).sqrt();
println!(
"[顶点域 A] P={:?} 距离 = {:.4}(应为 √2 ≈ {:.4})",
p, d, expected
);
let p = [3.0, 0.0, 0.0]; let d = point_triangle_distance(p, a, b, c);
println!("[顶点域 B] P={:?} 距离 = {:.4}(应为 2.0)", p, d);
let p = [0.0, 3.0, 0.0]; let d = point_triangle_distance(p, a, b, c);
println!("[顶点域 C] P={:?} 距离 = {:.4}(应为 2.0)", p, d);
let p = [0.5, -1.0, 0.0]; let d = point_triangle_distance(p, a, b, c);
println!("[边域 AB] P={:?} 距离 = {:.4}(应为 1.0)", p, d);
let p = [-1.0, 0.5, 0.0]; let d = point_triangle_distance(p, a, b, c);
println!("[边域 AC] P={:?} 距离 = {:.4}(应为 1.0)", p, d);
let p = [1.0, 1.0, 0.0]; let d = point_triangle_distance(p, a, b, c);
let expected = 1.0 / (2.0_f64).sqrt();
println!(
"[边域 BC] P={:?} 距离 = {:.4}(应为 1/√2 ≈ {:.4})",
p, d, expected
);
let p = [0.3, 0.3, 1.0];
let d = point_triangle_distance(p, a, b, c);
println!(
"\n[3D 点] P={:?} 距离 = {:.4}(上方 1.0,应接近 1.0)",
p, d
);
let a = [0.0, 0.0, 0.0];
let b = [1.0, 0.0, 0.0];
let c = [2.0, 0.0, 0.0]; let p = [0.5, 1.0, 0.0];
let d = point_triangle_distance(p, a, b, c);
println!(
"\n[退化三角形] 共线 A-B-C, P={:?} 距离 = {:.4}(退化为顶点距离)",
p, d
);
}