//http://isotopescreencapture.codeplex.com/ //The MIT License (MIT) namespace Isotope.Math { public static class MathUtil { /// <summary> /// Combines two input numbers in some proportion. /// ratio=0.0 the first number is not used at all, /// ratio=0.5 they are weight equally /// ratio=1.0 the first number completely dominates the value /// </summary> /// <param name="val0"></param> /// <param name="val1"></param> /// <param name="ratio"></param> /// <returns></returns> public static double Blend_0_1(double val0, double val1, double ratio) { var cratio = ClampToRange_0_1(ratio); var v0 = val0*cratio; var v1 = val1*(1.0 - cratio); return v0 + v1; } /// <summary> /// Given an input value will force the value to fit within the range (min,max) inclusive /// </summary> /// <param name="v"></param> /// <param name="min"></param> /// <param name="max"></param> /// <returns></returns> public static double ClampToRange(double v, double min, double max) { if (v < min) { v = min; } else if (v > max) { v = max; } return v; } /// <summary> /// Given an input value, will limit it to the range 0.0 and 1.0 inclusive /// </summary> /// <param name="v"></param> /// <returns>the clamped value</returns> public static double ClampToRange_0_1(double v) { return ClampToRange(v, 0.0, 1.0); } } }