Main Content

convhulln

説明

k = convhulln(P) は、行列 P 内の点の N 次元の凸包を計算します。

k = convhulln(P,opts) は、凸包の計算に使用される Qhull オプションも指定します。

[k,vol] = convhulln(___) は、前述のいずれかの構文で凸包の体積 vol も返します。

すべて折りたたむ

3 次元の点の行列を作成し、凸包およびその体積を計算します。

P = rand(10,3);
[k,vol] = convhulln(P);

凸包をプロットします。

trisurf(k,P(:,1),P(:,2),P(:,3),'FaceColor','cyan')

Figure contains an axes object. The axes object contains an object of type patch.

凸包の体積を表示します。

vol
vol = 0.1857

入力引数

すべて折りたたむ

点。対応する次元の座標を列に含む行列として指定します。たとえば、2 次元の点の集合を定義するには、x 座標を P の 1 列目に配置し、対応する y 座標を 2 列目に配置します。

Qhull のオプション。使用する Qhull アルゴリズムを示す、文字ベクトルの cell 配列として指定します。オプションのリストについては、Qhull control options を参照してください。

既定では、入力が 2、3、4 次元の場合、opts{'Qt'} に設定されます。入力が 5 次元以上の場合、opts{'Qt','Qx'} に設定されます。

出力引数

すべて折りたたむ

インデックス。行列として返されます。

  • 2 次元の点の場合、k は、各行が凸包のエッジを表す 2 列の行列。値は入力点の行インデックスを表します。

  • 3 次元の点の場合、k は、凸包を構成する三角形分割の小平面を各行が表す 3 列の行列。値は入力点の行インデックスを表します。

  • N 次元の点の場合、k は N 列の行列。値は入力点の行インデックスを表します。

凸包の体積 (2 次元の場合は面積)。スカラーとして返されます。

ヒント

  • convhulln の出力を 2 次元でプロットするには、関数 plot を使用します。convhulln の出力を 3 次元でプロットするには、trisurf または trimesh を使用します。

  • 2 次元および 3 次元の入力でアルゴリズムの効率を上げるには、関数 convhull を使用すること、あるいは triangulation オブジェクトまたは delaunayTriangulation オブジェクトを作成してオブジェクト関数 convexHull を使用することを検討してください。

アルゴリズム

convhulln は、Qhull [1]をベースにしています。詳細については、http://www.qhull.org/ を参照してください。著作権に関する情報は、http://www.qhull.org/COPYING.txt を参照してください。

参照

[1] Barber, C.B., D.P. Dobkin, and H.T. Huhdanpaa. “The Quickhull Algorithm for Convex Hulls.” ACM Transactions on Mathematical Software, Vol. 22, No. 4, Dec. 1996, p 469–483.

拡張機能

バージョン履歴

R2006a より前に導入