2017-07-01 165 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