重心坐标
重心坐标(barycentric coordinates)用系数之和为一的线性组合表示一个点。若 仿射独立,点 在它们的仿射包内可唯一写成 这组实数 称为相对于这些顶点的归一化重心坐标。负坐标允许点落在单纯形外;全部坐标非负时,点位于这些顶点的凸包内。[1]
取三角形 、、,求 的坐标。横坐标给出 ,纵坐标给出 ,再用系数和得 三者都正,说明点严格在三角形内部;代回得 ,不是只核对系数之和。
仿射独立保证唯一性
将 代回定义,得到 仿射独立恰好意味着右边的差向量线性无关,它们又张成仿射包的方向空间,因此系数存在且唯一。更直接地,若两组系数都表示 ,相减后有 、;消去 后,由差向量线性无关得到全部 。
若顶点共线,唯一性就可能失败。例如在直线上取位置零、一、二,点一既可写为 ,也可写为 。系数和都为一,却不是同一组坐标。三角形算法中面积为零时遇到的除零,正对应这个仿射退化。
有向面积与坐标的对应
在平面中以 表示三点构成的有向面积,即 。三角形不退化时, 证明以第一式为例。利用行列式对各点的仿射线性性,将 代入有向面积;重复顶点的面积为零,剩下 。另两式同理。分母非零是能相除的必要条件。
主例总面积为六;、、,除以六得到前面的 。图中面积与坐标的索引要交叉看:顶点 的权重来自不含 的子三角形 。
变式取 。坐标为 ,第一个为负,说明越过了边 。此时 ,有向面积保留负号;若把三个面积都取绝对值,其比值之和不再为一,就不能直接作为归一化重心坐标。
凸组合与边界识别
三角形连同边界正是三顶点的凸包,所以重心坐标全部非负当且仅当点在三角形内或边上。若 ,表示只由 组合,点在边 的直线上;再要求另外两者非负,才保证位于边线段上。若两个坐标为零,余下坐标必为一,点恰为相应顶点。
例如 的坐标为 ,是边 中点。只有“某个坐标为零”并不足以断言在线段内: 也给出边所在直线上的点,但已越过端点。
仿射插值与坐标约定
给顶点标量值 ,用 做仿射插值。代入主例得 。三个顶点确定的仿射函数实际上是 ,直接代入 也为五。保持仿射函数正是这种坐标的线性精度,不表示任意非线性函数的真实值也由三个样本唯一决定。
几何文献有时使用齐次重心坐标 ,允许同时乘非零常数。若 ,可除以总和得到本文的归一化坐标;总和为零的非零三元组不对应通常仿射平面中的有限点。使用面积比、插值和跨软件交换数据时,应先确认归一化方式与顶点顺序。
参考文献
- ↑ CGAL,2D Generalized Barycentric Coordinates,三角形坐标与线性精度。