Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Сглаживание мыши в драйвере  (Прочитано 6164 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Ллирик
Помогающий

ru
Offline Offline
Пол: Мужской

« : 20-06-2019 13:29 » 

Подскажите, пожалуйста, какой алгоритм (или где его искать) использует винда для сглаживания движения мыши, чтобы я мог его использовать в моём драйвере мыши, а то я когда в нём понижаю скорость передачи структуры MOUSE_INPUT_DATA вышестоящему драйверу, то становиться заметно, что курсор движется рывками,  значения в LastX или в LastY передаю 1 или -1, но если я уменьшаю скорость перемещения в свойствах мыши в Панели Управления, курсор по экрану движется плавно
Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 20-06-2019 14:07 » 

точный алгоритм винды не знаю, можно попробовать построить модель движения мышки по существующим точкам, и фильтровать скорость и ускорение КИХ или БИХ фильтром (или пытаться зафиксировать ускорение/скорость) а затем интерполировать координаты с нужной скоростью обновления.
думаю алгоритм примерно такой должен быть. вроде все просто должно получатся.

PS то есть по существующим координатам считаете вектор скорости(лучше и ускорения тоже) - оно у вас получится с интервалом опроса мыши.
потом его усреднить за какой то интервал, но тут главное не переборщить чтоб мышка не двигалась после того как руку убрали.
а потом по вычисленному вектору скорости заново рассчитывать координаты уже с необходимым периодом, который меньше интервала опроса.

а можно наверное какие нибудь сплайн-интерполяции прикручивать, но по мне это еще менее понятно.



« Последнее редактирование: 20-06-2019 14:13 от Ochkarik » Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
Ллирик
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #2 : 20-06-2019 15:48 » 

Вот только мне не совсем понятно как в данном случае интерполировать единицу) ведь это число-то целое. Даже если я отправляю всего одну структуру MOUSE_INPUT_DATA со значением в LastX 1, то курсор мыши почему-то не на один пиксель на экране, а сразу на несколько
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #3 : 20-06-2019 16:25 » 

Ллирик, вот лично меня, как юзера, дико раздражает сглаживание курсора или прокрутки (некоторые сайты последним страдают) и даже текста. Зачем оно вообще нужно ? Стоит ли делать усилия при разработке, чтобы потом кого-то раздражать ? )
Записан

Ллирик
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #4 : 20-06-2019 16:50 » 

Алексей, а меня раздражает когда курсор мыши вместо одного пикселя перемещается аж на 4, и ты никак не можешь попасть в нужную точку)
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #5 : 20-06-2019 18:51 » new

Ллирик, раньше, помнится, ещё на XP было такое - через пиксель мыша двигалась. На семёрке такого нету у меня. Может, это мышка тогда такая была, конечно. Сейчас чётко позиционируется
Записан

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

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines