首页 > 其他 > 详细

通过两点坐标计算角度

时间:2015-09-24 11:00:51      阅读:180      评论:0      收藏:0      [点我收藏+]
    /**获取角度*/
    // 求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:原点,可以和起始坐标一致,更加功能自由选择

通过两点坐标计算角度

原文:http://www.cnblogs.com/jaden/p/4834400.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!