2013-06-19 171 views
1

所以,我試圖創建一個徑向漸變(用於遊戲中的靜態照明)。我想出了這個:平滑徑向漸變

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); 

但結果我得到的是:

enter image description here

我想獲得更平滑的梯度,如:

enter image description here

我試着玩弄臺階和強度,但我無法得到類似於上面漸變的東西。 什麼是這樣做的好方法? 在此先感謝!

+0

無需在標題中包含標籤。刪除;) – Burkhard

+0

我的壞!謝謝! – Sylar

+0

難道問題是你正在繪製每一個新的圓的頂部,從而導致阿爾法「堆疊」,並增加更快? –

回答

2

我沒有具體的答案,但第二張照片的外觀給我留下的印象是,強度不是線性遞減,而是呈指數形式。

你可以試試,而不是做一個線性遞減函數,而是使用指數函數?對於每一步向外,將強度乘以固定數字a < 1.

+0

也許不是完全指數級的,但很可能是超線性的。 –

+1

謝謝! ...我拿出你的答案並決定使用它,但方式相反。我從外圈開始,向內走。以一個非常低的起始強度(例如0.01),我將它乘以一個固定的數字> 1(例如1.02),這給了我想要的確切結果,以及更多的控制! – Sylar

+0

@Sylar偉大的我可以幫忙,你使用的方式很有趣:) –