我目前正在开发一种工具,该工具将允许 Wiimote 用作计算机鼠标并遇到问题。wiimote 返回的 x 和 y 坐标与我的电脑的屏幕分辨率相比非常小,我正在寻找一种方法将这些小值映射到我的大分辨率值。
例如,pc 最小 x 值为 0,大多数 x 值为 1300,我也知道 wiimote 最小 x 值为 0 但不知道最大值。
我只希望 wiimote 在屏幕上移动鼠标指针而不跨越屏幕坐标。
我目前正在开发一种工具,该工具将允许 Wiimote 用作计算机鼠标并遇到问题。wiimote 返回的 x 和 y 坐标与我的电脑的屏幕分辨率相比非常小,我正在寻找一种方法将这些小值映射到我的大分辨率值。
例如,pc 最小 x 值为 0,大多数 x 值为 1300,我也知道 wiimote 最小 x 值为 0 但不知道最大值。
我只希望 wiimote 在屏幕上移动鼠标指针而不跨越屏幕坐标。
大最大值 / 小最大值 * 小值 = 大值
您的问题实际上与您认为的不同。我实际上没有 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
其中sx
和sy
是 X 和 Y 坐标的缩放值。从每个 1.0 开始,然后一直玩,直到获得所需的移动速率。