Может ли какой-нибудь алгоритм деформирования изображения? В частности, для эффекта выпуклости?
Image Warping - Алгоритм эффекта ударной волны
Ответ 1
Посмотрите, понял ли я, что вы хотите. Предположим, что ваши координаты изображения идут от 0 до 1.
Если вы выполните:
r = Sqrt[(x - .5)^2 + (y - .5)^2]
a = ArcTan[x - .5, y - .5]
rn = r^2.5/.5
И затем перенастройте свои пиксели в соответствии с:
x -> rn*Cos[a] + .5
y -> rn*Sin[a] + .5
Вы получаете:
Вы можете настроить параметры для увеличения или уменьшения выступов.
Изменить
Посмотрим, понял ли я ваш комментарий о короблении. Следующие изображения создаются с использованием
rn = r^k {k: 1 ... 2}:
Ответ 2
Версия кода 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);
}
оригинал:
взрыв:
имплозии:
ура!