Способ отображения малых значений на большие и наоборот

В настоящее время я работаю над инструментом, который позволит использовать 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 для каждого и тренируйтесь, пока не получите желаемую скорость движения.

Другие вопросы по тегам