オブジェクトのジオメトリの中心を見つけますか?


37

2Dまたは3Dポイントのセットが与えられた場合:

オブジェクトのジオメトリの中心を見つける方法は?

次の図によると、幾何学の中心は、最も単純な形式、つまり均質な質量密度で計算される場合、質量の中心とは異なります。実際、問題はそれらの計算に現れます。一般的に、1つのアプローチは、X座標とY座標を個別に平均することです。つまり、指定されたポイント(ここでは2D)の平均位置を見つけます。これは、オブジェクトを表す一連のポイントの重心として使用できます。示されているように、下端に沿って余分な頂点があるため、単純な長方形の場合、結果の重心は(0.5,0.4)であり、正解は(0.5,0.5 です。
指定された例は単純すぎることに注意してください。ただし、2Dの複雑な形状と、頂点の座標のみが使用可能な3Dのオブジェクトの場合に問題になります。
ところで、効率的な計算方法が興味深いです。

WikipediaのようないくつかのWebリンクをチェックしましたが、私の現在の問題は、それらの代表としてポイントを見つけたい2Dおよび3Dポイントのグループがあることです。したがって、重心が関心を集めました。ポイントはトポロジ情報なしで与えられます。それらを点群と見なすことができます。ここでのデモンストレーションは、座標の一般的に知られている平均化(たとえば、このStack Overflow Q&Aを参照)が例に示すように間違っている可能性があることを明確にするために提供されました。

ここに画像の説明を入力してください

比較のための実装を次に示します。

  • aa =以下の受け入れられた回答
  • chull =点の凸包、つまり黄金の多角形
  • cent =ウィキペディアで提案された重心で、ポリゴン重心としてaaで議論されています
  • centl = aaで説明されているポリラインの重心

視覚centl的には、に比べて与えられたジオメトリをよりよく表しcentます。他の2人はここで有望に見えますが、通常、ポイントの分散が不均一である場合、通常は偏りすぎます。
また、凸包は問題を合理的に単純化しますが、空間内の対称位置付けなしでは長すぎるエッジと短すぎるエッジを生成する可能性があることを考慮してください。 :ポイント全体(緑)または凸包ポリゴン頂点(青)。

ここに画像の説明を入力してください

1つのアプリケーションは、特定のポイントの最小面積長方形を見つけることで見つけることができますか?


これは機能しますか? 多角形の重心を見つけますか?(StackOverflow)
blah238

3
あなたの質問が何なのか分かりません。ジオメトリの中心または(通常は重心)は、重心(重心)と異なる場合があります。これはよく知られた事実です。また、ジオメトリの中心を計算するさまざまな方法があります。参照:en.wikipedia.org/wiki/Triangle_centeren.wikipedia.org/wiki/Encyclopedia_of_Triangle_Centersfaculty.evansville.edu/ck6/encyclopedia/ETC.htmlを
Devdatta Tengshe

1
更新してください:トポロジがない場合、点群は単なる点群です。多角形、正方形のあなたの姿は適用されません(と(0.5,0.4)のあなたの「重心は」によって、任意の標準式から発生すると表示されません:対称性のために、強く主張している任意の一致するように、正方形の中心点(0.5 、0.5)、どのように定義されていても)。2次元以上のポイントクラウドの代表的な場所または中央の場所を見つける方法については、stats.stackexchange.com / questions / 1927をご覧ください。
whuber

1
@Developer、私はあなたのポイントを見ました、「長方形」(実際にはポリゴン)の下部の5番目のポイントは、頂点座標の単純な平均化により、ポリゴンのそれとは異なる重心をもたらします。
blah238

1
あぁ!そのようなものを探していたにもかかわらず、私はその5番目の頂点を完全に見落としました。将来の読者を支援するために、これを指摘するために質問を少し編集しました。これも問題の核心になります。エッジに沿って頂点を挿入または削除すると、poly {line、gon}の表現方法が変わりますが、その固有の幾何学的プロパティの計算は変わりません。これが、頂点の重心がポリゴンまたはその境界の重心とほぼ任意の関係を持つことができる理由です。
whuber

回答:


44

すべてのポリゴンには、少なくとも4つの異なる「中心」があります。

  • その頂点の重心。

  • エッジの重心。

  • ポリゴンとしての重心。

  • ラベリングに便利なGIS固有の「センター」(通常、文書化されていない独自の方法で計算されます)。

(特別な場合に偶然に一致する場合がありますが、「汎用」ポリゴンの場合は別個のポイントです。)

一般に「重心」は「重心」です。3つのタイプは、質量が推定される場所によって異なります。完全に頂点にあるか、エッジに均一に広がっているか、ポリゴン自体全体に均一に広がっています。

3つの重心すべてを計算する簡単な方法があります。1つのアプローチは、2つの質量の互いに素な結合の重心が重心の総質量加重平均であるという基本的な事実に依存しています。 これから、次のものを簡単に取得できます。

  1. 2つの(均等に重み付けされた)頂点の重心は、それらの平均です。これは、それらの座標を個別に平均化することによって取得されます。幾何学的には、2つの頂点を結ぶ線分の中点です。

  2. 誘導的にn個の(均等に重み付けされた)頂点の重心は、それらの座標を個別に平均することによって取得されます。

  3. 線分の重心はその中点です。(これは対称性から明らかです。)

  4. ポリラインの重心は、各ラインセグメントの中間点を見つけて、セグメントの長さを重みとして使用して加重平均を形成することによって取得されます。

    たとえば、点(0,0)、(6,0)、(6,12)で区切られた「L」形状を考えてみましょう。2つのセグメントがあります:((0 + 0)/ 2、(0 + 6)/ 2)=(3,0)に中点がある長さ6のセグメントと((6 + 6)/ 2、(0 + 12)/ 2)=(6,6)。したがって、それらの長さ加重平均座標は(x、y)であり、

    x = (6*3 + 12*6) / (6+12) = 5,  y = (6*0 + 12*6) / (6+12) = 4.
    

    これは、3つの頂点の重心とは異なり、((0 + 6 + 6)/ 3、(0 + 0 + 12)/ 3)=(4,4)です。

    編集などの別の例は、のように形状が正方形が、示されているが問題に図形を考える五角形は点(0,0)、(1 / 2,0)、(1,0)、の配列によって決定されます(1,1)、(0,1)。5つの辺の長さは、1 / 2、1 / 2、1、1、1、および中点(1 / 4,0)、(3 / 4,0)、(1 、1/2)、(1 / 2,1)、および(0,1 / 2)、それぞれの加重平均は等しい

    [(1/2)*(1/4, 0) + (1/2)*(3/4, 0) + (1)*(1, 1/2) + (1)*(1/2, 1) + (1)*(0, 1/2)] / (1/2+1/2+1+1+1)
    = (2/4, 2/4) = (0.5, 0.5)
    

    頂点の重心のみ(上記の#2で計算)が(0.5、0.4)であっても、希望するとおりです。

  5. ポリゴンの重心は、三角形分割して三角形に分解することで取得できます。三角形-四角ポリゴンの重心は、その頂点の重心と一致します。これらの重心の面積加重平均は、ポリゴンの重心です。三角形の領域は、頂点座標の観点から(たとえば、2つの側面のくさび積の観点から)簡単に計算されます。署名された(正または負の)エリアの活用方法など、そのようなエリア計算の図については、私の(古い)コースノートページの「エリア」のセクションを参照してください

    編集質問に描かれている多角形を例に考えてみましょう。左にある三角形((0,0)、(1 / 2,0)、(0,1))で三角形を作ることができます。((0,1)、中央に(1 / 2,0)、(1,1))、右側に((1,1)、(1,0)、(1 / 2,0))があります。面積は1/4です。 、1 / 2、1 / 4およびそれぞれの重心(頂点の平均化によって得られる)は、(1 / 6,1 / 3)、(1 / 2,2 / 3)、および(5 / 6,1 / 3)それぞれ、これらの重心の面積加重平均は

    [(1/4)*(1/6,1/3) + (1/2)*(1/2,2/3) + (1/4)*(5/6,1/3)] / (1/4 + 1/2 + 1/4)
    = (12/24, 6/12)
    = (0.5, 0.5)
    

    必要に応じて、下端に沿って5番目の頂点が存在するにもかかわらず)

これらの各メソッドが効率的であることは明らかです。各ステップで一定の時間を使用して、ポリゴンの「スパゲッティ」表現を1回パスするだけで済みます。最初の(純粋な頂点)を除くすべての場合に、頂点座標のリストだけでなく、より多くの情報が必要であることに注意してください。図のトポロジも知る必要があります。「L」の例では、たとえば(0,0)が(6,12)ではなく(6,0)に接続されていることを知る必要がありました。

これらはすべてユークリッドの概念です。 それらは、いくつかの方法で球体(または楕円体)に拡張できます。簡単な方法では、フィーチャを3次元(ユークリッド)の単体の複合体と見なし、適切な重心を計算してから、楕円の中心から表面に向かって外側に投影します。これには、新しい概念や式は必要ありません。最初の2つの座標に加えて、3番目の(z)座標を操作するだけで済みます。(エリアはまだウェッジ製品の長さを使用し発見されています。)

別の一般化は、ユークリッドメトリック(ピタゴラスによると、平方和の平方根)がp> = 1に対して他のLpメトリックに変更できることを認識しています。適切な「重心」を見つけることはそれほど簡単ではなくなりました。なぜなら、上記で活用された美しい加法特性(重心は、図のより単純な部分の重心の加重平均)が一般的に成り立たなくなったからです。多くの場合、反復近似数値解を取得する必要があります。それらはユニークでさえないかもしれません。

さまざまな目的で追加のセンターを定義できます。三角形には、外接円の中心、(一部の)最大内接円の中心、最小領域の境界楕円の中心など、多角形に一般化できるさまざまな中心があります。任意のセットは、凸包などのさまざまな「ハル」で囲まれ、それらのハルの中心が取得されます。

これらの「中心」の多くは、必ずしもポリゴンの内部にあるとは限らないことに注意してください。(ただし、多角形の合理的な中心は、その内部にあります。)

このさまざまなアプローチとソリューションは、「ジオメトリの中心」または単に「中心」などの一般的な用語に注意する必要があることを示しています。


コミュニティへ:「whuber」から、このような良い答えは良い質問に対して期待することができますあなたはそれが面白い見つかった場合、彼の好みと私の親しみやすさと、このように、あなたは皆の心にあまりにも疑問をアップ投票します;)
開発者

私はそれが何らかの意味で有用であると思いました。答えの動機として他のコントリビューターにいつか与えたいと思っています。ただし、これまでのところ、これは受け入れられる建設的な答えであると考えています。
開発者

球体のウェッジ製品を使用してまだエリアが見つかっている理由を説明できますか?球面三角形の領域がより適切ではないでしょうか?私が見つけた最も近い参照(この素晴らしい答えは別として!)は、jennessent.com / downloads / Graphics_Shapes_Online.pdf-球面三角形の領域を使用しています。
ジェイソンデイヴィス

@Jason私は興味をそそられます:球状の三角形領域を使用して球状の特徴の重心を計算することをどのように提案しますか?
whuber

@whuber球面ポリゴンは球面三角形に分解され、各三角形の重心はその頂点のデカルト座標を平均することにより計算されます。多角形の重心はこれらの三角形の加重平均であることを提案しています。重みは球面三角形領域であり、あなたの答えで提案した平面領域ではありません(ウェッジ積を正しく理解していると仮定します)。
ジェイソンデイヴィス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.