水波紋效果通過像素座標重映射實現:以圖像中心為極坐標原點,根據像素到中心的距離 r0 計算位移量,模擬水波從中心向外擴散的視覺效果。
int x1 = (int)new_x, y1 = (int)new_y;
float p = new_x - x1, q = new_y - y1;
// 邊界裁剪
x1 = clamp(x1, 0, width-2);
y1 = clamp(y1, 0, height-2);
// 雙線性插值公式
for (int k = 0; k < 3; ++k) { // 三通道
dst.at(y, x)[k] =
(1-p)*(1-q)*src.at(y1, x1)[k] +
p*(1-q)*src.at(y1, x1+1)[k] +
(1-p)*q*src.at(y1+1, x1)[k] +
p*q*src.at(y1+1, x1+1)[k];
}


A(振幅):控制波紋高度,值越大扭曲越明顯。B(頻率):控制波紋密度,值越大波紋越密集。t 實現動態水波動畫:sin(B*0.1*r0 + t)。