G'モーニングSO-
ビデオのバウンディングボックスを移動しようとしています。私はある種のこだわりのポイントにいます。15フレームごとにデータファイルにフレームがある場合、実際の各フレームの間に14フレームを作成する必要があります。これはツール(実際にはffmpegプラグインの一部)であるため、どのギャップサイズでも機能する必要があります。
2点間の距離と、始点から終点までスムーズに移行するために必要なフレーム数を取得する関数を作成しました。この関数が理想的に返すのは、前のフレームからシフトするピクセル数の配列です。
たとえば、フレーム1のxが50で、フレーム16のxが65の場合、各フレームが前のフレームに1を追加するように、すべて1の配列を作成します。これが私がこれまでに得たものです:
int* generateSequence(int difference, int numStep){
int* sequence = (int*)malloc(sizeof(int*)*numStep);
int i;
for(i=0; i<numStep; i++){
sequence[i] = 0;
}
while(difference > numStep){
for(i=0; i<numStep; i++){
sequence[i]++;
}
difference -= numStep;
}
私はこの部分に満足しています(これは、間にあるフレームの数に対する2つの間の距離の倍数ごとに、間にある各フレームに1を追加します)。
しかし今、私はいくつかのフレームに1つを追加する必要があるところまで来ていますが、すべてではありません。私が持っているのは、さまざまなフレーム距離を生成するツールに対してあまり移植性がない、これらの仮帆装アルゴリズムだけです...
double delta = difference/numStep;
if(delta >=.05 && delta< .20){
for(i=0; i<numStep; i+=6){
sequence[i]++;
}
}
モジュラス演算子を使用する必要がありますか、それとも別の方法でアプローチする必要がありますか?任意の値のように見えるハードコーディングは、私にはあまり適していません。