色のシーケンスを徐々に補間または変更する必要があるため、colorAからcolorB、colorC、colorDに戻り、colorAに戻ります。これは、ミリ秒単位の経過時間に基づく必要があります。ヘルプは大歓迎です(アルゴリズム、疑似コードは素晴らしいでしょう)。
RGBを使用していることに注意してください。これは、0〜255または0.0〜1.0の範囲である可能性があります。
これは私がこれまでに持っているものです。「timePeriod」ごとに色を変更する必要があります。経過時間の割合を計算して色を変更します。このコードの問題は、AからAに移行するときにジャンプすることです。 BからB、Cなど
int millisNow = ofGetElapsedTimeMillis();
int millisSinceLastCheck = millisNow - lastTimeCheck;
if ( millisSinceLastCheck > timePeriod ) {
lastTimeCheck = millisNow;
millisSinceLastCheck = 0;
colorsIndex++;
if ( colorsIndex == colors.size()-1 ) colorsIndex = 0;
cout << "color indes: " << colorsIndex << endl;
cout << "color indes: " << colorsIndex + 1 << endl;
}
timeFraction = (float)(millisSinceLastCheck) / (float)(timePeriod);
float p = timeFraction;
colorT.r = colors[colorsIndex].r * p + ( colors[colorsIndex+1].r * ( 1.0 - p ) );
colorT.g = colors[colorsIndex].g * p + ( colors[colorsIndex+1].g * ( 1.0 - p ) );
colorT.b = colors[colorsIndex].b * p + ( colors[colorsIndex+1].b * ( 1.0 - p ) );
colorT.normalize();
前もって感謝します