计算屏幕坐标系中鼠标方向偏移角度
版权声明:
本文为博主原创文章,转载请声明原文链接...谢谢。o_0。
更新时间:
2021-08-29 14:52:04
温馨提示:
学无止境,技术类文章有它的时效性,请留意文章更新时间,如发现内容有误请留言指出,防止别人"踩坑",我会及时更新文章
在屏幕中鼠标点击地方为圆心,然后画一条直线,这条直线和以圆心为水平线的夹角度数
/** 屏幕坐标系,左上角为0,0 分别往右x和下y延伸正数增长 半径 200 圆心 x0:0 全部的起点 x1:200 y1:0 终点 x2:100 y2:-100(大约值不准确) 结果应该为 0-90 终点 x2:0 y2:-200 结果应该为 90 终点 x2:-100 y2:-100(大约值不准确) 结果应该 90-180 终点 x2:-200 y2:0 结果应该 180 终点 x2:-100 y2:100(大约值不准确) 结果应该 180-270 终点 x2:0 y2:200 结果应该 270 终点 x2:150 y2:100(约等于可能不对,只为判断坐标在上或下不需要精准,) 结果应该 270度以上 x0:988, y0:639, x1:1045, y1:639, x2:955, y2:686, r:57, angle:270.000000 gesture direction: 13 **/ function getAngle(x0, y0, x1, y1, x2, y2, r) { var angle = (Math.acos((x2 - x0) / r) - Math.acos((x1 - x0) / r)) * 180 / 3.141592657; if (y2 > y0) { // 坐标在下面 angle = 360 - angle; } var direction = ''; if (angle > 337.5 || angle < 22.5) { direction = 'right'; } else if (angle > 22.5 && angle < 67.5) { direction = 'right-up'; } else if (angle > 67.5 && angle < 112.5) { direction = 'up'; } else if (angle > 112.5 && angle < 157.5) { direction = 'left-up'; } else if (angle > 157.5 && angle < 202.5) { direction = 'left'; } else if (angle > 202.5 && angle < 247.5) { direction = 'left-down'; } else if (angle > 247.5 && angle < 292.5) { direction = 'down'; } else if (angle > 292.5 && angle < 337.5) { direction = 'right-down'; } return angle + ' ' + direction; } console.log( "\ntest : " + getAngle(988, 639, 1045, 639, 955, 686, 57), "\n0-22.5 : " + getAngle(0, 0, 200, 0, 190.4, -50.4, 200), "\n0-90 : " + getAngle(0, 0, 200, 0, 141.4, -141.4, 200), "\n90 : " + getAngle(0, 0, 200, 0, 0, -200, 200), "\n90-180 : " + getAngle(0, 0, 200, 0, -141.4, -141.4, 200), "\n180 : " + getAngle(0, 0, 200, 0, -200, 0, 200), "\n180-270: " + getAngle(0, 0, 200, 0, -141.4, 141.4, 200), "\n270 : " + getAngle(0, 0, 200, 0, 0, 200, 200), "\n300- : " + getAngle(0, 0, 200, 0, 141.4, 141.4, 200) );