将小值映射到大型和反之亦然的方法

时间:2010-09-13 03:13:57

标签: c# wiimote coordinate

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

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

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

2 个答案:

答案 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

其中sxsy是X和Y坐标的缩放值。从每个1.0开始,一直玩,直到你得到你想要的移动速度。