中点位移算法的思路:就是递归的利用两点中间的那个点进行偏移,从中间往两侧不断的偏移,每次偏移的限制距离减半,利用这个递归的方法就可以画出随机的闪电形状
这个是挂在gitee上用cocoscreator画笔实现的一个demo
#### 核心算法函数 ###
drawLightning(x1,y1,x2,y2,displace)
{
if (displace < curDetail) {
graf.moveTo(x1,y1);
graf.lineTo(x2,y2);
}
else {
var mid_x = (x2+x1)/2;
var mid_y = (y2+y1)/2;
mid_x += (Math.random()-.5)*displace;
mid_y += (Math.random()-.5)*displace;
drawLightning(x1,y1,mid_x,mid_y,displace/2);
drawLightning(x2,y2,mid_x,mid_y,displace/2);
}
}
资料来源: 闪电发生器