重心坐标

维基百科,自由的百科全书
跳转至: 导航搜索

数学中,重心坐标是由单形(如三角形四面体等)顶点定义的坐标。重心坐标是齐次坐标的一种。

v1, ..., vn向量空间V中一个单形的顶点,如果V中某点p满足,

(\lambda_1 + \cdots + \lambda_n)\, p = \lambda_1 \, v_1 + \cdots +\lambda_n \, v_n ,

那么我们称系数(λ1, ..., λn)是 p关于v1, ..., vn重心坐标。这些顶点自己的坐标分别是(1, 0, 0, ..., 0),(0, 1, 0, ..., 0), ...,(0, 0, 0, ..., 1)。重心坐标不是惟一的:对任何不等于零的k,(k λ1, ..., k λn)也是p的重心坐标。但总可以取坐标满足 λ1 + ...+ λn = 1,称为正规化坐标。注意到定义式在仿射变换下不变,故重心坐标具有仿射不变性。

如果坐标分量都非负,则pv1, ..., vn凸包内部,即由这些顶点组成的单形包含p。我们设想如果有质量λ1, ..., λn分别位于单形的顶点,那么质量中心就是p。这是术语“重心”的起源,1827年由奥古斯特·费迪南德·莫比乌斯最初引入。

三角形的重心坐标[编辑]

Areal coordinates.png

三角形情形中,重心坐标也叫面积坐标,因为P点关于三角形ABC的重心坐标和三角形PBC, PCAPAB的(有向)面积成比例,证明如下(如右图所示)。

我们用黑体小写字母表示对应点的向量,比如三角形ABC顶点为\textbf{a}\, ,\textbf{b}\,\textbf{c}\,,P点为\textbf{p}等。设PBC, PCAPAB面积之比为\lambda_1 :\lambda_2:\lambda_3\,\lambda_1+\lambda_2+\lambda_3=1,设射线APBC交于D,则

BD:DC=\lambda_3 :\lambda_2 ,从而\textbf{d}= \frac{\lambda_2 \textbf{b}+\lambda_3 \textbf{c}}{\lambda_2+\lambda_3},
AP:PD=(\lambda_2+\lambda_3):\lambda_1 ,故
\textbf{p}=\frac{(\lambda_2+\lambda_3)\textbf{d} +\lambda_1 \textbf{a}}{\lambda_1+\lambda_2+\lambda_3}\,,

\textbf{p}=\lambda_1 \textbf{a}+\lambda_2 \textbf{b}+\lambda_3 \textbf{c}\, .

所以,(\lambda_1,\lambda_2,\lambda_3)就是P的重心坐标。

坐标变换[编辑]

给定三角形平面一点P,我们将这一点的面积坐标\lambda_{1}\,\lambda_{2}\,\lambda_{3}\,笛卡尔坐标表示出来。

利用笛卡尔坐标中的三角形面积公式:


S (ABC)=\frac{1}{2}\begin{vmatrix}1 &x_a&y_a\\1 &x_b&y_b\\1 &x_c&y_c\\\end{vmatrix}

我们可得:


\lambda_1=S (PBC)/S (ABC)=\begin{vmatrix}1 &x_p&y_p\\1 &x_b&y_b\\1 &x_c&y_c\\\end{vmatrix}/
\begin{vmatrix}1 &x_a&y_a\\1 &x_b&y_b\\1 &x_c&y_c\\\end{vmatrix}

类似地有\lambda_2 , \lambda_3,注意ABC构成一个三角形,上式的分母不可能为0。

反过来则简单得多:

\textbf{p}=\lambda_1 \textbf{a}+\lambda_2 \textbf{b}+\lambda_3 \textbf{c} ,
x_p=\lambda_1 x_a+\lambda_2 x_b +\lambda_3 x_c ,
y_p=\lambda_1 y_a+\lambda_2 y_b +\lambda_3 y_c .

判断一点的位置[编辑]

因重心坐标是笛卡尔坐标的一个线性变换,从而它们在边和三角形区域之间的变化是线性的。如果点在三角形内部,那么所有重心坐标属于开区间(0,1);如果一点在三角形的边上,至少有一个面积坐标\lambda_{1...3}为0,其余分量位于闭区间[0,1]。如果有某个坐标小于0,则位于三角形外部,具体分布可参考上图。 (图示中,B和C顶端的坐标正副反了,B的应该是(-,-,+),C的是(-,+,-)

应用[编辑]

面积坐标在涉及到三角形子区域的工程学问题时特别有用,经常可以化简解析积分求值,高斯积分法表也常以面积坐标的形式给出。

考虑由顶点\textbf{v}_{1}\,, \textbf{v}_{2}\,\textbf{v}_{3}\,定义的三角形T,任何在三角形内部的点\textbf{p}都能写成顶点的加权和:

\textbf{p} = \lambda_{1} \textbf{v}_{1} + \lambda_{2} \textbf{v}_{2} + \lambda_{3} \textbf{v}_{3},

这里\lambda_{1}\,\lambda_{2}\,\lambda_{3}\,是面积坐标。注意到\lambda_{3} = 1 - \lambda_{1} - \lambda_{2}\,。从而,函数fT上的积分为:


\int_{T} f(\textbf{p})\ ds = 2S \int_{0}^{1} \int_{0}^{1 - \lambda_{2}} f(\lambda_{1} \textbf{v}_{1} + \lambda_{2} \textbf{v}_{2} +
(1 - \lambda_{1} - \lambda_{2})\textbf{v}_{3}) \ d\lambda_{1} \ d\lambda_{2}
\,

这里S是三角形T的面积。注意上式具有线性插值的形式。

重心坐标提供了一种非结构网格上函数插值的方法,假设函数值在所有网格的顶点上已知。如果0 \leq \lambda_i \leq 1 \;\forall\; i \in {1,2,3},则点\textbf{p}位于三角形内部或边界上。我们取f的插值为

f(\textbf{p}) = \lambda_1 f(\textbf{v}_1) + \lambda_2 f(\textbf{v}_2) + \lambda_3 f(\textbf{v}_3),

这个线性插值是自动正规的因为\lambda_1+\lambda_2+\lambda_3=1

四面体的重心坐标[编辑]

重心坐标容易推广到三维空间。3维单形即四面体,具有四个三角形面和四个顶点。

完全类似于三角形,四面体\textbf{v}_1,\textbf{v}_2, \textbf{v}_3,\textbf{v}_4的顶点\textbf{v}_1的重心坐标为(1,0,0,0),\textbf{v}_2 为(0,1,0,0),如是等等。

\textbf{p}的笛卡尔坐标和为关于四面体\textbf{v}_1,\textbf{v}_2, \textbf{v}_3,\textbf{v}_4的重心坐标的关系:


\lambda_1=\text{Vol}(PV_2V_3V_4)/\text{Vol}(V_1V_2V_3V_4),\;\lambda_2=\cdots.

这里\text{Vol}(V_1V_2V_3V_4)\textbf{v}_1,\textbf{v}_2, \textbf{v}_3,\textbf{v}_4组成的四面体的体积,类似于三角形也可以用笛卡尔坐标的一个行列式表示出来。

3维重心坐标和2维一样,可以确定一点是否位于四面体内部,也能对四面体网格上函数插值。因为利用重心坐标可以极大地简化3维插值,四面体网格经常用于有限元分析

参考文献[编辑]

外部链接[编辑]