通过两点坐标计算角度

    /**获取角度*/
    // 求3点形成的夹角
    public float getAngle(Point pt1, Point pt2, Point pt0) {
        double ma_x = pt1.getX() - pt0.getX();
        double ma_y = pt1.getY() - pt0.getY();
        double mb_x = pt2.getX() - pt0.getX();
        double mb_y = pt2.getY() - pt0.getY();
        double k = (ma_x * mb_y - mb_x * ma_y);

        if (k != 0) {
            k = (k / Math.sqrt(k * k));
        } else {
            k = 1;
        }

        double v1 = (ma_x * mb_x) + (ma_y * mb_y);
        double ma_val = Math.sqrt(ma_x * ma_x + ma_y * ma_y);
        double mb_val = Math.sqrt(mb_x * mb_x + mb_y * mb_y);
        double cosM = v1 / (ma_val * mb_val);

        return (float) (Math.acos(cosM) * 180 / Math.PI * k);
    }

p1:起始坐标

p2:最后坐标

p0:原点,可以和起始坐标一致,更加功能自由选择

posted on 2015-09-24 10:07  jaden.xu  阅读(3863)  评论(0)    收藏  举报

导航