var j = Math.floor(y / 30);为什么除以30
var j = Math.floor(y / 30);为什么除以30
var j = Math.floor(y / 30);为什么除以30
2017-12-16
上面同学的说法不太对,不是因为方面操作吧。
var x=e.offsetX;//获取的是相对于整个canvas容器的x坐标值
var y=e.offsetY;//获取的是相对于整个canvas容器的y坐标值
var i = Math.floor(x/30);
var j = Math.floor(y/30);
oneStep(i,j,me); //传入i,j值
context.arc(15+i*30,15+j*30,13,0,2*Math.PI) ;//oneStep(i,j,me)里的画圆函数
以上其实 可以 等同于 15+i*30=x; 15+j*30=y; 已知x,y值,通过除30取整获取i,j值再画圆。
以上可能是愚见,见笑了。
var drawChessBoard=function(){
for(var i=0;i<15;i++)
{
context.moveTo(15+30*i,15);
context.lineTo(15+30*i,435);
context.stroke();
context.moveTo(15,15+30*i);
context.lineTo(435,15+30*i);
context.stroke();
}
}
绘制棋盘的直线时,横坐标是15+i*30,纵坐标15+j*30,这些实际坐标数值比较大,不方便操作。把实际坐标做一个运算换成等价坐标就比较方便了。所以先除以30而后向下取整,得到一个横、纵坐标的数值都在15以内的一个等价坐标。比如与实际坐标(315,315)对应的坐标就是(15/30,315/30)(ps:还需要进行向下取整),即坐标(0,10)。
这是我的理解,不知我是否讲的清楚了呢?
举报