Grid test: a pole side's face is the five triangles fanned from its one grid node, none degenerate

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
jyviko
2026-10-31 08:58:38 -04:00
committed by jyviko
parent f81c4b1575
commit 9c0d6bd1fd
+9 -2
View File
@@ -323,8 +323,15 @@ mod tests {
// A triangle-like patch whose top side is a pole (two copies of one point in 3D).
let b = vec![[0.0, 0.0], [0.5, 0.0], [1.0, 0.0], [1.0, 1.0], [0.0, 1.0]];
let Some(q) = quad(&b) else { panic!("a quad") };
let Some((_, tris)) = structured(&b, &q, &[0.5], &[0.5]) else { panic!("meshes") };
assert!(!tris.is_empty());
let Some((extra, tris)) = structured(&b, &q, &[0.5], &[0.5]) else { panic!("meshes") };
// One grid node, (0.5, 0.5), fanned to each of the five boundary segments: one triangle
// each, the pole's single segment among them, every one of positive area, tiling the box.
assert_eq!(extra, [[0.5, 0.5]]);
assert_eq!(tris.len(), 5);
let mut uv = b.clone();
uv.extend(extra);
assert!(tris.iter().all(|t| signed_area(&uv, *t).is_some_and(|a| a > 0.0)));
assert!((area(&uv, &tris) - 1.0).abs() < 1e-12);
}
#[test]