首页 > 代码库 > ActionScript3游戏中的图像编程(连载八十九)
ActionScript3游戏中的图像编程(连载八十九)
总目录:http://blog.csdn.net/iloveas2014/article/details/38304477
4.5.3 基于距离的加权平均矩阵
现在,我们再测试一下那种圆形模糊的矩阵,对于3*3的矩阵来说,上下左右,以及中心这5个点为1.4,而矩阵四个角上的元素就是1,其计算依据是被卷积点到中心点的距离。这一规则对其它尺寸的矩阵仍然适用,所以我们在getConFilter的数组循环里实现这样的一个算法:
private function getConFilter(matrixSize:int, bias:Number = 0, preserveAlpha:Boolean = true, clamp:Boolean = true, color:uint = 0, alpha:Number = 0):ConvolutionFilter{ var amount:int = matrixSize * matrixSize;var divisor:Number = 0; //因为矩阵的元素值不再等于1,所以不能直接用matrixSize*matrixSize得到divisorvar arr:Array = [];for(var i:int = 0; i < amount; i ++){ var matrixX:int = i % matrixSize; //矩阵的横坐标(行数) var matrixY:int = i / matrixSize; //矩阵的纵坐标(行数) var disX:int = matrixX - matrixSize; var disY:int = matrixY - matrixSize; var value:Number = Math.max(0, matrixSize - Math.sqrt(disX * disX + disY * disY)); //距离越大,要取的色彩数量越少,大于10的将不取色 arr[i] = value; divisor += value; //累加到divisor上}return new ConvolutionFilter(matrixSize, matrixSize, arr, divisor * 0.5, bias, preserveAlpha, clamp, color, alpha);}
由于大于matrixSize的边角点不再参与运算,所以最后的效果您已经看不到边角处有明显的方块了,当然掉渣的现象依然存在(图 4.57),这种掉渣其实也有专业术语可以描述,叫做振铃现象(就好比铃铛,音钗等发声体振动时的感觉)。
图 4.57 改用圆矩阵后的效果
ActionScript3游戏中的图像编程(连载八十九)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。