ジェスチャー座標(3軸-x、y、z)を取得しているアンドロイドアプリケーションがあります。私は私のDBにある座標とそれらを比較し、それらが同じかどうかを判断する必要があります。グラフの値や構造を比較する
加速度計(ジェスチャーをキャプチャするデバイス)は非常に敏感なので、いくつかの許容誤差を追加する必要もあります。それは簡単ですが、私はまた考えてみたいと思います。空気中に描かれた "大きな円"、空中に描かれた "小さな円"と同じ。異なる値が存在することを意味しますが、グラフの構造は同じでしょうか?
グラフの値をビットに変換して比較することについて聞いたことがあります。それは正しいアプローチですか?そのような比較のためのライブラリはありますか?
これまでのところ、最後のもの(大きな円と小さな円)以外のすべての要件をカバーしています。
私のコード今:
private int checkWhetherGestureMatches(byte[] values, String[] refValues) throws IOException {
int valuesSize = 32;
int ignorePositions = 4;
byte[] valuesX = new byte[valuesSize];
byte[] valuesY = new byte[valuesSize];
byte[] valuesZ = new byte[valuesSize];
for (int i = 0; i < valuesSize; i++) {
int position = i * 3 + ignorePositions;
valuesX[i] = values[position];
valuesY[i] = values[position + 1];
valuesZ[i] = values[position + 2];
}
Double[] valuesXprevious = new Double[valuesSize];
Double[] valuesYprevious = new Double[valuesSize];
Double[] valuesZprevious = new Double[valuesSize];
for (int i = 0; i < valuesSize; i++) {
int position = i * 3 + ignorePositions;
valuesXprevious[i] = Double.parseDouble(refValues[position]);
valuesYprevious[i] = Double.parseDouble(refValues[position + 1]);
valuesZprevious[i] = Double.parseDouble(refValues[position + 2]);
}
int incorrectPoints = 0;
for (int j = 0; j < valuesSize; j++) {
if (valuesX[j] < valuesXprevious[j] + 20 && valuesX[j] > valuesXprevious[j] - 20
&& valuesY[j] < valuesYprevious[j] + 20 && valuesY[j] > valuesYprevious[j] - 20
&& valuesZ[j] < valuesZprevious[j] + 20 && valuesZ[j] > valuesZprevious[j] - 20) {
} else {
incorrectPoints++;
}
}
return incorrectPoints;
}
EDIT:
私はそれがうまくいくかもしれない、JGraphT
を発見しました。あなたがすでにそれについて知っているなら、私に知らせてください。
EDIT2:
は、彼らが同じジェスチャーしているが、1つが他より遅い運動で行われ、これらの画像を参照してください。 1
私は1つが他よりも小さいだろうと同じジェスチャーの画像をキャプチャしていませんが、その後に追加される場合があります。
は、パフォーマンスや保守性、あなたが探しているものの中で最も重要な側面ですか? – Emz
いいえ。私はそれが遅くなることはできませんが、それは雷が速い必要はありませんことを意味します。 –