我正在嘗試編寫一個應用程序內部操縱桿軸校準工具。算法來校準遊戲杆
操縱桿軸區域應該是一個矩形,但實際上它是一條非線性閉合曲線,我想提高精度。
校準應該以這種方式工作: 我們有一個測量值,而這樣一來,我們得到正確的值:
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;
嗨,我接受答案,因爲我意識到如何正確計算棒的中心。檢查我的編輯是否正常請不要:) – Vektor88
@ Vektor88應該工作,我想你得到的觀點是一樣的,如果你將藍色中心扔在變換公式中,因爲該變換將任何點以藍色映射到點以綠色。 – zapl
以上更廣義的版本將使用[2D變換矩陣](http://www.willamette.edu/~gorr/classes/GeneralGraphics/Transforms/transforms2d.htm) - 允許進行更多調整(剪切,旋轉, ..),因爲它同時查看兩個軸,而不是獨立處理它們。 – zapl