NCF参数化建筑论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 11859|回复: 5
打印 上一主题 下一主题

[VB & C#] <分享>嘗試在GH 裡用使用C#找出最短的路徑

[复制链接]
跳转到指定楼层
1m
发表于 2013-2-21 21:55:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 weiwei 于 2013-2-21 23:28 编辑

目標 : 嘗試在GH 裡用使用C#找出最短的路徑。

blog :

http://lochengwei.blogspot.com/2013/02/gh-c_21.html

流程步驟 :

1.散佈隨機點在範圍內,設index 0 為起始點。
使用舊點雲(intput x)計算出基準點(basePoint)與新點雲(calNewCloudPts2)。
新點雲中不包含基準點(basePoint)。
public List<Point3d> calNewCloudPts(int basePtIndex, List<Point3d> oldCloudPts){...}

2. 使用基準點(basePoint)與新點雲(calNewCloudPts2)搜尋最近點,並連線找到最近點(calNewCloudPts2[closePtIndex])。
public int calculateDist(List < Point3d > calPts, Point3d startPt){...}

3. 使用基準點(basePoint)與最近點(calNewCloudPts2[closePtIndex])相連線。
public Line LinkLn(Point3d startPt, Point3d endPt){...}

4. 更新基準點(basePoint)與最近點(calNewCloudPts2[closePtIndex])。


initialnum = closePtIndex;
x = calNewCloudPts2;


5.重複1-3步驟,完成最近距離連線

main code:
List < Line > mylnList = new List < Line >();
    List<Point3d> calNewCloudPts2 = new List<Point3d>();
    Point3d basePoint = new Point3d();

    int closePtIndex = 0;

    //the initial index is 0
    int initialnum = 0;
    Print("x List = {0}", x.Count.ToString());

    int totaloldPtsLength = x.Count - 1;

    for(int i = 0;i < totaloldPtsLength;i++){

      basePoint = x[initialnum];
      calNewCloudPts2 = calNewCloudPts(initialnum, x);
      closePtIndex = calculateDist(calNewCloudPts2, basePoint);
      mylnList.Add(LinkLn(basePoint, calNewCloudPts2[closePtIndex]));
      initialnum = closePtIndex;
      x = calNewCloudPts2;
      Print("calNewCloudPts2 List = {0}", calNewCloudPts2.Count.ToString());

    }

    //Print("x count = {0}", x.Count.ToString());


    A = mylnList;
流程圖片:

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享分享
2m
 楼主| 发表于 2013-2-21 23:53:37 | 只看该作者
把2D隨機點改成3D點雲也可以使用。
3m
发表于 2013-2-25 18:43:04 | 只看该作者
支持一下~~
4m
发表于 2013-2-25 18:57:24 | 只看该作者
是否可以再尝试一下 点群中寻找总长最短的路径?
5m
发表于 2013-2-26 10:29:10 | 只看该作者
楼主这样的逻辑仅仅能保证每个点和下一个点距离最短,但是不知道是否可以像楼上说的那样,求得总长最短的路径尝试一下?期待
6m
 楼主| 发表于 2013-2-26 21:19:42 | 只看该作者
這部分我可以試看看,已經有找出最短路徑的演算法,但是需要在轉譯一下。

小黑屋|手机版|NCF参数化建筑论坛 ( 浙ICP备2020044100号-2 )    辽公网安备21021102000973号

GMT+8, 2024-11-23 09:09 , Processed in 0.067557 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表