私は次の2つのクラスを持っています
public class PointClass
{
double x, y, z;
}
と
public class PolyLineClass
{
PointClass startPoint;
PointClass endPoint;
}
および PolyLineClasses の配列
polyLineArray[];
polyLineArray 内のすべての線を何らかの順序で接続すると、自己交差しない閉じた曲線が得られると仮定します。
例えば
startPt endPt
polyLineArray[0]: (0,0,0) (1,0,0)
polyLineArray[1]: (0,1,0) (0,0,0)
polyLineArray[2]: (1,1,0) (0,1,0)
polyLineArray[3]: (1,0,0) (1,1,0)
配列を 0->3->2->1 の順序でトラバースすると、閉じた曲線 (この単純なケースでは正方形) が作成されます。現在、私が持っているのは次のアルゴリズムです。
1) int i = 0;
2) Get the endPt of polyLineArray[i];
3) search through the array for an element with index j such that
polyLineArray[i].endPoint == polyLineArray[j].startPoint.
4) i = j; Repeat from step2 until all elements in the array have been visited.
上記のアルゴリズムは O (怖い) です。ソートを行うためのより効率的な方法はありますか? 言語が重要な場合、私は c# でコーディングしています。