Skip to content

Instantly share code, notes, and snippets.

@KolosovAO
Last active May 23, 2018 15:29
Show Gist options
  • Save KolosovAO/e8ce6512d894865f4afda750ae3f4e41 to your computer and use it in GitHub Desktop.
Save KolosovAO/e8ce6512d894865f4afda750ae3f4e41 to your computer and use it in GitHub Desktop.
/*
    Маленькие треугольники образованные при пересечении прямых подобны большим.
    Основание можно представить как k*w и (1-k)*w.
    Поскольку имеется высота, то выражать коэффициент подобия резонно через высоту.
    Первый коээфициент равен h/(w^2-m^2)^.5
    Второй равен h/(w^2-n^2)^.5
    (1 - k) = h/(m^2-w^2)^.5
    k = h/(n^2-w^2)^.5
    Из этого следует равенство:
    h/(n^2-w^2)^.5 + h/(m^2-w^2)^.5 = 1
*/

function solve(n, m, h) {
    const last = Math.min(m, n);
    for (let i=0.01; i<last; i+=0.01) {
        const res = h/(n**2-i**2)**.5 + h/(m**2-i**2)**.5 - 1;
        if (Math.abs(res) < 0.001) {
            return i;
        }
    }
}

console.log(solve(40, 30, 10))

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment