ArcScene中文字正向显示

    在进行arcgis三维系统的开发过程中,需要对标注的三维文字正面显示,本想通过ICamera的属性获得角度值,但开发过程中发现并没有直接给出相应角度值,不过还要有个折中的办法,通过ICamera的Target(目标)和Observer(观察者)两者的坐标计算向量角度获得。代码如下:

        private double GetCameraAngle(ICamera camera)
        {
            if (camera == null) return 0;
            IPoint target = camera.Target;
            IPoint observer = camera.Observer;
            double angle;
            angle = Math.Atan((observer.Y - target.Y) / (observer.X - target.X));
            angle = angle * (180 / Math.PI);
            return angle;
        }

运行发现在屏幕角度0~180范围内正常,超过范围文字方向就是相反的,对不起数学老师啊!

Atan不行啊,开始想自己做判断看象限角,不过发现还有个Atan2直接可以得到象限反正切值。代码修改如下:

        /// <summary>
        /// 获取屏幕角度
        /// 杜志刚 2018-12-10 
        ///atan2(a,b)是4象限反正切,求取向量夹角
        /// </summary>
        /// <param name="camera"></param>
        /// <returns></returns>
        private double GetCameraAngle(ICamera camera)
        {
            if (camera == null) return 0;
            IPoint target = camera.Target;
            IPoint observer = camera.Observer;
            double angle;
            angle = Math.Atan2((observer.Y - target.Y), (observer.X - target.X));
            angle = angle * (180 / Math.PI);
            return angle;
        }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值