За последние 24 часа нас посетили 16717 программистов и 1694 робота. Сейчас ищут 814 программистов ...

Функция map, соотношение чисел

Тема в разделе "PHP для новичков", создана пользователем V2oD2o, 1 июн 2016.

  1. V2oD2o

    V2oD2o Активный пользователь

    С нами с:
    19 янв 2011
    Сообщения:
    23
    Симпатии:
    0
    Всем привет!

    может быть есть функция в php похожая на arduino map() ?

    суть в том что из диапазона чисел например 0..255, можно управлять диапазоном 0..65535, т.е. из 8 бит, управлять 16 битным числом, например $x=127 т.е. $result=(map($x, 0, 255, 0, 65535)) == $result=32767;

    чтоб велосипед не изобретать, может есть что то подобное?
     
  2. MaXyC_Web_Studio

    MaXyC_Web_Studio Активный пользователь

    С нами с:
    31 дек 2006
    Сообщения:
    678
    Симпатии:
    3
    Адрес:
    Новоуральск
    вообще не понял вопроса
     
  3. V2oD2o

    V2oD2o Активный пользователь

    С нами с:
    19 янв 2011
    Сообщения:
    23
    Симпатии:
    0
    Вспоминаем школу - наклонная характеристика

    map(value, fromLow, fromHigh, toLow, toHigh)
    Функция пропорционально переносит значение (value) из текущего диапазона значений (fromLow .. fromHigh) в новый диапазон (toLow .. toHigh), заданный параметрами.

    Функция map() не ограничивает значение рамками диапазона, как это делает функция constrain(). Contrain() может быть использован до или после вызова map(), если необходимо ограничить допустимые значения заданным диапазоном.

    Обратите внимание, что "нижняя граница" может быть как меньше, так и больше "верхней границы". Это может быть использовано для того чтобы "перевернуть" диапазон:

    y = map(x, 1, 50, 50, 1);
    Возможно использование отрицательных значений:

    y = map(x, 1, 50, 50, -100);
    Функция map() оперирует целыми числами. При пропорциональном переносе дробная часть не округляется по правилами, а просто отбрасывается.

    Параметры
    • value: значение для переноса
    • fromLow: нижняя граница текущего диапазона
    • fromHigh: верхняя граница текущего диапазона
    • toLow: нижняя граница нового диапазона, в который переноситься значение
    • toHigh: верхняя граница нового диапазона
    Возвращаемое значение
    Значение в новом диапазоне
     
  4. MaXyC_Web_Studio

    MaXyC_Web_Studio Активный пользователь

    С нами с:
    31 дек 2006
    Сообщения:
    678
    Симпатии:
    3
    Адрес:
    Новоуральск
    Простите, вы это все в адруино пишете, а тут пых. потому и прошу на "нашем" языке спрашивать.
    И, например я, не понимаю, что означает перенос из одного в другой диапазоны.

    но, эт оно?
    PHP:
    1. function map($value, $fromLow, $fromHigh, $toLow, $toHigh) {
    2.     $fromRange = $fromHigh - $fromLow;
    3.     $toRange = $toHigh - $toLow;
    4.     $scaleFactor = $toRange / $fromRange;
    5.  
    6.     // Re-zero the value within the from range
    7.     $tmpValue = $value - $fromLow;
    8.     // Rescale the value to the to range
    9.     $tmpValue *= $scaleFactor;
    10.     // Re-zero back to the to range
    11.     return $tmpValue + $toLow;
    12. }
     
    V2oD2o нравится это.
  5. V2oD2o

    V2oD2o Активный пользователь

    С нами с:
    19 янв 2011
    Сообщения:
    23
    Симпатии:
    0
    Да оно то конечно оно, думал может что то есть уже в самом php
    Спасибо)