我目前正在开发一种工具,可以将Wiimote用作计算机鼠标并遇到问题。 wiimote返回的x和y坐标与我的电脑的屏幕分辨率相比非常小,我正在寻找一种方法将这些小值映射到我的大分辨率值。
例如,pc最小x值为0,大多数x值为1300,我也知道wiimote最小x值为0但不知道最大值。
我只是希望wiimote在屏幕上移动鼠标指针而不会越过屏幕坐标。
答案 0 :(得分:2)
大最大/小最大*小值=大值
答案 1 :(得分:0)
你的问题实际上与你的想法不同。我实际上没有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开始,一直玩,直到你得到你想要的移动速度。