2

四角形の頂点である 4 つのノードがあります。

これらの頂点を時計回りに並べ替えるか、輪郭を時計回りに並べ替える必要があります。MATLABでは、関数 ispolycw だけを知っています

時計回りにソートされていない場合、この関数は 1 を返します。

これらの頂点をソートできる機能(または提案)を知っている人はいますか?

あなたの助けに感謝します。

ありがとう。

4

1 に答える 1

4

これを一度行う関数を作成しました。コードは手元にありませんが、基本的なアプローチは次のとおりです。

  1. 点の重心 C を見つける
  2. C から各点への方向を見つける
  3. 0 から 2*pi までの角度として方向を取得します
  4. 選別

したがって、ポイントが P(4, 2) の場合:

C = sum(P) / size(P, 1);
dv = bsxfun(@minus, P, C);
a = atan2(dv(:,2), dv(:,1)) + pi;
[s si] = sort(a);
sortedVertices = P(si, :);

私は今これをテストすることはできませんが、それは正しい(または近い)と思います。

于 2013-11-01T05:50:58.427 に答える