Android画面でユーザーが手描きした線を配列に「サンプリング」したいと思います。x座標は等距離になり、1D配列のインデックスになる可能性が非常に高くなります。
たとえば、ユーザーが近似正弦波を描画した場合、その近似正弦波をさらに別のグラフに変換したり、オーディオ合成で使用したりできる配列を作成したいと考えています。
アプローチに関する基本的なアイデアがあります。配列から始めます。
float samples[] = new float[100] // or some other arbitrary number
次に、ontouch メソッド:
@Override
public boolean onTouch(View v, MotionEvent event) {
float x = event.getX();
float y = event.getY();
if(event.getAction() == MotionEvent.ACTION_DOWN || event.getAction() == MotionEvent.ACTION_MOVE){
// assume we translate x into relative index from 0-99 at this point
if(!xHasPoint(x, samples)){
drawNewPoint();
samples[x] = y;
}
invalidate();
return true;
}
else{
invalidate();
return false;
}
}
private static boolean xHasPoint(float x, float[] a){
if(a[x] == !null){
return true;
}
else{
return false;
}
}
私の質問は、この問題に対するより良いアプローチを提案できますか? 大量のデータを推定する必要があると予想しています...最後に配列をループし、null インデックスを割り当てて、最も近い非 null 値からの平均値を割り当てます。
一方、これが間違っていないように思われる場合、重要な全体像に関する考慮事項を見逃しているのでしょうか?