ユーザーがキャンバスに描いているものに基づいて、ポイント/ライン検出ソフトウェアを作成しようとしています(これはすべて、Webおよびhtml 5キャンバスを介して行っています)。ユーザーが MouseDown イベントを実行すると、描画のすべてのポイントを保持する配列が作成されます。その後の各 MouseMove イベントは、点 (x, y) を配列にプッシュします。MouseUp イベントは、ユーザーの描画の終了を通知します。これらのポイントを使用して、ユーザーが明確に方向を変えた場所を特定します。次の例を見てください。
上記の方法により、次の順序付けられたポイントのセットが生成されました。
[(1, 1), (2, 2), (3, 3), (4, 4), (5, 5), (6, 4), (7, 3), (8, 2)]
したがって、これらのポイントに基づいて、ユーザーがポイント (5, 5) 以降で明確に方向を変えたことがわかります。プログラムの結果は、3 つのポイント [(1, 1), (5, 5), (8, 2)] を与えることになります。これは、シーケンスの最初のポイントを使用し、方向の明確な変化を見つけて取得しようとするためです。シーケンスの最後のポイントを使用します。
上記の例は、ポイントの数とそれらが完全に直線上にあるという事実のために、非常に単純化されています。ユーザーが実際にキャンバスに描画しているとき、線は完全にまっすぐではありません。私の目的では、ユーザーは直線的な線を描いており、露骨に曲線を描いているわけではないと想定できます。
上記の情報に基づいて、どのアルゴリズム、方法論などを使用することをお勧めしますか?
編集:タイプミス