2016-09-26 8 views
1

スケッチの始めからフェードインするカラースペクトルを作成しようとしています。これを行うには、単にcolorMode(HSB、255)を設定し、ストローク(map(x、0、width、0、255)、255、255、5)で線を引いて、背景を消去しないでください。 5のアルファはそれ自身で構築され、最終的には固いスペクトルを作り出します。しかし、スペクトルは滑らかな遷移ではなく、色のブロックに分割されます。私はアルファなしでプログラムをテストし、それは滑らかなスペクトルを作るので、それはアルファ値のためです。アルファがスムーズなカラースペクトルを妨げる - 処理

なぜこのようなことが起こりますか、どうすれば解決できますか?

全コード:出力の

void setup(){ 
    size(500, 500); 
    colorMode(HSB, 255); 
} 
void draw(){ 
    for(int x = 0; x < width; x++){ 
    stroke(map(x, 0, width, 0, 255), 255, 255, 5); 
    line(x,0,x,height); 
    } 
} 

画像:あなたは、透明性の上に透明の上に透明性を描いているので、これが起こっているunwanted output

答えて

1

これは、ターゲットの色を濃く濃くする効果がありません。ソリッドカラーに収束する効果があります。透明な色はで、が追加されているので、複数の値が同じ色に収束します。

ポイントは透明度の上に透明度を描画する代わりに、background()関数を呼び出して古い色を消去し、アルファ値が増加する色を再描画する必要があります。ここでは例です:

void setup() { 
    size(500, 500); 
    colorMode(HSB, 255); 

} 
void draw() { 

    float alpha = constrain(frameCount, 0, 255); 

    background(200); 

    for (int x = 0; x < width; x++) { 
    stroke(map(x, 0, width, 0, 255), 255, 255, alpha); 
    line(x, 0, x, height); 
    } 
} 

color spectrum

+1

は、私は今何が起こっているかを理解し、説明をありがとう! – SorenLantz

+0

@SorenLantz問題ありません。これは興味深い質問でした。間違いなく数分間私の頭を傷つけてしまった! –

関連する問題