Java 计算角平分线

有三个点,计算出角平分线。首先要算出两个点之间的方位角,根据方位角算出夹角。下面以角平分线长度是20示例计算。

        double dStartAngle = Math.atan2(mdE1 - mdE2, mdN1 - mdN2);
        double dEndAngle = Math.atan2(mdE3 - mdE2, mdN3 - mdN2);
        double dWAngle = dEndAngle - dStartAngle;//外角角度
        if (dWAngle < 0) {
            dWAngle += 2 * Math.PI;
        } else if (dWAngle  > (2 * Math.PI)) {
            dWAngle -= 2 * Math.PI;
        }
        double dNAngle = 2 * Math.PI - dWAngle;//夹角  这个角度是比较小的

        /// 这里算出来角度都是弧度单位的

        double temp = dWAngle / 2 + dStartAngle;
         ///外角平分线的点
        double N = 20 * Math.cos(temp) + mdN2;
        double E = 20 * Math.sin(temp) + mdE2;

        ///夹角(内角)平分线的点
         N = 2 * mdN2 - N;
         E = 2 * mdE2 - E;

计算方位角:

    //计算两点方位角
    public double getAzimuth(double dN1, double dE1, double dN2, double dE2) {
        double dAzimuth = 0;

        dAzimuth = Math.atan2(dE2 - dE1, dN2 - dN1) * 180 / Math.PI;
        if (dAzimuth < 0)
            dAzimuth += 360;

        return dAzimuth;
    }

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值