Lazy.h

Kinectとかのハードウェアからとってきた値を使うような処理をしていると、値の細かなブレが歓迎されない状況が多いので、ブレを吸収するためのテンプレートクラスを作ってみました。

Lazy.h on gist

組み上げたアプリへの導入が簡単になるよう、=で代入して右辺値で取り出すっていうシンプルな使い方にしていますので、目的の値の宣言をLazy<>で囲むだけで導入できます。

実際、すでに作った処理に対して組み込む作業を自分でもやってますが、かなり楽ちんです。

例えばfloatならLazy<float>、oFでofPointならLazy<ofPoint>にすればOK。

コンストラクタの第一引数か、もしくはsetSize関数でバッファの大きさを指定してやれば、それだけでブレ補正してくれるはずです。この値が大きいほど補正が強くなります。

以下軽く注意。

  1. 左辺値としては=演算子しか実装してないので、それ以外の使い方をしてるところがあればコンパイルエラーがでます。適切に処理してあげてください。
  2. setSize(unsigned int), clear(), reset(const T&)という関数がもともと定義してある場合、おそらく意味が変わっている上にコンパイル時にエラーとならないので、適切に処理してください。
    ※Tは<>内で指定した型
  3. コンストラクタの意味が変わっているので、そこはチェックしてください。
  4. テンプレートなのでどんなクラスでも使えますが、=演算子、+演算子、/(float)演算子が(適切に)実装されていることが必要です。

 

ちなみに、細かい設定はできませんがアニメーションにも使用できます。

以下のコードは0から1までの値を10分割補間して出力します。
※whlieの条件が環境によってはヤバそうですが、サンプルってことでご容赦を。

Lazy<float> value(10);
value = 0;
while(value < 1.0f) {
	printf("%f\n", value);
	value = 1.0f;
}