Способ отображения малых значений на большие и наоборот
В настоящее время я работаю над инструментом, который позволит использовать Wiimote в качестве компьютерной мыши, и я застрял в проблеме. Wiimote возвращает координаты x и y, которые очень малы по сравнению с разрешением экрана моего компьютера, и я ищу способ сопоставить эти маленькие значения с моими большими значениями разрешения.
Например, наименьшее значение x для ПК равно 0, а наибольшее значение для x равно 1300, и я также знаю, что наименьшее значение x равно 0, но большинство значений не известно.
Я просто хочу, чтобы wiimote перемещал указатель мыши на экране, не пересекая координаты экрана.
2 ответа
Большой Максимум / Маленький Максимум * Малое Значение = Большое Значение
Ваша проблема на самом деле отличается от того, что вы думаете. На самом деле у меня нет Wiimote (такого странного имени...), но я бы предположил, что он возвращает расстояние, а не позицию. Итак, что вам нужно сделать, это иметь позицию курсора:
Point pt=new Point(Width/2, Height/2);
// initialized in the center of the screen
и каждый раз, когда вы получаете событие обновления, вы добавляете расстояние до вашей точки:
// say you get the distance in dx and dy
pt.x=Math.Max(0,Math.Min(Width,pt.x+dx*sx)); // clamped on screen
pt.y=Math.Max(0,Math.Min(Height,pt.y+dy*sy)); // clamped on screen
// and update your UI acordingly
где sx
а также sy
являются значениями масштабирования для координат X и Y. Начните с 1,0 для каждого и тренируйтесь, пока не получите желаемую скорость движения.