二维多边形和三维多面体的重心公式

本文介绍了如何计算二维多边形和三维多面体的重心,通过分解多边形为三角形,利用面积和重心公式进行加权平均,以及应用散度定理和高斯-格林公式,推导出三维多面体的重心公式。方法涉及了秦九韶公式和几何体的边界处理。

二维多边形和三维多面体的重心公式

本文主要讨论的是如何快速求解二维多边形和三维多面体的重心。最终的结果分别在公式(3)(6)(3)(6)(3)(6)

首先给出任意维几何体重心的公式,
xc=1V∫VxdV(1) \boldsymbol{x}_c =\frac{1}{V}\int_V \boldsymbol{x} dV \tag{1} xc=V1VxdV(1)
其中,x\boldsymbol{x}x是几何体中点的坐标。

二维任意多边形

二维多边形重心的求解思路是将多边形分解为若干个三角形,以三角形的面积为权重,对子三角形重心求加权平均值获得多边形的重心。

三角形面积和重心公式

任意三角形Δijk\Delta ijkΔijk的重心公式为,
xcijk=xi+xj+xk3(2) \boldsymbol{x}_c^{ijk}=\frac{\boldsymbol{x}_i+\boldsymbol{x}_j+\boldsymbol{x}_k}{3} \tag{2} xcijk=3xi+xj+xk(2)
其中,xi,xj,xk\boldsymbol{x}_i,\boldsymbol{x}_j,\boldsymbol{x}_kxi,xj,xk是三角形三个顶点的坐标。

面积公式可以使用秦九韶公式,或者
S=12∣1xiyi1xjyj1xkyk∣ S= \frac{1}{2} \begin{vmatrix} 1 & x_i & y_i \\ 1 & x_j & y_j \\ 1 & x_k & y_k \end{vmatrix} S=21111xixjxkyiyjyk

二维任意多边形的面积和重心公式

对任意一个二维多边形假设其有NNN个顶点,也就是NNN条边,则固定一个顶点,向与其不相邻的顶点做连线,可以将多边形分解为N−2N-2N2个三角形,

下图是一个例子,
在这里插入图片描述

将六边形分解为 Δ123,Δ134,Δ145,Δ156\Delta 123,\Delta 134,\Delta 145,\Delta 156Δ123,Δ134,Δ145,Δ156四个三角形。

任意NNN边形,分解为N−2N-2N2个三角形之后,重心公式(1)为,
xc=1V∫VxdV=∑iN−2∫VixdV∑iN−2Vi=∑iN−2∣Vi∣xci∑iN−2∣Vi∣(3) \boldsymbol{x}_c = \frac{1}{V}\int_V \boldsymbol{x} dV = \frac{\displaystyle \sum_{i}^{N-2} \int_{V_i} \boldsymbol{x} dV}{\displaystyle \sum_{i}^{N-2} V_i} =\frac{\displaystyle \sum_{i}^{N-2} |V_i| \boldsymbol{x}_c^i}{\displaystyle\sum_i^{N-2} |V_i|} \tag{3} xc=V1VxdV=iN2ViiN2VixdV=iN2ViiN2Vixci(3)
其中,xci\boldsymbol{x}_c^ixci∣Vi∣|V_i|Vi分别是三角形Δ1,i+1,i+2\Delta 1,i+1,i+2Δ1,i+1,i+2的重心和面积。

三维任意多面体

三维重心公式的推到需要散度定理(高斯-格林公式),会对多面体的边界三维多边形分解为若干个三角形,并求他们的面积和重心。

三维多面体的体积公式

这里x=(x,y,z)\boldsymbol{x}=(x,y,z)x=(x,y,z)是点的坐标。

