判断两条直线的夹角

      /// <summary>
        /// 判断要素是否平行
        /// </summary>
        /// <returns></returns>
        protected bool GeometryParallel(IFeature pFeat,out Lineside pSide)
        {
            //double angleOfLine = Math.Atan2((Y2 - Y1), (X2 - X1)) * 180 / Math.PI; 
            //angleOfLine =Math.Abs( angleOfLine % 90);


            IArea pArea = pFeat.Shape as IArea;


            pSide = LeftOfLine(pArea.Centroid);


            double horizontalAngle = 30;///平行判断角度


            //var a = Math.Atan2(a2.Y - a1.Y, a2.X - a1.X);
            //var b = Math.Atan2(b2.Y - b1.Y, b2.X - b1.X); 
            double startx = Convert.ToDouble(pFeat.get_Value(m_startx));
            double starty = Convert.ToDouble(pFeat.get_Value(m_starty));
            double endx = Convert.ToDouble(pFeat.get_Value(m_endx));
            double endy = Convert.ToDouble(pFeat.get_Value(m_endy));


            var A = Math.Atan2(EndY - StartY, EndX - StartX);
            var B = Math.Atan2(endy - starty, endx - startx);
            double angleOfLine = (180 * (float)(B - A)) / Math.PI;
            angleOfLine = Math.Abs(angleOfLine);


            //自身小角度
            if (angleOfLine < horizontalAngle)
                return true;


            //接近180平行
            if (Math.Abs(angleOfLine - 180) < horizontalAngle)
                return true;


            return false;
        }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值