Страницы

Поиск по вопросам

пятница, 20 декабря 2019 г.

Формула увеличивающая отличия чисел?

#математика


Скажем есть числа 48 и 52.
Если их представить графически в виде столбца, то будет казаться что
половинки одного размера. А нужно графически показать что отличия более  явные, чем
на 4. Но пропорционально, чтобы сумма чисел осталось той же.

Как это можно сделать?





Похожий вопрос, но с дополнительными условиями
Формула для увеличения отличия чисел с сохранением позиций других элементов?
    


Ответы

Ответ 1



0.5 и 25 - параметры масштабирования, которые Вы можете настраивать на Ваш вкус. function rescale(tuple) { if (tuple.min > 25) { tuple.min = (tuple.min - 25) * 0.5 + 25; } tuple.max = 100 - tuple.min; return tuple; } for (var i = 1; i <= 49; i++) { console.log(i, JSON.stringify(rescale({ min: i, max: 100 - i }))); }

Ответ 2



Берёшь любую возрастающую функцию, симметричную относительно 50 и применяешь. function scale(x, p) { return (50 + Math.sign(x-50) * Math.pow(Math.abs(x-50), p) / Math.pow(50, p) * 50); } document.querySelector('input').addEventListener('input', function (e) { var x = +e.target.value for (var div of document.querySelectorAll('div')) { div.style.height = scale(x, div.dataset.p) + '%' } }) section { height: 100px; width: 32px; position: relative; background: blue; float: left; margin-right: 8px; } div { position: absolute; bottom: 0; left: 0; right: 0; background: red; } input { text-align: center; margin-bottom: 8px; display: block; }


Ответ 3



Степенная функция с показателем степени b, где 0 < b < 1 подойдет. Пусть х - размер меньшего столбца, а большего y = 100 - x, x' = 50 - 50 * ((50 - x) / 50) ^ b, y' = 50 + 50 * ((y - 50) / 50) ^ b = 100 - x', где х' и у' - соответственно размеры меньшего и большего столбца после преобразования. Например, если b = 0.5, и x = 49, то: x' = 50 - 50 * ((50 - 49) / 50) ^ 0.5 ≈ 42.93

Комментариев нет:

Отправить комментарий