三维多面体的体积公式为,
V=∫V1dV=13∫V∇⋅xdV=13∫∂Vx⋅ndS V=\int_V 1 dV = \frac{1}{3}\int_V \nabla \cdot \boldsymbol{x} dV =\frac{1}{3} \int_{\partial V} \boldsymbol{x} \cdot \boldsymbol{n} dS V=V1dV=31VxdV=31VxndS
其中,∇⋅x=∂x∂x+∂y∂y+∂z∂z=1+1+1=3\nabla \cdot \boldsymbol{x} =\frac{\partial x}{\partial x}+ \frac{\partial y}{\partial y} +\frac{\partial z}{\partial z}=1+1+1=3x=xx+yy+zz=1+1+1=3,最后一个等式使用了散度定理(高斯-格林公式),n\boldsymbol{n}n是单位外法向量。∂V\partial VV是包围多面体VVV的若干个多边形组成的。这些多边形可以按照第一节中的方式,分解为若干个三角形(假设分解为NNN个三角形),因此多面体的体积是
V=13∑i=1Nxci⋅ni∣Si∣(4) V=\frac{1}{3}\sum_{i=1}^N \boldsymbol{x}_c^i \cdot \boldsymbol{n}_i |S_i| \tag{4} V=31i=1NxciniSi(4)
其中,三角形重心的求解请见公式(2),SiS_iSi是第iii个三角形的面积, ni\boldsymbol{n}_ini 是第iii个三角形指向多面体外的单位法向量。

三维多面体的重心公式

引入关于xxx的标量函数AAA,并记AcA_cAc
Ac=1V∫VAdV A_c=\frac{1}{V}\int_V A dV Ac=V1VAdV
显然有
A=133A=13(∇⋅x)A=13[∇⋅(Ax)−x⋅∇A] A =\frac{1}{3} 3A =\frac{1}{3} (\nabla \cdot \boldsymbol{x})A =\frac{1}{3} [\nabla \cdot (A \boldsymbol{x} )-\boldsymbol{x}\cdot \nabla A] A=313A=31(x)A=31[(Ax)xA]
因此,利用上面两个式子
AcV=∫VAdV=∫V13[∇⋅(Ax)−x⋅∇A]dV=13∫V∇⋅(Ax)dV−13∫Vx⋅∇AdV(5) A_cV= \int_V A dV =\int_V \frac{1}{3} [\nabla \cdot (A \boldsymbol{x} )-\boldsymbol{x}\cdot \nabla A] dV = \frac{1}{3} \int_V \nabla \cdot (A \boldsymbol{x} ) dV - \frac{1}{3} \int_V \boldsymbol{x}\cdot \nabla A dV \tag{5} AcV=VAdV=V31[(Ax)xA]dV=31V(Ax)dV31VxAdV(5)
根据AAA的任意性,可以分别取AAAx,y,zx,y,zx,y,z,这里x,y,zx,y,zx,y,z是向量x\boldsymbol{x}x的分量。
因此,x⋅∇A\boldsymbol{x}\cdot \nabla AxA 分别等于x,y,zx,y,zx,y,z因此 公式(5)可以分别写为
xcV=13∫V∇⋅(xx)dV−13∫VxdV=13∫V∇⋅(xx)dV−13xcV x_c V = \frac{1}{3} \int_V \nabla \cdot (x \boldsymbol{x} ) dV - \frac{1}{3} \int_V x dV = \frac{1}{3} \int_V \nabla \cdot (x \boldsymbol{x} ) dV - \frac{1}{3} x_c V xcV=31V(xx)dV31VxdV=31V(xx)dV31xcV

ycV=13∫V∇⋅(yx)dV−13∫VydV=13∫V∇⋅(yx)dV−13ycV y_c V = \frac{1}{3} \int_V \nabla \cdot (y \boldsymbol{x} ) dV - \frac{1}{3} \int_V y dV = \frac{1}{3} \int_V \nabla \cdot (y \boldsymbol{x} ) dV - \frac{1}{3} y_c V ycV=31V(yx)dV31VydV=31V(yx)dV31ycV

