(とにかく私にとって) 興味深い問題があります。私は V4 の OpenServo.org に取り組んでおり、円弧の長さとその方向を決定しようとしています。
シャフトの位置を 0 から 4095 に戻す磁気エンコーダーがあります。
サーボには 2 つの論理的な終点があり、MAX と MIN と呼ばれます。これらはソフトウェアで設定され、いつでも変更できます。シャフトは、MAX と MIN の位置の間で 1 つの円弧上を回転 (つまり、移動) する必要があります。たとえば、図の青い弧は有効ですが、赤い弧は MIN と MAX を含むすべての移動に対応しているわけではありません。
整数演算のみを使用して、円周上の任意の 2 点 A と B の間の距離を知ることができる単純なアルゴリズムを作成しようとしています。MIN と MAX で囲まれ、A が現在の場所であり、B がターゲットの位置、または B が現在の場所で、A がターゲットです (B から A までの負の距離で示されます)。私が旅行を許可した側はわかっていることに注意してください。それは「赤」または「青」です。
問題は、4095/0 が ARC に存在する場合、計算が少し興味深いものになることです。