Wall
探讨GIS开发,分享GIS心得,把握GIS前沿,畅谈GIS趋势
posts - 28,  comments - 5,  trackbacks - 0

     首先用当前的camera的目标点(target)和观察点(observer)来构建一个三维向量,然后用该向量和target来构建一个shpere,该sphere的envelope就是当前三维空间的extent,这样只是获得了当前三维空间的extent,但是scene中仍然无法响应extent_changed事件,也就是说,我们无法捕获当前三维空间的extent是否变化了的消息,要解决这个问题,我们可以重写三维中的一些操作按钮,如,全图、放大、缩小、浏览、漫游等,然后手动触发extent_changed事件

源码如下:
 ''' <summary>
  ''' 获得当前三维场景的extent
  ''' </summary>
  ''' <param name="pCamera">当前camera</param>
  ''' <returns></returns>
  ''' <remarks></remarks>
  Public Function GetEnvelopeFromCamera(ByVal pCamera As ICamera) As IEnvelope
    Try
      Dim pVector3D As IVector3D = New Vector3D
      pVector3D.ConstructDifference(pCamera.Observer, pCamera.Target)
      Dim pSphere As ISphere = New Sphere
      pSphere.Center = pCamera.Target
      pSphere.Radius = pCamera.ViewingDistance * Math.Sin(pCamera.ViewFieldAngle * Math.PI / 180) * 0.5
      Return pSphere.Envelope
    Catch ex As Exception
      Return Nothing
    End Try
  End Function
posted on 2008-05-09 17:35 王者之魂 阅读(8) 评论(0)  编辑 收藏

标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
 
向地震灾区捐赠爱心
 
 

寻找兼职!
QQ:13945133
MSN:yangguanjunmeteor@hotmail.com


<2008年5月>
27282930123
45678910
11121314151617
18192021222324
25262728293031
1234567

与我互动

常用链接

留言簿

我管理的小组

我参与的团队

我的标签

随笔档案(28)

搜索

  •  

最新评论

阅读排行榜

评论排行榜

60天内阅读排行