天天看點

js 計算擷取滑鼠相對某個點的移動旋轉角度

// 旋轉角度
    function getAngle(cen, first, second) {
     // cen  : 中心點 [0,0]
     // first : 開始點 [1,3]
     // second : 結束位置 [3,4]
        var f_c_x = first[0] - cen[0],
            f_c_y = cen[1] - first[1],
            s_c_x = second[0] - cen[0],
            s_c_y = cen[1] - second[1];
        var c = Math.sqrt(f_c_x * f_c_x + f_c_y * f_c_y) * Math.sqrt(s_c_x * s_c_x + s_c_y * s_c_y);
        if (c == 0) return -1;
        var angle = Math.acos((f_c_x * s_c_x + f_c_y * s_c_y) / c);
        // 第一象限
        if (cen[0] - second[0] < 0 && cen[1] - second[1] < 0) {
            return angle
            // 第二象限
        } else if (cen[0] - second[0] < 0 && cen[1] - second[1] > 0) {
            return angle
            // 第三象限
        } else if (cen[0] - second[0] > 0 && cen[1] - second[1] < 0) {
            return 2 * Math.PI - angle
            // 第四象限
        } else if (cen[0] - second[0] > 0 && cen[1] - second[1] > 0) {
            return 2 * Math.PI - angle
        }
    }
      

  

繼續閱讀