ユーザーが円形を描いたかどうかを検出する簡単なプログラム方法を検討しています。私は C で作業していますが、疑似コードから作業できることをうれしく思います。少しググると、(できれば) 非常に複雑なメソッドが多数表示されます。
マウスの座標をフロートとして追跡しており、時間の経過に伴うマウスの動きを追跡するためのベクトルの配列を作成しました。基本的に、円が描画されたことを検出し、その円に関連付けられていないすべての動きデータを破棄しようとしています。
これがどのように達成されるかについての基本的な考えがあります:
ポーリング機能を使用してすべての動きを追跡します。関数がポーリングされるたびに、現在のマウス位置が保存されます。ここでは、過去の位置データをループし、大まかな「位置へのスナップ」を実行して 2 つの位置を比較します。新しい場所が古い場所から十分に近い距離にある場合は、古い場所より前のすべての履歴データを削除します。
これは理論的には機能しますが、実際には混乱します。誰か提案はありますか?提案された方法が時計回りまたは反時計回りに描かれたかどうかを検出できる場合のボーナスポイント.