首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在精确像素中移动JoyStick

在精确像素中移动JoyStick
EN

Stack Overflow用户
提问于 2018-12-14 06:10:00
回答 1查看 113关注 0票数 0

我正在做一个项目,我想要移动一个虚拟操纵杆(vJoy) x像素的数量。然而,我找不到一种方法将像素转换为操纵杆的轴(轴是-32768到32767)。举例说明可能更有帮助:

假设我想在100毫秒的给定时间内在x轴上移动50个像素,因此我必须在-32768到32767之间找到精确的轴向力,它将在给定的时间内移动对象50个像素。

由于我对动作的精确度要求很高,我被一种可以完成这项任务的方法难住了。任何帮助我们都将不胜感激

谢谢

EN

回答 1

Stack Overflow用户

发布于 2018-12-14 06:44:08

  1. 计算出物理操纵杆轴可以遍历的总范围。您已经指定了从-32768到32767的最小值和最大值,总范围为65535。
  2. 计算出您希望虚拟操纵杆(vJoy)能够移动的总像素范围。假设它从像素位置0开始,其最小和最大允许值分别为-100和100。这给了我们200的总射程,

  1. ,现在,计算出物理操纵杆在每个虚拟操纵杆运动中应该移动多少单位。我们通过除以: 65535 / 200 (物理操纵杆范围/虚拟操纵杆范围),得到327.675。这个数字在假设条件下意味着“虚拟操纵杆每移动一个像素,物理操纵杆就移动327.675个像素”。让我们将这个值赋给变量"axis_per_pixel“。
    1. 最后,如果我们知道值轴的值已经被数量"a“改变了(从你的例子50),我们可以通过乘以:a* axis_per_pixel来确定物理操纵杆的值需要改变多少。在我们的示例中,这将是50 * 327.675,即16383.75。因此,当虚拟操纵杆位置增加50时,物理操纵杆位置应增加16383.75至match.

我将给出一个代码示例。您将其标记为Python,但我将用JavaScript回答,因为我的Python仍然有点粗糙。希望它足够清晰。

代码语言:javascript
复制
function getPositionIncrease(
  minPixelValue, // lowest allowed pixel position, ie -100
  maxPixelValue, // highest allowed pixel position, ie 100
  minAxisValue, // lowest allowed axis value, ie -32768
  maxAxisValue, // highest allowed axis value, ie 32767,
  pixelDelta, // what amount the pixel position has changed by
) {
  const distPixel = maxPixelValue - minPixelValue;
  const distAxis = maxAxisValue - minAxisValue;
  const axisPerPixel = distAxis / distPixel;
  const axisDelta = pixelDelta * axisPerPixel; // how much the physical axis needs to change to match
  return axisDelta;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53770792

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档