a = arctg ( y / x ) x = r * cos ( a ) y = r * sin ( a ) 下面是一段是模拟极坐标滤镜工作的伪代码。这个代码并不是我编写的,我也只是看懂而已,更详细的解释可以参考下面的链接: http://www.jasonwaltman.com/thesis/filter-polar.html (这是个国外的网站,站主利用C 模拟出了一些PS的滤镜的效果,而且提供源代码和源程序。) for every pixel in the original image do { // x和y是当前象素在直角坐标内的坐标。 // 图像中心点的坐标为 x = 0, y = 0。 // r 和 a 是象素的极坐标。其中角度a为弧度单位。 r = sqrt ( x * x y * y ); a = atan2 ( y / x ); // R取图像长和宽的最小值的一半。 R= min[ image_width , image_height ] / 2 // 新的x和y是经过极坐标滤镜变换之后,象素在直角坐标系中的新坐标。这个转换的目的,特别是R和6.2832(2pi)的选择,我认为是将转换后的图像限定到原画布大小之内的作用。同时这个步骤最终导致了图像的变形。 x = r * image_height / R; (责任编辑:bbs.16xx8.com) |