NCF参数化建筑论坛
标题:
<分享>使用GH C#找出最近點連線並檢查是否交集
[打印本页]
作者:
weiwei
时间:
2013-2-26 21:28
标题:
<分享>使用GH C#找出最近點連線並檢查是否交集
檔案 :
https://dl.dropbox.com/u/29860061/closet%20line%20with%20intersction%20check.gh
流程步驟 :
1.散佈隨機點在範圍內,設index 0 為起始點。
使用舊點雲(intput x)計算出基準點(basePoint)與新點雲(calNewCloudPts2)。
新點雲中不包含基準點(basePoint)。
public List<Point3d> calNewCloudPts(int basePtIndex, List<Point3d> oldCloudPts){...}
2.使用基準點(basePoint)與新點雲(calNewCloudPts2)搜尋最近點,並儲存當下indexNumber (calNewCloudPts2[closePtIndex])。
public int calculateDist(List < Point3d > calPts, Point3d startPt){...}
3. 使用基準點(basePoint)與最近點(calNewCloudPts2[closePtIndex])相連線(尚未放入LIST中)。
public Line LinkLn(Point3d startPt, Point3d endPt){...}
4.檢查最新連線(myLine)是否與舊有線段(mylnList)相互交集,如果有交集->不連線,如果沒交集->產生新線段,並放入LIST當中。
public bool checkInt(List<Line> lnA, Line lnB){...}
5. 更新基準點(basePoint)與最近點(calNewCloudPts2[closePtIndex])。
initialnum = closePtIndex;
x = calNewCloudPts2;
6.重複1-5步驟,完成最近距離連線
Main Code:
private void RunScript(List<Point3d> x, Point3d y, ref object A)
{
List < Line > mylnList = new List < Line >();
List<Point3d> calNewCloudPts2 = new List<Point3d>();
Point3d basePoint = new Point3d();
//the initial index is 0
int initialnum = 0;
int closePtIndex = 0;
int totaloldPtsLength = x.Count - 1;
Line myLine;
bool mytest = false;
for(int i = 0;i < totaloldPtsLength;i++){
basePoint = x[initialnum];
calNewCloudPts2 = calNewCloudPts(initialnum, x);
closePtIndex = calculateDist(calNewCloudPts2, basePoint);
//Print("closePtIndex = {0}", closePtIndex);
myLine = LinkLn(basePoint, calNewCloudPts2[closePtIndex]);
mytest = checkInt(mylnList, myLine);
Print("ff = {0}", mytest);
if(mytest == false){
mylnList.Add(myLine);
}
initialnum = closePtIndex;
x = calNewCloudPts2;
Print("calNewCloudPts2 List = {0}", calNewCloudPts2.Count.ToString());
}
//Print("x count = {0}", x.Count.ToString());
A = mylnList;
}
結果圖片:
points number - > 100
[attach]37727[/attach]
points number - > 500
[attach]37728[/attach]
points number - > 1000
[attach]37729[/attach]
points number - > 1000
[attach]37730[/attach]
[attach]37731[/attach]
[attach]37731[/attach]
作者:
流浪中的骑士
时间:
2013-2-26 22:59
学习了~~~~~~~~~~
作者:
芥末花生
时间:
2013-2-27 12:02
也是用dropbox..支持一个.GH小白,尤其对数据部分不清楚...
作者:
zxl900113
时间:
2013-2-27 15:47
学习了~~~~~~~~~~
作者:
GuY
时间:
2013-2-27 21:38
这个真心屌。。。。
作者:
phoenixding
时间:
2013-2-28 22:47
崇拜~ 论坛多一点这样的帖子就好了!
作者:
Pluto.
时间:
2013-3-1 06:03
学习了~~~谢谢楼主
作者:
nevana
时间:
2013-3-1 10:24
坛子子里久违的帖子了
真心感谢楼主
作者:
todstods
时间:
2013-3-1 17:54
非常高端啊{:08:}
作者:
夜第七章
时间:
2013-3-1 20:33
下来研究一下~
作者:
Je_t’aime_pass
时间:
2014-1-9 00:38
非常不错的尝试学习啦
作者:
262925108
时间:
2014-9-7 23:44
感谢LZ,目前正在学习C#,学习了
作者:
ly871108
时间:
2016-10-6 19:51
感谢分享………………
欢迎光临 NCF参数化建筑论坛 (http://ncf-china.com/)
Powered by Discuz! X3.2