xref: /plugin/combo/ComboStrap/Math.php (revision 4cadd4f8c541149bdda95f080e38a6d4e3a640ca)
1*4cadd4f8SNickeau<?php
2*4cadd4f8SNickeau
3*4cadd4f8SNickeau
4*4cadd4f8SNickeaunamespace ComboStrap;
5*4cadd4f8SNickeau
6*4cadd4f8SNickeau
7*4cadd4f8SNickeauclass Math
8*4cadd4f8SNickeau{
9*4cadd4f8SNickeau
10*4cadd4f8SNickeau
11*4cadd4f8SNickeau    /**
12*4cadd4f8SNickeau     * Linear interpolation
13*4cadd4f8SNickeau     * @param $x
14*4cadd4f8SNickeau     * @param $y
15*4cadd4f8SNickeau     * @param $weight
16*4cadd4f8SNickeau     * @return float
17*4cadd4f8SNickeau     */
18*4cadd4f8SNickeau    public static function unlerp($x, $y, $weight): float
19*4cadd4f8SNickeau    {
20*4cadd4f8SNickeau        $x2 = ($weight / 100) * $x;
21*4cadd4f8SNickeau        return ($y - $x2) / (1 - $weight / 100);
22*4cadd4f8SNickeau    }
23*4cadd4f8SNickeau
24*4cadd4f8SNickeau    /**
25*4cadd4f8SNickeau     * Linear interpolation back if x and weight are the same
26*4cadd4f8SNickeau     * @param $x
27*4cadd4f8SNickeau     * @param $y
28*4cadd4f8SNickeau     * @param $weight
29*4cadd4f8SNickeau     * @return float|int
30*4cadd4f8SNickeau     */
31*4cadd4f8SNickeau    public static function lerp($x, $y, $weight)
32*4cadd4f8SNickeau    {
33*4cadd4f8SNickeau
34*4cadd4f8SNickeau        $X = ($weight / 100) * $x;
35*4cadd4f8SNickeau        $Y = (1 - $weight / 100) * $y;
36*4cadd4f8SNickeau        return $X + $Y;
37*4cadd4f8SNickeau
38*4cadd4f8SNickeau    }
39*4cadd4f8SNickeau}
40