首页 / 浏览问题 / 桌面GIS / 问题详情
三维折线GeoLine3D按等分取线上的点
66EXP 2017年04月25日
三维组件开发一个动态可视域的功能,比如画一条折线(由5个点组成),写了一个timer,想要根据线上的点动态设置viewshed3D.ViewerPosition的位置,以达到动态可视域的功能,可是不知道如何获取GeoLine3D线上的点(比如100等分),请赐教.

1个回答

您好,一个GeoLine3D的节点可以通过GeoLine3D.item获取,示例代码如下所示:

for (int i = 0; i < geoLine3D.PartCount; i++)
            {
                Point3Ds point3Ds = geoLine3D[i];

                foreach (Point3D point3D in point3Ds)
                {
                    // point3D就是取到的节点
                }
            }
11EXP 2017年04月25日
为啥还获取折线的节点?

直接通过节点动画来获取线上的节点啊。
我的场景如下:

1,对节点动画设置一个运动轨迹(NodeAnimation.SetTrack(GeoLine3D)),运动轨迹为一条折线,由5个节点组成(node1-node2-...-node5)

2,播放节点动画,并根据NodeAnimation.Postition设置Viewshed3D的ViewerPosition,但是可视域一直是朝着同一个方向的.而我想要的是可视域方向是沿着折线,所以需要设置Viewshed3D的目标点(通过SetDistDirByPoint方法)

另外一个问题是,如果开启第一人称模式及场景随视角移动?(这些功能在桌面有)
(1)您用了节点动画来改变位置,就没必要关心指定的轨迹的的节点了。

(2)视角也是需要调整的,桌面应该是另外写算法实现的,也是基于用到的类也是Viewshed3D,实时调整SetDistDirByPoint。
1,有必要,因为如果运动轨迹是折线的话,我需要根据下一个节点设置目标点,这样扇区才能以折线对折,计算分析出来的结果才是正确的.

2,第一人称模式及场景随视角移动如何通过组件代码实现?能给些思路或例子吗
目前没有哈,想到了告诉您。
...