本文主要是介绍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;}
这篇关于ArcScene中文字正向显示的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!