diff --git a/samples/ControlCatalog/Pages/TabbedPage/FluidNavBar/FluidNavBar.cs b/samples/ControlCatalog/Pages/TabbedPage/FluidNavBar/FluidNavBar.cs
index a68e57c9a4..84a3900b18 100644
--- a/samples/ControlCatalog/Pages/TabbedPage/FluidNavBar/FluidNavBar.cs
+++ b/samples/ControlCatalog/Pages/TabbedPage/FluidNavBar/FluidNavBar.cs
@@ -604,7 +604,7 @@ namespace ControlCatalog.Pages
while (measure.NextContour());
}
- private static float Lerp(float a, float b, float t) => a + (b - a) * t;
+ private static float Lerp(float a, float b, float t) => float.Lerp(a, b, t);
private static double LinearPoint(double x, double pIn, double pOut)
{
diff --git a/samples/ControlCatalog/Pages/Transitions/CardStackPageTransition.cs b/samples/ControlCatalog/Pages/Transitions/CardStackPageTransition.cs
index 89ae1e5e8a..c036f0a5b3 100644
--- a/samples/ControlCatalog/Pages/Transitions/CardStackPageTransition.cs
+++ b/samples/ControlCatalog/Pages/Transitions/CardStackPageTransition.cs
@@ -424,10 +424,8 @@ public class CardStackPageTransition : PageSlide
return sign * FarPeekAngle;
}
- private static double Lerp(double from, double to, double t)
- {
- return from + ((to - from) * Math.Clamp(t, 0.0, 1.0));
- }
+ private static double Lerp(double from, double to, double t) =>
+ double.Lerp(from, to, Math.Clamp(t, 0.0, 1.0));
private static int GetViewportZIndex(double offsetFromCenter, Visual visual, Visual? from, Visual? to)
{
diff --git a/src/Avalonia.Base/Animation/CrossFade.cs b/src/Avalonia.Base/Animation/CrossFade.cs
index 45a4300e5b..33641e4edc 100644
--- a/src/Avalonia.Base/Animation/CrossFade.cs
+++ b/src/Avalonia.Base/Animation/CrossFade.cs
@@ -260,9 +260,7 @@ namespace Avalonia.Animation
return FarPeekOpacity;
}
- private static double Lerp(double from, double to, double t)
- {
- return from + ((to - from) * Math.Clamp(t, 0.0, 1.0));
- }
+ private static double Lerp(double from, double to, double t) =>
+ double.Lerp(from, to, Math.Clamp(t, 0.0, 1.0));
}
}
diff --git a/src/Avalonia.Base/Animation/Transitions/Rotate3DTransition.cs b/src/Avalonia.Base/Animation/Transitions/Rotate3DTransition.cs
index 41aa205547..38e4a46dc9 100644
--- a/src/Avalonia.Base/Animation/Transitions/Rotate3DTransition.cs
+++ b/src/Avalonia.Base/Animation/Transitions/Rotate3DTransition.cs
@@ -244,10 +244,8 @@ public class Rotate3DTransition : PageSlide
return 1;
}
- private static double Lerp(double from, double to, double t)
- {
- return from + ((to - from) * Math.Clamp(t, 0.0, 1.0));
- }
+ private static double Lerp(double from, double to, double t) =>
+ double.Lerp(from, to, Math.Clamp(t, 0.0, 1.0));
///
public override void Reset(Visual visual)
diff --git a/src/Avalonia.Base/Rendering/Composition/Animations/Interpolators.cs b/src/Avalonia.Base/Rendering/Composition/Animations/Interpolators.cs
index f801bd1c66..47e1972a12 100644
--- a/src/Avalonia.Base/Rendering/Composition/Animations/Interpolators.cs
+++ b/src/Avalonia.Base/Rendering/Composition/Animations/Interpolators.cs
@@ -77,7 +77,7 @@ namespace Avalonia.Rendering.Composition.Animations
class ColorInterpolator : IInterpolator
{
- static byte Lerp(float a, float b, float p) => (byte) Math.Max(0, Math.Min(255, (p * (b - a) + a)));
+ static byte Lerp(float a, float b, float p) => (byte)Math.Clamp(float.Lerp(a, b, p), 0, 255);
public static Avalonia.Media.Color
LerpRGB(Avalonia.Media.Color to, Avalonia.Media.Color from, float progress) =>
diff --git a/src/Avalonia.Base/Rendering/Composition/Expressions/BuiltInExpressionFfi.cs b/src/Avalonia.Base/Rendering/Composition/Expressions/BuiltInExpressionFfi.cs
index 4f6ac03971..a3ee451f80 100644
--- a/src/Avalonia.Base/Rendering/Composition/Expressions/BuiltInExpressionFfi.cs
+++ b/src/Avalonia.Base/Rendering/Composition/Expressions/BuiltInExpressionFfi.cs
@@ -13,8 +13,8 @@ namespace Avalonia.Rendering.Composition.Expressions
{
private readonly DelegateExpressionFfi _registry;
- static float Lerp(float a, float b, float p) => p * (b - a) + a;
- static double Lerp(double a, double b, double p) => p * (b - a) + a;
+ static float Lerp(float a, float b, float p) => float.Lerp(a, b, p);
+ static double Lerp(double a, double b, double p) => double.Lerp(a, b, p);
static Matrix3x2 Inverse(Matrix3x2 m)
{