重心坐标

数学中，重心坐标是由单形（如三角形或四面体等）顶点定义的坐标。重心坐标是齐次坐标的一种。 设v1, ..., vn是向量空间V中一个单形的顶点，如果V中某点p满足， ( λ 1 + ⋯ + λ n ) p = λ 1 v 1 + ⋯ + λ n v n , {\displaystyle (\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年由奥古斯特·费迪南德·莫比乌斯最初引入。 在三角形情形中，重心坐标也叫面积坐标，因为P点关于三角形ABC的重心坐标和三角形PBC, PCA及PAB的（有向）面积成比例，证明如下（如右图所示）。 我们用黑体小写字母表示对应点的向量，比如三角形ABC顶点为 a , b {\displaystyle {\textbf {a}}\,,{\textbf {b}}\,} 和 c {\displaystyle {\textbf {c}}\,} ，P点为 p {\displaystyle {\textbf {p}}} 等。设PBC, PCA及PAB面积之比为 λ 1 : λ 2 : λ 3 {\displaystyle \lambda _{1}:\lambda _{2}:\lambda _{3}\,} 且 λ 1 + λ 2 + λ 3 = 1 {\displaystyle \lambda _{1}+\lambda _{2}+\lambda _{3}=1} ，设射线AP与BC交于D，则 B D : D C = λ 3 : λ 2 , {\displaystyle BD:DC=\lambda _{3}:\lambda _{2},} 从而 d = λ 2 b + λ 3 c λ 2 + λ 3 , {\displaystyle {\textbf {d}}={\frac {\lambda _{2}{\textbf {b}}+\lambda _{3}{\textbf {c}}}{\lambda _{2}+\lambda _{3}}},} A P : P D = ( λ 2 + λ 3 ) : λ 1 {\displaystyle AP:PD=(\lambda _{2}+\lambda _{3}):\lambda _{1}} ，故 p = ( λ 2 + λ 3 ) d + λ 1 a λ 1 + λ 2 + λ 3 , {\displaystyle {\textbf {p}}={\frac {(\lambda _{2}+\lambda _{3}){\textbf {d}}+\lambda _{1}{\textbf {a}}}{\lambda _{1}+\lambda _{2}+\lambda _{3}}}\,,} p = λ 1 a + λ 2 b + λ 3 c . {\displaystyle {\textbf {p}}=\lambda _{1}{\textbf {a}}+\lambda _{2}{\textbf {b}}+\lambda _{3}{\textbf {c}}\,.} 所以， ( λ 1 , λ 2 , λ 3 ) {\displaystyle (\lambda _{1},\lambda _{2},\lambda _{3})} 就是P的重心坐标。 给定三角形平面一点P，我们将这一点的面积坐标 λ 1 {\displaystyle \lambda _{1}\,} ， λ 2 {\displaystyle \lambda _{2}\,} 和 λ 3 {\displaystyle \lambda _{3}\,} 用笛卡尔坐标表示出来。 利用笛卡尔坐标中的三角形面积公式： S ( A B C ) = 1 2 | 1 x a y a 1 x b y b 1 x c y c | {\displaystyle S(ABC)={\frac {1}{2}}{\begin{vmatrix}1&x_{a}&y_{a}\\1&x_{b}&y_{b}\\1&x_{c}&y_{c}\\\end{vmatrix}}} 我们可得： λ 1 = S ( P B C ) / S ( A B C ) = | 1 x p y p 1 x b y b 1 x c y c | / | 1 x a y a 1 x b y b 1 x c y c | {\displaystyle \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}}} 类似地有 λ 2 , λ 3 {\displaystyle \lambda _{2},\lambda _{3}} ，注意ABC构成一个三角形，上式的分母不可能为0。 反过来则简单得多： p = λ 1 a + λ 2 b + λ 3 c , {\displaystyle {\textbf {p}}=\lambda _{1}{\textbf {a}}+\lambda _{2}{\textbf {b}}+\lambda _{3}{\textbf {c}},} 故 x p = λ 1 x a + λ 2 x b + λ 3 x c , {\displaystyle x_{p}=\lambda _{1}x_{a}+\lambda _{2}x_{b}+\lambda _{3}x_{c},} 和 y p = λ 1 y a + λ 2 y b + λ 3 y c . {\displaystyle y_{p}=\lambda _{1}y_{a}+\lambda _{2}y_{b}+\lambda _{3}y_{c}.} 因重心坐标是笛卡尔坐标的一个线性变换，从而它们在边和三角形区域之间的变化是线性的。如果点在三角形内部，那么所有重心坐标属于开区间 ( 0 , 1 ) {\displaystyle (0,1)} ；如果一点在三角形的边上，至少有一个面积坐标 λ 1...3 {\displaystyle \lambda _{1...3}} 为0，其余分量位于闭区间 [ 0 , 1 ] {\displaystyle [0,1]} 。如果有某个坐标小于0，则位于三角形外部，具体分布可参考上图。 图示中，B和C顶端的坐标正负反了，B的应该是（-,+,-），C的是（-,-,+） 面积坐标在涉及到三角形子区域的工程学问题时特别有用，经常可以化简解析积分求值，高斯积分法表也常以面积坐标的形式给出。 考虑由顶点 v 1 {\displaystyle {\textbf {v}}_{1}\,} , v 2 {\displaystyle {\textbf {v}}_{2}\,} 和 v 3 {\displaystyle {\textbf {v}}_{3}\,} 定义的三角形T，任何在三角形内部的点 p {\displaystyle {\textbf {p}}} 都能写成顶点的加权和： p = λ 1 v 1 + λ 2 v 2 + λ 3 v 3 , {\displaystyle {\textbf {p}}=\lambda _{1}{\textbf {v}}_{1}+\lambda _{2}{\textbf {v}}_{2}+\lambda _{3}{\textbf {v}}_{3},} 这里 λ 1 {\displaystyle \lambda _{1}\,} 、 λ 2 {\displaystyle \lambda _{2}\,} 和 λ 3 {\displaystyle \lambda _{3}\,} 是面积坐标。注意到 λ 3 = 1 − λ 1 − λ 2 {\displaystyle \lambda _{3}=1-\lambda _{1}-\lambda _{2}\,} 。从而，函数 f {\displaystyle f} 在T上的积分为： ∫ T f ( p )   d s = 2 S ∫ 0 1 ∫ 0 1 − λ 2 f ( λ 1 v 1 + λ 2 v 2 + ( 1 − λ 1 − λ 2 ) v 3 )   d λ 1   d λ 2 {\displaystyle \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 ≤ λ i ≤ 1 ∀ i ∈ 1 , 2 , 3 {\displaystyle 0\leq \lambda _{i}\leq 1\;\forall \;i\in {1,2,3}} ，则点 p {\displaystyle {\textbf {p}}} 位于三角形内部或边界上。我们取 f {\displaystyle f} 的插值为 f ( p ) = λ 1 f ( v 1 ) + λ 2 f ( v 2 ) + λ 3 f ( v 3 ) , {\displaystyle f({\textbf {p}})=\lambda _{1}f({\textbf {v}}_{1})+\lambda _{2}f({\textbf {v}}_{2})+\lambda _{3}f({\textbf {v}}_{3}),} 这个线性插值是自动正规的因为 λ 1 + λ 2 + λ 3 = 1 {\displaystyle \lambda _{1}+\lambda _{2}+\lambda _{3}=1} 。 重心坐标容易推广到三维空间。3维单形即四面体，具有四个三角形面和四个顶点。 完全类似于三角形，四面体 v 1 , v 2 , v 3 , v 4 {\displaystyle {\textbf {v}}_{1},{\textbf {v}}_{2},{\textbf {v}}_{3},{\textbf {v}}_{4}} 的顶点 v 1 {\displaystyle {\textbf {v}}_{1}} 的重心坐标为（1,0,0,0）， v 2 {\displaystyle {\textbf {v}}_{2}} 为（0,1,0,0），如是等等。 点 p {\displaystyle {\textbf {p}}} 的笛卡尔坐标和为关于四面体 v 1 , v 2 , v 3 , v 4 {\displaystyle {\textbf {v}}_{1},{\textbf {v}}_{2},{\textbf {v}}_{3},{\textbf {v}}_{4}} 的重心坐标的关系： λ 1 = Vol ( P V 2 V 3 V 4 ) / Vol ( V 1 V 2 V 3 V 4 ) , λ 2 = ⋯ . {\displaystyle \lambda _{1}={\text{Vol}}(PV_{2}V_{3}V_{4})/{\text{Vol}}(V_{1}V_{2}V_{3}V_{4}),\;\lambda _{2}=\cdots .} 这里 Vol ( V 1 V 2 V 3 V 4 ) {\displaystyle {\text{Vol}}(V_{1}V_{2}V_{3}V_{4})} 为 v 1 , v 2 , v 3 , v 4 {\displaystyle {\textbf {v}}_{1},{\textbf {v}}_{2},{\textbf {v}}_{3},{\textbf {v}}_{4}} 组成的四面体的体积，类似于三角形也可以用笛卡尔坐标的一个行列式表示出来。 3维重心坐标和2维一样，可以确定一点是否位于四面体内部，也能对四面体网格上函数插值。因为利用重心坐标可以极大地简化3维插值，四面体网格经常用于有限元分析。 Bradley, Christopher J. The Algebra of Geometry: Cartesian, Areal and Projective Co-ordinates. Bath: Highperception. 2007. ISBN 978-1-906338-00-8.  埃里克·韦斯坦因. Areal Coordinates. MathWorld.  埃里克·韦斯坦因. Barycentric Coordinates. MathWorld.  重心坐标：一个有意思的运用 （页面存档备份，存于互联网档案馆）（解“三杯子问题”）位于cut-the-knot 齐次重心坐标在平面欧几里得几何中的运用