我目前正在研究一種工具,該工具將允許將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(這樣一個狡猾的名字..),但我會假設它返回距離,而不是位置。所以,你必須做的是有一個光標位置:
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開始玩,直到你得到你想要的移動速度。
我想我沒有傳達這個問題。舉例來說,我有兩個矩形,一個大小(200,200)和另一個大小(400,400),現在wiimote返回的是大小(400,400),但我的屏幕是(200,200),如果wiimote返回379,矩形大小(400,400),但在外面(200,200),在這裏我需要一個機制來將值從大矩形轉換爲小矩形,反之亦然。 – Neutralizer 2010-09-13 03:54:26
我需要試試這個。 – Neutralizer 2010-09-13 04:00:36
從我可以告訴它是一個簡單的比例。你的大數值範圍是0-1300,小數值範圍可以是0-100。所以說你想要找到大數值在哪裏,你應該做的小數值爲50: 1300/100 * 50 = 650 – 2010-09-13 05:10:09
這個只有當你知道兩個系統的上限時纔有效。烏梅爾阿什拉夫告訴他,他不知道最大的價值 – 2010-09-13 05:16:59