Dr.*_*ius 22
看看我是否理解你想要的东西.假设您的图像坐标从0到1.
如果你这样做:
r = Sqrt[(x - .5)^2 + (y - .5)^2]
a = ArcTan[x - .5, y - .5]
rn = r^2.5/.5
Run Code Online (Sandbox Code Playgroud)
然后根据以下内容重新映射您的像素:
x -> rn*Cos[a] + .5
y -> rn*Sin[a] + .5
Run Code Online (Sandbox Code Playgroud)
你得到:
您可以调整参数以获得更大或更小的凸起.
编辑
让我们看看我是否理解你关于翘曲的评论.使用生成以下图像
rn = r^k {k: 1 ... 2}:
Run Code Online (Sandbox Code Playgroud)
Agn*_*kas 14
GLSL代码版本:
uniform sampler2D tex;
void main()
{
vec2 cen = vec2(0.5,0.5) - gl_TexCoord[0].xy;
vec2 mcen = - // delete minus for implosion effect
0.07*log(length(cen))*normalize(cen);
gl_FragColor = texture2D(tex, gl_TexCoord[0].xy+mcen);
}
Run Code Online (Sandbox Code Playgroud)
原版的:
爆炸:
爆:
干杯!