本文主要是介绍【NetTopologySuite类库】C#生成带约束(线、面)的Delaunay三角网,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
介绍
API地址:https://nettopologysuite.github.io/NetTopologySuite/api/NetTopologySuite.Triangulate.ConformingDelaunayTriangulationBuilder.html#NetTopologySuite_Triangulate_ConformingDelaunayTriangulationBuilder_Constraints
约束为线
效果图
红色线为约束线。
示例代码
var r = new WKTReader();
var wkt = "polygon((0 0,0 6,3 6,3 5,5 5,5 3,2 3,2 2,5 2,5 1,6 1,6 0,2 0,2 -1,7 -1,7 -2,-1 -2,-1 -1,0 -1,0 0))";
var geo = r.Read(wkt);var lineWkt = "linestring(4 4,3 0,5 -2)";
var line = r.Read(lineWkt);var tri = new ConformingDelaunayTriangulationBuilder();
tri.Constraints = line;//添加约束线
tri.SetSites(geo);
var tris = tri.GetEdges(GeometryFactory.Default);
约束为面
效果图
示例代码
var r = new WKTReader();
var wkt = "polygon((0 0,0 6,3 6,3 5,5 5,5 3,2 3,2 2,5 2,5 1,6 1,6 0,2 0,2 -1,7 -1,7 -2,-1 -2,-1 -1,0 -1,0 0))";
var geo = r.Read(wkt);var wkt2 = "polygon((4 4,3 0,5 -2,4 4))";
var geo2 = r.Read(wkt2);var tri = new ConformingDelaunayTriangulationBuilder();
tri.Constraints = geo2;//添加约束面
tri.SetSites(geo);
var tris = tri.GetEdges(GeometryFactory.Default);
可以自行将位于约束面内的三角边删掉。
不带约束
为了对比明显,再放一张不带约束的三角网:
这篇关于【NetTopologySuite类库】C#生成带约束(线、面)的Delaunay三角网的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!