重心坐标的数学原理、计算方法与应用综述
三维空间中的三角形的二维重心坐标
三维空间中的三角形的二维重心坐标是计算机图形学诸多算法的数学基础。这类二维重心坐标可以如下形式表示:
重心坐标的维度与顶点的维度无关,只与顶点所张成的仿射空间的维度有关。例如:
- 三个三维顶点在三维空间组成一个三角面,该平面上的重心坐标是二维重心坐标。
- 四个三维顶点在三维空间组成一个四面体,该三维空间内的重心坐标是三维重心坐标。
- 四个三维顶点在三维空间组成一个四边形,该平面上的重心坐标是二维重心坐标。
由于重心坐标满足归一性:
所以三维参数(x,y,z)的自由度减少1,具体来说是从3减少到2。有以下值得注意的性质:
- 无论顶点的维度是多少,二维重心坐标只能表示一个二维平面上的点,该平面可能处于高维空间(如三维空间)中。
- 对于参数(x,y,z)来说,在归一化条件x+y+z=1的作用下,参数空间被限制在三维参数空间的一个子空间平面上,该平面嵌入三维参数空间的方式是唯一确定的。
- 对于参数(x,y,z)所表示的顶点来说,这些顶点都位于几何空间中的一个平面上,该平面嵌入高维几何空间(如三维几何空间)的方式是任意的。
- 对于三维空间中的二维重心坐标来说,参数是三维的,参数空间是二维的,参数对应的顶点几何坐标是三维的,所能表示的顶点空间是二维的。
从原理上可以这样子总结:
为了一些计算上的优良性质,我们用关于三角形三个顶点的三维参数表示二维平面上的点,为了保证这些点被限制在几何空间的二维平面上,我们设计了归一化条件x+y+z=1来减少我们的系统中顶点的几何坐标的自由度(以匹配二维平面),而参数的自由度减少和参数空间被限制在三维参数空间中的二维平面上,也是归一化条件设计的必然结果。这种必然性和俩个“限制在平面”上的关联性,可以用仿射单射映射保证仿射空间维度不变来说明。
以上内容旨在回答“三角形的重心坐标能表示什么和为什么能表示”,这更多是为了满足好奇心,接下来回答“为什么设计得好和如何使用”,这是为了解决技术问题。
重心坐标之所以叫重心坐标,是因为他受重心计算启发,天生就和权重有关系,我们假设一个三角形仅在三个顶点有质量,则重心可以用如下公式计算:
我们把质量推广抽象成权重,故得到
在权重计算上天生优势,使得重心坐标非常适合用于“过渡”“插值”等技术操作,在计算机图形学的渲染、动画、物理模拟等领域有广泛的使用。
重心坐标的计算方法如下:
有向面积法的正确性条件和计算细节:
抽象地讲,用有向面积求某个点关于某三角形广义重心坐标的正确性条件是:所求点关于三角形某边的有向面积的符号和所求点与该边的位置关系(内外侧)总是和总有向面积所使用的保持一致。具体来说:
上面说的正确性条件是指正确使用有向面积法的条件,下面讨论有向面积法本身的正确性。
事实上求重心坐标的方案很多,不过大部分是有向面积法的变形。有向面积法正确性的证明思路很多:
- 向量法(最常用)
- 线性方程组法
- 纯几何法
- 块分割法等等
我们以线性方程组法为例证明在二维平面内用有向面积法求三角形广义二维重心坐标的正确性:
以上,我们介绍了重心坐标的计算方法并论证了该方法正确性。接下来举例一些二维重心坐标的常见应用:
- 使用重心坐标进行顶点属性插值(如纹理、法线、颜色、深度)
- 光线追踪中射线与三角面求交通常得到重心坐标
- 判断一个点在不在三角形图元中(更常用的方法是直接用叉积,不必再求出重心坐标)
- 在有限元分析中也有重要应用
重心坐标法的优越性:
| 对比项目 | 方案一:空间直角坐标系 (绝对坐标) | 方案二:基点+双向量基底 (局部斜坐标系) | 方案三:重心坐标 (仿射坐标) |
|---|---|---|---|
| 数学本质 | 全局、正交的笛卡尔坐标(x, y, z) | 以基点 A 为原点,以边向量 AB、AC 为基底的局部坐标 (u, v) | 以顶点为“基”的齐次坐标 (λ₁, λ₂, λ₃),满足 λ₁+λ₂+λ₃=1 |
| 表示点P | P = (x, y, z) | P = A + u*AB + v*AC | P = λ₁A + λ₂B + λ₃C |
| 判断点在内 | 需与三角形三边进行3次叉积/点积测试 | 解出 (u, v) 后,检查 u≥0, v≥0, u+v≤1 | 检查 λ₁>0, λ₂>0, λ₃>0 |
| 属性插值 | 无直接方法,需额外建立映射 | 可线性插值:F(P) = F(A) + u*ΔF_AB + v*ΔF_AC | 天然对称的线性插值:F(P) = λ₁F(A) + λ₂F(B) + λ₃F(C) |
| 仿射不变性 | 无。坐标值随变换完全改变。 | 有,但不完全。(u, v) 在纯仿射变换下不变,但表示不对称。 | 完全具备。(λᵢ) 在任何仿射变换下严格不变,且表示对称。 |
| 几何直观 | 与三角形关系微弱,依赖全局参考系 | 基于平行四边形法则,有向量空间直观 | 面积比/质心,有强烈的仿射几何与物理直观 |
| 计算复杂度 | 高(多次全局计算) | 中(解一个2x2线性方程组) | 中(可通过面积比或方程组求解) |
| 核心优势 | 通用、绝对,适用于任何空间定位 | 将问题局部化,计算比方案一更高效直接 | 在方案二基础上,实现了表示的完美对称性与完全的仿射不变性 |
高维空间中的重心坐标法
重心坐标在内外判断、线性插值、仿射不变性和对称性方面的优良性质可以很好的推广到高维空间的单纯形(Simplex)中。
经典应用:控制笼目标形变动画
不同于简单的直接在俩个mesh状态间线性插值的传统目标形变动画,一种较为先进的目标形变动画是基于控制笼的。
第一步:先将顶点绑定到初始状态的控制笼上,记录各个顶点此时的广义重心坐标
第二步:用户拖动控制笼的顶点
第三步:通过重心坐标重新算出顶点的绝对坐标
注意,控制笼目标形变动画是仿射变换,不能直接改变平行性,如果要实现矩形变梯形,常见的方案是使用左右各一个控制笼复合操作。
控制笼目标形变动画在主流软件有广泛的实现,例如Blender中网格形变修改器。
控制笼技术的前期核心难点是如何设计广义重心坐标的构造方案以满足多种优良性质。
标准重心坐标的适用范围和广义重心坐标的推广
标准重心坐标只适用于单纯形,首先是因为标准重心坐标只能表示图形内部的顶点,但非单纯形可能出现一个重心坐标同时能表示图形内和图形外的顶点的情况。
而广义重心坐标的推广是一个深水区。我们可以先总览一下广义重心坐标在不同情况下的性质变化,然后做一些简单研究。
| 性质 | 单纯形 | 一般凸图形 | 一般连通图形 | 一般图形 (不剖分) |
|---|---|---|---|---|
| 存在性 | 唯一存在 | 存在不唯一 | 存在,构造复杂 | 通常无法定义 |
| 构造方法 | 显式体积比(面积比) | Wachspress坐标、离散谐波坐标等 | 均值坐标、复对数坐标等 | 无通用构造方法 |
| 正性 | 内部严格正 | 内部可保持正性 | 通常不满足(必有负权) | 不适用 |
| 线性精度 | 完美满足 | 核心准则,满足 | 可满足(如均值坐标) | 不适用 |
| 仿射不变性 | 完美满足 | 通常满足 | 通常满足 | 不适用 |
| 对称性 | 完全对称 | 通常满足 | 通常满足 | 不适用 |
| 光滑性 | 通常 | 通常 | 无法保证 | |
| 常见应用 | 有限元基础单元、几何计算 | 凸多边形插值、图像变形、纹理映射 | 非凸多边形变形、图像扭曲、色差校正 | 无法直接应用 |
补充:叉乘不能直接推广到任意n维空间的原因,和叉乘在n维空间的不完全推广“多重向量积”
在高维空间中,找到一个向量垂直于向量A和B,同时模长等于他们的n维体积是容易的,问题在于,这样的向量除了在3维和7维空间时,都不唯一。
多重向量积:
评论区
评论列表
正在加载评论...