首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

5区法平均分点

2012-07-15 
五区法平均分点今天这个项目的一个算法,想让网页中的所有指定层随机在网页中排布,开始用的是用Math.random

五区法平均分点
今天这个项目的一个算法,想让网页中的所有指定层随机在网页中排布,开始用的是用Math.random()来进行取点,但是这样的点阵下来有时候某区间下点的密度较高,所以才想出来这个法子~,如果还有更好的算法的话可以贴出来给偶学习学习:-)
画个草图出来说明什么是“五区法”:

这种形式的话给5区点比例会多一点,但是比系统的随机函数给的不一定区域的密集还是好看点的,而且进入网页是如果左上区域内容不多的话,视线会移动到中间区域的!具体用户视觉没学过,就是这个意思了~~~~。
下面就是我的代码了!(比较乱,还没优化~~)

    var cal_width, cal_height, rect;//根据类型返回随机坐标对象this.getRandPos = function (){var _id = (_rec_id)%5;var _ret;var _win_height = parseInt(_wrap.height()/2);var _win_width = parseInt(_wrap.width()/2);var _height = parseInt(_wrap.height()/2 - _obj.height() );var _width = parseInt(_wrap.width()/2 - _obj.width() );cal_width = (Math.random()*1000)%_width;cal_height = (Math.random()*1000)%_height;switch(_id){case 1://2区_ret = {x: parseInt(cal_width + _win_width),y: parseInt(cal_width)};break;case 2://3区_ret = {x: parseInt(cal_width),y: parseInt(cal_height + _win_height)};break;case 3://4区_ret = {x: parseInt(cal_width + _win_width ),y: parseInt(cal_height + _win_height)};break;case 4://5区_ret = {x: parseInt(cal_width + _win_width/2 ),y: parseInt(cal_height + _win_height/2)};break;default://1区_ret = {x: parseInt(cal_width),y: parseInt(cal_height)};}_rec_id++;return _ret;};

热点排行