【问题标题】:Smooth radial gradient平滑径向渐变
【发布时间】:2013-06-19 14:40:57
【问题描述】:

所以,我正在尝试创建径向渐变(用于游戏中的静态照明)。我想出了这个:

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

但我得到的结果是这样的:

我想要一个更平滑的渐变,比如:

我尝试调整步长和强度,但我无法获得类似于上述渐变的效果。 这样做的好方法是什么? 提前致谢!

【问题讨论】:

  • 不需要在标题中包含标签。删除 ;)
  • 问题会不会是您在旧圆上绘制每个新圆,从而导致 alpha“堆叠”并增加得更快?
  • 乍一看,这似乎是您真正想要完成的事情,因为您使用的是恒定的 alpha,nvm...

标签: java algorithm gradient radial


【解决方案1】:

我没有具体的答案,但第二张照片的样子给我的印象是强度不是线性下降,而是呈指数下降。

您可以尝试使用指数函数而不是线性递减函数吗?对于每一步,将强度乘以一个固定的数字a

【讨论】:

  • 也许不完全是指数的,但很可能是超线性的。
  • 谢谢! ...我接受了您的回答并决定使用它,但以相反的方式。我从外圈开始,向内走。在非常低的起始强度(例如 0.01)下,我将它乘以 > 1 的固定数字(例如 1.02),这给了我想要的确切结果,以及更多的控制!
  • @Sylar 太好了,我可以帮忙,你使用的方式很有趣:)
猜你喜欢
  • 2012-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多