计算最优坍缩位置方法

计算机图形学 123 views 1 replies 🔒 closed
#1 ·

计算最优坍缩位置时,需要解方程 Kx = 0,其中 K 为正定矩阵,那么这个方程不是只有零解么?

mod
#2 ·

这里是我之前回答的时候说错了,矩阵 KK 是半正定而非正定的,非常抱歉。下面放一小段证明以便理解,感兴趣可以看一下。


我们首先回顾一下,面片的二次误差矩阵是 Kf=vvTK_f=\mathbf{v}\mathbf{v}^T ,而向量 v=(a,b,c,d)T\mathbf{v}=(a, b, c, d)^T 对应着面片所在平面 ax+by+cz+d=0ax+by+cz+d=0 的法向量(但比法向量多了一维)。计算点 u=(x,y,z,1)\mathbf{u}=(x, y, z, 1) 二次误差的公式

cost=(vTu)2=uTvvTu=uTKfu \text{cost}=(\mathbf{v}^T\mathbf{u})^2 =\mathbf{u}^T\mathbf{v}\mathbf{v}^T\mathbf{u} =\mathbf{u}^TK_f\mathbf{u}

中, vTu\mathbf{v}^T\mathbf{u} 是一个内积,展开写就是 ax+by+cz+dax+by+cz+d ,不难发现该内积和点到平面的距离

distance=ax+by+cz+da2+b2+c2 \text{distance}=\frac{|ax+by+cz+d|}{\sqrt{a^2+b^2+c^2}}

之间只差了一个系数 1/a2+b2+c21/\sqrt{a^2+b^2+c^2} ,所以 cost 的含义就是距离的平方。而当我们实际计算的时候,所用的向量 v\mathbf{v} 直接来自面片的法向量(已经单位化过),所以 a2+b2+c2=1\sqrt{a^2+b^2+c^2}=1 ,cost 就直接等于 distance 了。根据几何直观,一点到平面距离的平方总是大于等于零的,因此矩阵 KfK_f 是对称半正定的

由于顶点的二次误差矩阵 KvK_v 是若干半正定矩阵 KfK_f 之和,所以 KvK_v 是半正定的。同理可得,边的二次误差矩阵 KK 也是半正定的。

🔒 Closed