
No.7ベストアンサー
- 回答日時:
#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)
No.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% …
No.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)となり、重心とは思えません。
No.4
- 回答日時:
4角形の場合、二つの3角形に分けてそれぞれの重心を求めると、その2点を結ぶ線分に4角形の重心があるので、もう一組の分け方で分けた場合の線分との交点が重心になります。
5角形の場合、3角形と4角形に分けてそれぞれの重心を求めると(4角形は上記の方法による)、その2点を結ぶ線分上に重心があるので、別の分け方で同じことをして交点を求めればよい。
6角形は...
のようになり、かなり面倒なことになるのではないかと思います。

No.3
- 回答日時:
頂点座標が全部わかってるなら、重心は簡単です。
x座標、y座標とも平均値をとればいいのです。
x=(全部の点のx座標の和)/(頂点の数)
y=(全部の点のy座標の和)/(頂点の数)
No.2
- 回答日時:
重心ですか.なるほど.
ちなみに多角形は密度一定の剛体ですよね.これは難しい・・・
明解な回答を思いつかなかったですので,詭弁を(笑)
多角形を複数の三角形に分割し,各三角形の重心を計算してから更にその重心を求めるという方法でどうでしょう? ^^
参考URL:http://www12.plala.or.jp/ksp/mechanics/CG/ , http://www.nikonet.or.jp/spring/heso/heso2_1.htm
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
以下のプログラムは重心を求めるプログラムなそうなのですが、例えば検出した円や四角形の重心を取るとしま
C言語・C++・C#
-
四角形の中心の求め方
数学
-
変形図形の重心点(中心点)の求め方
数学
-
4
n角形の重心を求めるアルゴリズム
数学
-
5
5角形の本当の中心
画像編集・動画編集・音楽編集
-
6
五角形と台形の問題で・・
数学
-
7
三点の座標から中心点の求め方
数学
-
8
N点間の中心と重心の求め方
数学
-
9
四角形の重心の求め方の定義名
数学
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
4次元、5、6、7、8、9次...
-
5
重分積分の極座標変換について
-
6
円筒座標におけるナビエストー...
-
7
なぜベクトルの外積の向きが右...
-
8
距離、方位角から座標を求める方法
-
9
座標を回転させる計算方法を教...
-
10
極座標での負の概念が分かりません
-
11
テンソルが座標変換について不...
-
12
距離と方向角から座標を求める...
-
13
2点を通る半径rの円の中心の座標
-
14
極座標と直交座標の変換について
-
15
遠近法の計算方法を教えてくだ...
-
16
長方形を回転させたときの縦方...
-
17
座標計算の公式
-
18
座標の回転
-
19
3次元で回転させた座標値の計...
-
20
複素数平面と座標平面の対応に...
おすすめ情報
公式facebook
公式twitter