辞書式順序ソート
[幾何計算]


関数

INT FVALGAPI fnFIE_cg_ordering_data_sort (const PNT_T *pnts, INT pnt_num, PNT_T **ord_pnts, INT *ord_pnt_num, INT **org_to_ord, INT **ord_to_org)
 点データの辞書式順序ソートの実行

関数

INT FVALGAPI fnFIE_cg_ordering_data_sort ( const PNT_T pnts,
INT  pnt_num,
PNT_T **  ord_pnts,
INT *  ord_pnt_num,
INT **  org_to_ord,
INT **  ord_to_org 
)

点データの辞書式順序ソートの実行

計算幾何学ライブラリの幾つかのものは

  • 入力点に重複がないこと
  • 入力点が辞書式順序にソートされている
を仮定しています。 このために本関数が用意されています。

出力値( ord_pnts , org_to_ord , ord_to_org )は、関数内部でメモリ領域が確保されます。 確保された配列の要素数は、 pnt_num となります。 ただし、ord_pntsord_to_org は、 ord_pnt_num の要素のみが有効となります。 各出力値が必要なくなった場合は、 fnOAL_free() にて解放してください。
なお、 *ord_pnts , *org_to_ord , *ord_to_org はNULLで初期化されていない場合は F_ERR_INVALID_PARAM が返されます。

本関数では与えられた点列を、下図のような順序に並び替えます。 また、点列に重複点が合った場合には、重複した点は取り除かれます。

fie_cg_sort.png

Fig1. 辞書式順序

辞書式順序ソートの処理速度のオーダーはO( n log n ) です。 なお、以下では辞書式順序でソートされたデータを単に「順序データ」と呼びます。

入力された点データ(以後「入力データ」という)を辞書式順序にソートし、同時に重複する点を省きます。 ここでの辞書式順序とは、Fig1の (1) になります。 重複を取り除くように実行された辞書式順序ソートの結果を呼出し側に引き渡します。 辞書式順序ソートは重複を取り除くように実行されるので、入力された点データの数よりも ソート後のデータの数が少なくなっている場合があります。 出力として ord_pnt_num があるのはそのためです。

pnt_num は1以上の値を入力してください。

引数:
[in] pnts 入力元データ
[in] pnt_num 入力元データの点の数( pnts の要素数 )
[out] ord_pnts ソートデータ配列
  • 確保されている要素数: pnt_num
  • 有効な要素数: ord_pnt_num
[out] ord_pnt_num ソートデータの点の数( ord_pnts の有効な要素数 )
[out] org_to_ord 元データ番号からソートデータ番号への変換表
  • 確保されている要素数: pnt_num
  • 有効な要素数: pnt_num
[out] ord_to_org ソートデータ番号から元データ番号への変換表
  • 確保されている要素数: pnt_num
  • 有効な要素数: ord_pnt_num
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_PARAM 不正なパラメータが渡された
F_ERR_NOMEMORY メモリ不足
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー


Documentation copyright © 2009-2024 FAST Corporation.
Generated on Fri Aug 9 16:38:48 2024 for FIEライブラリ by doxygen 1.5.6-FASTSP-p2