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;
        }

猜你喜欢

转载自blog.csdn.net/qq_39488878/article/details/86300409