forked from 1b-agent/fieldcraft-upstream
mesh: portable atan2 and cbrt for the quality measures (#115)
The platform maths libraries' atan2 and cbrt differ in the last bits between macOS and glibc, so the dihedral angles and the shape measure a mesh reports did too. The crate's own versions use + - * / and sqrt only (correctly rounded everywhere) and agree with the platform's to a few ulps. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UhhZMBTviDQxZvwnyP89fo
This commit is contained in:
1 parent
030799dfc8
commit
20281e5959
3 files changed
+82
-3
No files matched your search
@@ -199,6 +199,6 @@ pub(crate) fn pyramid_scaled_jacobian(p: [P; 5]) -> f64 {
|
||||
pub(crate) fn jacobian_metrics(a: P, b: P, c: P) -> (f64, f64) {
|
||||
let d = det(a, b, c);
|
||||
let frob = dot(a, a) + dot(b, b) + dot(c, c);
|
||||
let shape = if d > 0.0 { ratio(3.0 * d.cbrt().powi(2), frob, 0.0) } else { 0.0 };
|
||||
let shape = if d > 0.0 { ratio(3.0 * crate::vec3::cbrt(d).powi(2), frob, 0.0) } else { 0.0 };
|
||||
(corner_det(a, b, c), shape)
|
||||
}
|
||||
Reference in new issue
Block a user