現在、私はソフトウェア会社でインターンをしています。私の仕事の1つは、マウスジェスチャーの認識を実装することです。上級開発者の1人が私が始めるのを手伝ってくれ、1ドルのUnistrokeRecognizerhttp://depts.washington.edu/aimgroup/proj/dollar/を使用するコード/プロジェクトを提供してくれました。私は大まかに言って、1ドルのUnistroke Recognizerが何をしているのか、そしてそれがどのように機能するのかを理解していますが、その内部/詳細のすべてを理解しようとすると少し圧倒されます。
私の問題は、マウスを下に動かしてから上に動かすジェスチャを認識しようとしていることです。1ドルのUnistrokeRecognizerは、私が作成したジェスチャが下向きのジェスチャであると判断します。これは、実際に実行する必要があることです。私が本当にやりたいのは、「私は下向きのジェスチャーを認識し、次に上向きのジェスチャーを認識します」と言うことです。
$ 1 Unistroke Recognizerの理解が不足しているために頭が痛くなっているかどうかはわかりませんが、マウスを下から上に動かす2つの異なるジェスチャを認識する方法について誰かが考えていますか?
これが私に役立つかもしれないと思った私の考えですが、専門家であるか、私より少しだけ知っている誰かがあなたの考えを私に知らせてくれることを望んでいます。あなたが知っているどんな助けやリソースも大歓迎です。
私のアプリケーションは現在どのように機能しますか:
私の現在のアプリケーションが機能する方法は、ユーザーがマウスの左ボタンを押している間、マウスカーソルがある場所からポイントをキャプチャすることです。次に、ポイントのリストがジェスチャレコグナイザにフィードされ、キャプチャされたポイントに対応する最良の形状/ジェスチャであると思われるものが吐き出されます。
私の考え:
私がやりたかったのは、ポイントをジェスチャレコグナイザーにフィードする前に、どういうわけかすべてのポイントを調べて、それらを別々の線または曲線に分割することです。このようにして、各ライン/カーブを一度に1つずつフィードし、下、上、左、右、対角線、およびカーブの基本的な動きから、最終的な形状/ジェスチャを決定できます。
ポイントのリストに個別の線があるかどうかを判断するのに役立つと思った1つの方法は、ポイントのグループをサンプリングし、それらの勾配を調べることです。サンプリングされたポイントのグループの傾きが他のサンプリングされたポイントのグループとX%異なる場合は、実際に別の線が存在すると想定しても安全です。
私が考えることは私の思考で起こりうる問題です:
行の終わりと別の行の開始はどこで確認できますか?ポイントのグループの傾きをチェックするというアイデアを使用して、別の線が存在すると判断した場合、それは必然的に別の線の傾きを見つけたことを意味しません。たとえば、直角にまっすぐなエッジの「L」を描画し、「L」の角の周りのポイントの勾配をサンプリングすると、勾配は別の線が存在することを合理的に示しますが、これらのポイントは、別の行の先頭に対応していません。
絶えず変化する曲線の傾きにどう対処するか?私が使用しているジェスチャレコグナイザーは、カーブを希望どおりに処理します。ただし、ポイントのグループをサンプリングすると勾配が常に変化するため、個別の線を決定するために使用する方法で、曲線内のこれらのいわゆる個別の線を探し続けることは望ましくありません。勾配がX%を超えて連続して何度も変化したら、サンプリングポイントを停止するだけでよいでしょうか。
別々の行を決定するために正しい「タイプ」の数学を使用していません。数学は私の最強の科目ではありませんが、私はいくつかの研究をしました。ドット積を調べて、それが私をある方向に向けるかどうかを確認しようとしましたが、そうなるかどうかはわかりません。誰かがこのようなことや他の方法を行うためにDotProdcutsを使用したことがありますか?
最終的な考え、意見、そして感謝:
私の問題の一部は、私が自分の質問を完全に行う方法がわからないということです。この問題が(何らかの形で)すでに尋ねられていて、Googleで解決できる解決策が存在する場合でも、私は驚かないでしょう。しかし、私はまだ質問をする方法が正確にわからないため、Googleでの検索結果は解決策を提供しませんでした。混乱していると思われる場合は、どこで、なぜか教えてください。明確にするためにお手伝いします。そうすることで、Googleでの検索がより正確になり、解決策を見つけることができるようになるかもしれません。
投稿を読んでくれてありがとう。私はその長いことを知っていますが、他にどこにそれを尋ねるべきか本当に知りませんでした。Immaはオフィスの周りの他の人と話をしますが、学校全体で使用した私の最高のソリューションはすべてStackOverflowコミュニティからのものであるため、ありがとうございます。
この投稿の編集:
(7/6 4:00 PM)私が考えたもう1つのアイデアは、最小/最大ポイントの前にすべてのポイントを比較することでした。たとえば、マウスを下から上に動かした場合、開始点は現在の最大点になり、マウスを上に戻し始めた点は最小点になります。次に、先に進んで、最小点の後に点があるかどうかを確認し、ある場合は、新しい潜在的な線がある可能性があると言います。これが星のような他の形でどれほどうまくいくかはわかりませんが、それは私が調べようとしている別のことです。誰かが以前にこれに似た何かをしたことがありますか?