关于在+2π和-2π,主要的作用是选择一个较短的旋转方向
比如从0°旋转到340°,有两个选择:
1、0 -> +340逆时针旋转
2、0-> -20 顺时针旋转
比如从0°旋转到340°,有两个选择:
1、0 -> +340逆时针旋转
2、0-> -20 顺时针旋转
2016-07-03
Math.PI解决反向的问题(自己的理解):
1、一开始鱼头默认为0,然后如果玩家鼠标向下偏移Z角度,按照正常的逻辑这个角度应该为π+Z,但是atan2这个函数只能返回-π到π,所以它返回的值为-(π-Z),是大于-π的。
2.然后将这个值加上π 就变成了Z,然后调用rotate(),因为这个Z是个正数,所以会逆时针旋转。
但是如果你没有加上π,就是角度与Z互为补角,方向为顺时针,所以会鱼尾巴跟着鼠标。
1、一开始鱼头默认为0,然后如果玩家鼠标向下偏移Z角度,按照正常的逻辑这个角度应该为π+Z,但是atan2这个函数只能返回-π到π,所以它返回的值为-(π-Z),是大于-π的。
2.然后将这个值加上π 就变成了Z,然后调用rotate(),因为这个Z是个正数,所以会逆时针旋转。
但是如果你没有加上π,就是角度与Z互为补角,方向为顺时针,所以会鱼尾巴跟着鼠标。
2016-07-03
求教下{ctx1.save();ctx1.translate(this.x, this.y);ctx1.drawImage(this.bigEye,-this.bigEye.Width*0.5,-this.bigEye.Height*0.5);ctx1.drawImage(this.bigBode,-this.bigBode.Width*0.5,-this.bigBode.Height*0.5);ctx1.drawImage(this.bigTail,-this.bigTail.Width*0.5,-this.bigTail.Height*0.5);ctx1.restore();}哪错啊
我来回答下为什么尾巴跟着鼠标动:
this.x=lerpDistance(mx, this.x,0.99);
this.y=lerpDistance(my, this.y,0.99);
var deltaY=this.y-my;
var deltaX=this.x-mx;
var beta=Math.atan2(deltaY,deltaX);
把delata改为当前值减去目标值(亲测有效);
this.x=lerpDistance(mx, this.x,0.99);
this.y=lerpDistance(my, this.y,0.99);
var deltaY=this.y-my;
var deltaX=this.x-mx;
var beta=Math.atan2(deltaY,deltaX);
把delata改为当前值减去目标值(亲测有效);
2016-06-25