2017-07-01 162 views
1

我目前正试图为我的项目实现凸包计算,因此我安装了https://www.nuget.org/packages/MIConvexHull/ NuGet包。 (这个项目是2D,3D和更高维的凸包算法和库。)这里是github页面的链接:https://github.com/DesignEngrLab/MIConvexHull如何使用MIConvexHull库

这是我到目前为止所做的以及我已经完成/了解的内容: 为了创建凸包,需要一个顶点列表,然后凸包基本上是一个顶点列表和一个面列表。所以这里是我目前如何尝试实现它。

List<Vertex> MI_convexHullVertices = new List<Vertex>(); 

var MI_convexHull = MIConvexHull.ConvexHull.Create<Vertex, Face>(vertices); 

对于这段代码,虽然没有Vertex和Face类,但我得到了很多编译错误。我现在不知道在这里使用什么。

这是从ConvexHull类内部ConvexHull.cs部分:

public static ConvexHull<TVertex, TFace> Create<TVertex, TFace>(IList<TVertex> data, 
     double PlaneDistanceTolerance = Constants.DefaultPlaneDistanceTolerance) 
     where TVertex : IVertex 
     where TFace : ConvexFace<TVertex, TFace>, new() 
    { 
     return ConvexHull<TVertex, TFace>.Create(data, PlaneDistanceTolerance); 
    } 

现在在这里我的问题是:能否给我一个人解释什么TVertex和TFace是什么?之后,如何使用代码?

我觉得它是与通用数据类型,如TVertex是不是一个真正的类型,但究竟是什么和什么是真正的类/类型,我可以使用真正实现凸包计算?

事情是,我不知道最后的语法。

回答

1

有人可以向我解释什么是TVertex和TFace?之后, 如何使用代码?

TVertexTFaceconstructed types没错这与仿制药的事。当您调用静态方法ConvexHull时,必须提供两个实例,一个实现接口IVertex,这与TVertex关联,另一个从ConvexFace<TVertex, TFace>继承,这与TFace关联。

如果您导航到github中的项目链接,您会发现一个名为的文件夹。示例。在那里你会发现如何使用图书馆。例如,here你可以找到二维凸包的例子。

在广泛的线,它创建顶点数组:

var vertices = new Vertex[NumberOfVertices]; 

和它填补了新Vertex对象thems,使用Vertex

new Vertex(size * r.NextDouble(), size * r.NextDouble()); 

的构造和获得积分的像这样简单:

var convexHull = ConvexHull.Create(vertices).Points; 
+0

非常感谢你,是我通过实例看,但3D一个居多,因为这是我需要的。在那里,我确实发现了实际的面部和顶点类实现,但是因为我不了解整个图片,所以我感到困惑......但是您现在已经很清楚地向我表示谢意了! – huzzm

+0

@huzzm欢迎您!我很高兴我帮助:) – Christos