重心坐標

數學中，重心坐標是由單形（如三角形或四面體等）頂點定義的坐標。重心坐標是齊次坐標的一種。

設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
- 齊次重心坐標在平面歐幾里得幾何中的運用