zcV=13∫V∇⋅(zx)dV−13∫VzdV=13∫V∇⋅(zx)dV−13zcV z_c V = \frac{1}{3} \int_V \nabla \cdot (z \boldsymbol{x} ) dV - \frac{1}{3} \int_V z dV = \frac{1}{3} \int_V \nabla \cdot (z \boldsymbol{x} ) dV - \frac{1}{3} z_c V zcV=31V(zx)dV31VzdV=31V(zx)dV31zcV

可以看到第一项和最后一项可以合并同类项,可以得到,
4xcV=∫V∇⋅(xx)dV=∫Sxx⋅ndS 4 x_cV = \int_V \nabla \cdot (x \boldsymbol{x} ) dV =\int_S x \boldsymbol{x} \cdot \boldsymbol{n} dS 4xcV=V(xx)dV=SxxndS

4ycV=∫V∇⋅(yx)dV=∫Syx⋅ndS 4 y_cV = \int_V \nabla \cdot (y \boldsymbol{x} ) dV = \int_S y \boldsymbol{x} \cdot \boldsymbol{n} dS 4ycV=V(yx)dV=SyxndS

4zcV=∫V∇⋅(zx)dV=∫Szx⋅ndS 4 z_cV = \int_V \nabla \cdot (z \boldsymbol{x} ) dV = \int_S z \boldsymbol{x} \cdot \boldsymbol{n} dS 4zcV=V(zx)dV=SzxndS

上面式子中第二个等式是再应用一次散度定理(高斯-格林公式)。注意x,y,zx,y,zx,y,z是向量x\boldsymbol{x}x的分量,三个分量写成一个向量式为,
4xcV=∫Sx(x⋅n)dS=∑i=1N∫Six(x⋅n)dS=∑i=1N(xci⋅ni)∫SixdS=∑i=1N(xci⋅ni)∣Si∣xci 4 \boldsymbol{x}_c V =\int_S \boldsymbol{x}(\boldsymbol{x} \cdot \boldsymbol{n}) dS=\sum_{i=1}^N \int_{S_i} \boldsymbol{x}(\boldsymbol{x} \cdot \boldsymbol{n}) dS = \sum_{i=1}^N (\boldsymbol{x}_c^i \cdot \boldsymbol{n}_i) \int_{S_i} \boldsymbol{x} dS = \sum_{i=1}^N (\boldsymbol{x}_c^i \cdot \boldsymbol{n}_i) |S_i| \boldsymbol{x}_c^i 4xcV=Sx(xn)dS=i=1NSix(xn)dS=i=1N(xcini)SixdS=i=1N(xcini)Sixci
这里(x⋅n)(\boldsymbol{x} \cdot \boldsymbol{n})(xn)能够从积分式子中拿出来的原因是它在SiS_iSi上是一个常数,因此结合公式(4)(4)(4)我们就可以得到三维多面体重心坐标公式,
xc=∑i=1N(xci⋅ni)∣Si∣xci4V=3∑i=1N(xci⋅ni)∣Si∣xci4∑i=1Nxci⋅ni∣Si∣(6) \boldsymbol{x}_c =\frac{\displaystyle \sum_{i=1}^N (\boldsymbol{x}_c^i \cdot \boldsymbol{n}_i) |S_i| \boldsymbol{x}_c^i }{4V} = \frac{\displaystyle 3\sum_{i=1}^N (\boldsymbol{x}_c^i \cdot \boldsymbol{n}_i) |S_i| \boldsymbol{x}_c^i }{\displaystyle 4 \sum_{i=1}^N \boldsymbol{x}_c^i \cdot \boldsymbol{n}_i |S_i| } \tag{6} xc=4Vi=1N(xcini)Sixci=4i=1NxciniSi3i=1N(xcini)Sixci(6)

其中,xci\boldsymbol{x}_c^ixci是将多面体VVV的边界∂V\partial VV分解为第iii个三角形的重心,∣Si∣|S_i|Si是其面积,nin_ini是单位外法向量。

参考文献

Z.-J. Wang, Improved formulation for geometric properties of arbitrary polyhedra, AIAA J. 37 (10) (1999) 1326–1327.

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值