【问题标题】:Way to Map Small Values to Large and Vice Versa将小值映射到大值的方法,反之亦然
【发布时间】:2010-09-13 03:13:57
【问题描述】:

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

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

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

【问题讨论】:

    标签: c# wiimote coordinate


    【解决方案1】:

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

    【讨论】:

    • 据我所知,这是一个简单的比率。你的大值范围是 0 - 1300,小值可能是 0 - 100。所以假设你想找到大值中小值 50 所在的位置:1300 / 100 * 50 = 650
    • 这只有在你知道两个系统的上限时才有效。 Umair Ashraf 告诉他不知道 wiimote 的最大值
    【解决方案2】:

    您的问题实际上与您认为的不同。我实际上没有 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 开始,然后一直玩,直到获得所需的移动速率。

    【讨论】:

    • 我想我没有传达问题。比如说我有两个矩形,一个大小(200,200)另一个大小(400,400)现在wiimote返回的是大小(400,400),但我的屏幕是(200,200),如果wiimote返回379,它小于矩形的大小(400,400) 但在 (200,200) 之外,这里我需要一种机制来将值从大矩形转换为小矩形,反之亦然。
    猜你喜欢
    • 1970-01-01
    • 2011-06-24
    • 2018-02-05
    • 2017-11-17
    • 1970-01-01
    • 2013-09-21
    • 2011-06-15
    • 1970-01-01
    相关资源
    最近更新 更多