2017-07-01 23 views
1

現在、プロジェクトの凸包計算を実装しようとしていますので、https://www.nuget.org/packages/MIConvexHull/ NuGetパッケージをインストールしました。 (このプロジェクトは、2D、3D、および高次元の凸包アルゴリズムとライブラリです。)次に、githubページへのリンクを示します。https://github.com/DesignEngrLab/MIConvexHullMIConvexHullライブラリの使用方法

これは私が今まで行ってきたこと、 : 凸包を作成するには、頂点のリストが必要です。凸包は基本的に頂点のリストと面のリストです。そこで、私が現在どのように実装しようとしているのです。

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を実装するインスタンスを2つ用意する必要があります。これはTVertexに関連付けられ、もう1つはConvexFace<TVertex, TFace>から継承されます。これはTFaceに関連付けられます。

プロジェクトのリンクをgithub MIConvexHullに移動すると、のフォルダの例が見つかります。そこでは、ライブラリがどのように使用されるかを知ることができます。例えば、hereには、2D凸包の場合の例があります。太い線で

、それは頂点のアレイ作成:

var vertices = new Vertex[NumberOfVertices]; 

を、それがVertexクラス

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

のコンストラクタを使用して、新しいVertexオブジェクトとthemsを充填し、ポイントを得ますConvexHullの簡単な例:

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

はそれは私が必要なものですので、私は3D 1は、ほとんど例を通じて見えたが、はい、どうもありがとうございました。私は実際の顔と頂点クラスの実装を見つけましたが、全体像を理解できなかったので、私は混乱しました...しかし、あなたはもう一度感謝しました! – huzzm

+0

@huzzmよろしくお願いします!私は喜んで私が助けた:) – Christos

関連する問題