码迷,mamicode.com
首页 > 其他好文 > 详细

ActionScript3游戏中的图像编程(连载八十九)

时间:2014-09-23 15:38:54      阅读:155      评论:0      收藏:0      [点我收藏+]

标签:actionscript 3.0   flash   图像处理   数学   游戏   

总目录: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得到divisor
var 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),这种掉渣其实也有专业术语可以描述,叫做振铃现象(就好比铃铛,音钗等发声体振动时的感觉)。

 

bubuko.com,布布扣

图 4.57 改用圆矩阵后的效果

ActionScript3游戏中的图像编程(连载八十九)

标签:actionscript 3.0   flash   图像处理   数学   游戏   

原文地址:http://blog.csdn.net/iloveas2014/article/details/39498407

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!