【发布时间】:2013-08-04 20:26:28
【问题描述】:
我正在尝试编写一个应用内操纵杆轴校准工具。
摇杆轴区域应该是一个矩形,但实际上它是一个非线性闭合曲线,我想提高精度。
校准应该这样工作: 我们有一个测量值,这样我们就得到了正确的值:
Correct value = [(measured value)/range] * wantedrange
其中范围是为该轴测量的最大值和最小值之间的差。 但是还有一个偏移量把中心点移动到正确的位置,怎么计算呢?
编辑:我还制作了一个图像:绿色矩形是预期区域,红色形状是“真实”的不准确测量区域,最后蓝色是我转移到 (0, 0) 这样我就可以使用比率将坐标转换为更大的绿色矩形。
EDIT2: 这张图片解释了校准如何更加准确,这要归功于 zapl 回答: 如果我们找到蓝色矩形的中心,我们可以将矩形分成 4 个矩形,并计算该范围与绿色矩形范围之间的比率。 代码应该是这样的:
if(value<axiscenter) correctedvalue = ((value-axismin)/(axiscenter-axismin)) * wantedaxisrange;
else correctedvalue = wantedaxisrange + ((value-offset-axiscenter)/(axismax-axiscenter-axismin)) * wantedaxisrange;
【问题讨论】:
标签: java android input joystick calibration