多角形の中心点の座標の求め方

解決済みの質問

多角形の中心点の座標の求め方

どう求めればいいのでしょうか?
5角形以上の場合です。
頂点の座標は全て分かっています。
よろしくお願いいたします。

投稿日時 - 2006-11-12 17:24:27

連想キーワード:

QNo.2534558

すぐに回答ほしいです

質問者が選んだベストアンサー

#6 です.訂正&補足します.

まず,#6 の Yg の式は符号が逆でした.m(_ _)m
つまり,
Yg = (1 / (6 * S)) * Σ(i=1,n) (Yi^2 + Yi * Y(i+1) + Y(i+1)^2) * (Xi - X(i+1)).

それから Xg,Yg の式は,次のようにもう少し簡単になります.

Xg = (1 / (6 * S)) * Σ(i=1,n) (Xi + X(i+1)) * (Xi * Y(i+1) - X(i+1) * Yi).
Yg = (1 / (6 * S)) * Σ(i=1,n) (Yi + Y(i+1)) * (Xi * Y(i+1) - X(i+1) * Yi).

テストプログラムを作って計算してみました.実行結果を次に示します.
(1次モーメントとあるのは,Xg * S および Yg * S のことです.)


●正三角形

P[1]:(0, 0)
P[2]:(1, 0)
P[3]:(0.5, 0.866025)
面積:0.433013
1次モーメント:(0.216506, 0.125)
重心:(0.5, 0.288675)


●正方形 (#5 さんの例)

P[1]:(10, 10)
P[2]:(-10, 10)
P[3]:(-10, -10)
P[4]:(10, -10)
面積:400
1次モーメント:(0, 0)
重心:(0, 0)

●十角形 (同じく #5 さんの例)

P[1]:(10, 10)
P[2]:(9, 10.1)
P[3]:(8, 10.2)
P[4]:(7, 10.3)
P[5]:(-7, 10.3)
P[6]:(-8, 10.2)
P[7]:(-9, 10.1)
P[8]:(-10, 10)
P[9]:(-10, -10)
P[10]:(10, -10)
面積:405.1
1次モーメント:(0, 51.72)
重心:(0, 0.127672)

投稿日時 - 2006-11-17 01:19:03

ANo.7

5人が「このQ&Aが役に立った」と投票しています

[  前へ  |  ]

ベストアンサー以外の回答(6件中 1~5件目)

ANo.6

一般の多角形の重心の公式を導いてみました.

多角形の頂点を Pi=(Xi,Yi) (i=1,…,n) とし,また P(n+1)=P1 と定義すると,

・多角形の向き付き面積 (頂点列が左回り順ならば+,右回り順ならば-)
 S = (1/2)Σ(i=1,n) (Xi * Y(i+1) - X(i+1) * Yi).

・重心のX座標
 Xg = (1 / (6 * S)) * Σ(i=1,n) (Xi^2 + Xi * X(i+1) + X(i+1)^2) * (Y(i+1) - Yi).

・重心のY座標
Yg = (1 / (6 * S)) * Σ(i=1,n) (Yi^2 + Yi * Y(i+1) + Y(i+1)^2) * (X(i+1) - Xi).

一応,検算として,n=3 の場合によく知られた三角形の重心の公式
Xg = (X1 + X2 + X3) / 3
Yg = (Y1 + Y2 + Y3) / 3
になることは確認したつもりです.
どなたか,具体例に当てはめてチェックしていただけるとありがたいです.
(私は公式を導くだけで疲れました.orz)


証明はちょっと面倒で,ベクトル解析の知識が必要です.
(知識のない方は読み飛ばしてください.)
長くなるので概要だけ示します.

まず,一般の図形の図心 (密度一定の場合の重心) の定義は次のように,
図形内部の面積分で定義される.

Xg = ∫X dS / ∫dS.
Yg = ∫Y dS / ∫dS.

上の2つの式の分母はもちろん図形の面積で,
∫dS = ∫Y dX (積分路は右回り)
= -∫Y dX (積分路は左回り)
で求められる.(図を描いてみればすぐにわかります.)
多角形の場合には最初に示したSの式になる.

分子の計算は厄介.分母の場合と同様に,面積分を図形の境界上の線積分に変換するが,
ストークスの定理を用いるため,Z軸を付け加えて3次元で考える.

図形はもちろんXY平面上にあるので,その単位法線ベクトルNは (0, 0, 1).
rot A = (0, 0, X) となるようなベクトルAを考えると,ストークスの定理により
∫X dS = ∫(rot A)・N dS = ∫ A・dL (dL = (dx, dy, dz))

A=(0, X^2/2, 0) とすると rot A=(0, 0, X) なので
∫X dS = ∫ (X^2/2) dy.
これを多角形の場合について計算すると,上記の Xg の式になる.Yg も同様.


重心 (Wikipedia)
http://ja.wikipedia.org/wiki/%E9%87%8D%E5%BF%83

ストークスの定理 (Wikipedia)
http://ja.wikipedia.org/wiki/%E3%82%B9%E3%83%88%E3%83%BC%E3%82%AF%E3%82%B9%E3%81%AE%E5%AE%9A%E7%90%86

投稿日時 - 2006-11-16 20:51:45

ANo.5

#3さんのようになるのかと思ったのですが、
(10,10)、(-10,10)、(-10,-10)、(10,-10)を頂点とする正方形の重心は(0,0)ですが、(9,10.1)、(8,10.2)、(7,10.3)、(-7,10.3)、(-8,10.2)、(-9,10.1)を加えた10角形の座標を平均して出した点は(0,6.12)となり、重心とは思えません。

投稿日時 - 2006-11-12 18:42:03

ANo.4

4角形の場合、二つの3角形に分けてそれぞれの重心を求めると、その2点を結ぶ線分に4角形の重心があるので、もう一組の分け方で分けた場合の線分との交点が重心になります。

5角形の場合、3角形と4角形に分けてそれぞれの重心を求めると(4角形は上記の方法による)、その2点を結ぶ線分上に重心があるので、別の分け方で同じことをして交点を求めればよい。

6角形は...

のようになり、かなり面倒なことになるのではないかと思います。

投稿日時 - 2006-11-12 18:22:24

ANo.3

頂点座標が全部わかってるなら、重心は簡単です。
x座標、y座標とも平均値をとればいいのです。
x=(全部の点のx座標の和)/(頂点の数)
y=(全部の点のy座標の和)/(頂点の数)

投稿日時 - 2006-11-12 18:18:03

ANo.2

 重心ですか.なるほど.
 ちなみに多角形は密度一定の剛体ですよね.これは難しい・・・

 明解な回答を思いつかなかったですので,詭弁を(笑)
 多角形を複数の三角形に分割し,各三角形の重心を計算してから更にその重心を求めるという方法でどうでしょう? ^^

参考URL:http://www12.plala.or.jp/ksp/mechanics/CG/ , http://www.nikonet.or.jp/spring/heso/heso2_1.htm

投稿日時 - 2006-11-12 18:12:19

あわせてチェックしたい
  • 多角形の三角分割 ...
  • 2多角形を重ねた際の重ならない部分の座標取得方法 ...
  • 星型多角形 ...
PR
【回答募集中】花粉にひと言、物申す![ 詳細 ]

OKWaveのオススメ

教えて弁護士さん!

お金の悩みQ&A特集はこちら

おすすめリンク