2011-10-18 9 views
1

合計注文をどのように定義しますか?たとえば、トータルの注文やシェイプなどを定義する必要がある場合は、どうすればよいのですか?合計注文を定義する

編集:具体的には、座標(x、y、z)を持つオブジェクトに基づいて合計注文を定義します。私はどのように各オブジェクトがユニークでソート可能な順序付けを構成することができるか理解していません。

+0

申し訳ありませんが、私は非常に曖昧でした。私は編集します – rmp2150

答えて

1

2Dまたは3Dオブジェクトに「自然な」順序はありません。これはもちろん、オブジェクトを一意にそれらの座標によって識別されていると仮定し

// returns -1 if o1<o2, 1 if o1>o2, 0 if o1==o2 
int Compare(MyObject o1 ,MyObject o2) 
{ 
    if(o1.x>o2.x) return 1; 
    if(o1.x<o2.x) return -1; 
    if(o1.y>o2.y) return 1; 
    if(o1.y<o2.y) return -1; 
    if(o1.z>o2.z) return 1; 
    if(o1.z<o2.z) return -1; 
    return 0; 
} 

:しかし、あなたが順序を誘導したい場合は、例えば、それらの座標によって、このようにそれらを比較することができます。

この並べ替えを使用すると、そのようなオブジェクトを並べ替えて比較することができます。あなた自身で答えなければならない質問は、あなたがそれで解決したい問題のいずれかのためにあなたを助けるかどうかです。特に1セットの特定の要素だけでなく、指定された範囲のすべての要素が必要な場合は、1Dセットの順序を使用して検索を高速化します。

2Dまたは3Dセットの場合、同様の質問は、特定の長方形または立方体内のすべての要素セットを見つけることです。その目的のために、上記の注文はあなたを非常にうまくサポートしません。 2D quadtreeや3D octreeのようなデータ構造があり、この作業がはるかに優れています。

+0

遅れて申し訳ありません。しかし、お返事いただきありがとうございます – rmp2150

関連する問題