diff --git a/src/bin/flat.rs b/src/bin/flat.rs index 260b03b..4cad63f 100644 --- a/src/bin/flat.rs +++ b/src/bin/flat.rs @@ -629,28 +629,27 @@ trait FloatExt2 { } impl FloatExt2 for (f32, f32) { - fn lerp(&self, t: f32) -> f32 { - self.0.lerp(self.1, t) - } + fn lerp(&self, t: f32) -> f32 { f32::lerp(self.0, self.1, t) } } impl Metric for Rect { fn sqrt_at(&self, pos: Vec2) -> Decomp2 { let sx = self.fx().value(pos.x); let sy = self.fy().value(pos.y); + let s = sx + sy - sx * sy; assert!(sx.is_finite()); assert!(sy.is_finite()); assert!(sy > 0.0); Decomp2 { ortho: Mat2::IDENTITY, - diag: vec2(1.0, (sy, 1.0).lerp(sx)), + diag: vec2(1.0, s), } } fn part_derivs_at(&self, pos: Vec2) -> Tens2 { let sx = self.fx().value(pos.x); let sy = self.fy().value(pos.y); - let s = (sy, 1.0).lerp(sx); + let s = sx + sy - sx * sy; let dsx_dx = self.fx().derivative(pos.x); let dsy_dy = self.fy().derivative(pos.y); let ds2_dx = 2.0 * s * (1.0 - sy) * dsx_dx;