0

我目前正在开发一种工具,该工具将允许 Wiimote 用作计算机鼠标并遇到问题。wiimote 返回的 x 和 y 坐标与我的电脑的屏幕分辨率相比非常小,我正在寻找一种方法将这些小值映射到我的大分辨率值。

例如,pc 最小 x 值为 0,大多数 x 值为 1300,我也知道 wiimote 最小 x 值为 0 但不知道最大值。

我只希望 wiimote 在屏幕上移动鼠标指针而不跨越屏幕坐标。

4

2 回答 2

2

大最大值 / 小最大值 * 小值 = 大值

于 2010-09-13T03:19:37.293 回答
0

您的问题实际上与您认为的不同。我实际上没有 Wiimote (这样一个古怪的名字..),但我认为它返回distance而不是position。所以你要做的是有一个光标位置:

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

其中sxsy是 X 和 Y 坐标的缩放值。从每个 1.0 开始,然后一直玩,直到获得所需的移动速率。

于 2010-09-13T03:23:32.777 回答