Russian Qt Forum

Qt => Вопросы новичков => Тема начата: hunk от Февраль 28, 2015, 15:25



Название: функция для перевода (ассоциации) диапазонов
Отправлено: hunk от Февраль 28, 2015, 15:25
Получаю значения от осей джойстика в диапазоне от -32768 до 32768. Мне необходимо привести этот диапазон к значению от -255 до 255. Не могу найти информации как это сделать. В языке разработки для Arduino есть функция "map".
Пример: map(value, 0, 1023, 0, 255) она позволяет приравнять входящее значение от 0 до 1023  к значению от 0 до 255.
Подскажите как сделать подобное на С/С++


Название: Re: функция для перевода (ассоциации) диапазонов
Отправлено: Igors от Февраль 28, 2015, 15:46
Напр так
Код
C++ (Qt)
inline int To255( int val )
{
return int(val * 255.0 / 32768 + 0.5);
}


Название: Re: функция для перевода (ассоциации) диапазонов
Отправлено: hunk от Февраль 28, 2015, 20:59
Напр так
Код
C++ (Qt)
inline int To255( int val )
{
return int(val * 255.0 / 32768 + 0.5);
}

Спасибо!


Название: Re: функция для перевода (ассоциации) диапазонов
Отправлено: kuzulis от Февраль 28, 2015, 22:03
Школьный курс геометрии - уравнение прямой, проходящей через две точки:

(x - x1) / (x2 - x1) = (y - y1)/(y2 - y1)

Нужно просто немного смекалки   ;)

x1 = -32768
x2 = 32768

y1 = -255
y2 = 255

x - входящее значение -32768 ..  32768
y - результат -255 .. 255


Название: Re: функция для перевода (ассоциации) диапазонов
Отправлено: lit-uriy от Февраль 28, 2015, 22:22
hunk, можно было посмотреть код этой функции в Arduino, у них даже на сайте есть:
https://www.arduino.cc/en/reference/map

И там она универсальная.