重心坐标

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

设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，称为正规化坐标。注意到定义式在仿射变换下不变，故重心坐标具有仿射不变性。

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

## 三角形的重心坐标

<image>

在三角形情形中，重心坐标也叫面积坐标，因为P点关于三角形ABC的重心坐标和三角形PBC, PCA及PAB的（有向）面积成比例，证明如下（如右图所示）。

我们用黑体小写字母表示对应点的向量，比如三角形ABC顶点为$\textbf{a}\, ,\textbf{b}\,$和$\textbf{c}\,$，P点为$\textbf{p}$等。设PBC, PCA及PAB面积之比为$\lambda_1 :\lambda_2:\lambda_3\,$且$\lambda_1+\lambda_2+\lambda_3=1$，设射线AP与BC交于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}\,$。从而，函数$f$在T上的积分为：

$$\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维插值，四面体网格经常用于有限元分析。

## 外部链接

- 重心坐标：一个有意思的运用 （解“三杯子问题”）位于cut-the-knot
- 齐次重心坐标在平面欧几里得几何中的运用