Russian Qt Forum
Ноябрь 25, 2024, 19:51 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: функция для перевода (ассоциации) диапазонов  (Прочитано 3086 раз)
hunk
Гость
« : Февраль 28, 2015, 15:25 »

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

Сообщений: 11445


Просмотр профиля
« Ответ #1 : Февраль 28, 2015, 15:46 »

Напр так
Код
C++ (Qt)
inline int To255( int val )
{
return int(val * 255.0 / 32768 + 0.5);
}
Записан
hunk
Гость
« Ответ #2 : Февраль 28, 2015, 20:59 »

Напр так
Код
C++ (Qt)
inline int To255( int val )
{
return int(val * 255.0 / 32768 + 0.5);
}

Спасибо!
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #3 : Февраль 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
« Последнее редактирование: Февраль 28, 2015, 22:05 от kuzulis » Записан

ArchLinux x86_64 / Win10 64 bit
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #4 : Февраль 28, 2015, 22:22 »

hunk, можно было посмотреть код этой функции в Arduino, у них даже на сайте есть:
https://www.arduino.cc/en/reference/map

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

Юра.
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.155 секунд. Запросов: 23.