2

だから、放射状のグラデーションを作成しようとしています(ゲームの静的照明用)。私はこれを思いついた:

int step = 4;
int forLen = (radius / step);
g.setColor(new Color(0, 0, 0, intensity));
for (int i = 0; i < forLen; i++)
    g.fillOval(radius - i * step, radius - i * step, i * step * 2, i * step * 2);

しかし、私が得る結果はこれです:

ここに画像の説明を入力

次のように、より滑らかなグラデーションを取得したいと思います。

ここに画像の説明を入力

ステップと強度をいじってみましたが、上のグラデーションのようなものは得られません。これを行う良い方法は何でしょうか?? 前もって感謝します!

4

1 に答える 1

2

具体的な答えはわかりませんが、2 番目の写真を見ると、強度が直線的にではなく、指数関数的に減少しているような印象を受けました。

線形減少関数を実行する代わりに、代わりに指数関数を使用してみてください。外側に一歩進むごとに、強度に固定数a< 1 を掛けます。

于 2013-06-19T14:54:22.823 に答える