use halfedge::traversal::{is_boundary_edge, is_boundary_vertex};
use halfedge::{build_mesh_from_vertices_and_faces, validate_topology};
fn main() {
let vertices = [
[0.0, 0.0, 0.0], [1.0, 0.0, 0.0], [1.0, 1.0, 0.0], [0.0, 1.0, 0.0], ];
let faces = [
[0, 1, 2], [0, 2, 3], ];
let mesh = build_mesh_from_vertices_and_faces(&vertices, &faces).unwrap();
println!(
"构建结果:{} 顶点 / {} 半边 / {} 面",
mesh.vertex_count(),
mesh.halfedge_count(),
mesh.face_count()
);
let errors = validate_topology(&mesh);
println!("拓扑校验:{} 个错误", errors.len());
for e in &errors {
println!(" - {}", e);
}
println!("\n边界检测:");
for v in mesh.vertex_ids() {
println!(
" 顶点 {:?} 是边界顶点:{}",
v,
is_boundary_vertex(&mesh, v)
);
}
println!("\n半边列表(标记边界 / 内部):");
for he in mesh.halfedge_ids() {
let h = mesh.get_halfedge(he).unwrap();
let tip = h.vertex;
let origin = mesh.get_halfedge(h.twin.unwrap()).unwrap().vertex;
let kind = if is_boundary_edge(&mesh, he) {
"边界"
} else {
"内部"
};
println!(" {:?}: {:?}→{:?} [{}]", he, origin, tip, kind);
}
}