为了账号安全,请及时绑定邮箱和手机立即绑定

​var j = Math.floor(y / 30);为什么除以30

var j = Math.floor(y / 30);为什么除以30

正在回答

3 回答

上面同学的说法不太对,不是因为方面操作吧。

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值再画圆。

以上可能是愚见,见笑了。

1 回复 有任何疑惑可以回复我~

有一点我说错了,重新说:比如与实际坐标(15,315)对应的坐标就是(15/30,315/30)(ps:还需要进行向下取整),即坐标(0,10)。

0 回复 有任何疑惑可以回复我~

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)。

这是我的理解,不知我是否讲的清楚了呢?

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

​var j = Math.floor(y / 30);为什么除以30

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信