我正在尝试编写一个应用内操纵杆轴校准工具。
摇杆轴区域应该是一个矩形,但实际上它是一个非线性闭合曲线,我想提高精度。
校准应该这样工作:我们有一个测量值,这样我们就可以得到正确的值:
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;