法向量变换
法向量变换
设两点切线向量为\(t\),其法线向量为\(n\),二者均为列向量,且满足\(t^Tn=0\)
设变换后的切线向量为\(t'\),法线向量为\(n'\),二者也需要满足\(t'^Tn'=0\)
设\(t'=Mt\),\(n'=Gn\),\(M\)和\(G\)分别为\(t\)和\(n\)的变换矩阵
则有\((Mt)^TGn=t^TM^TGn=0\)
设\(M^TG=S\),则式子为\(t^TSn=0\)
到这一步其实有的地方就将的很模糊了,直接就说因为\(t^Tn=0\),所以\(S\)为单位阵
然后利用\(M^TG=I\)推导\(G=(M^{-1})^T\)
上述情况确实是可行解,但是不能说\(t^Tn=0\)所以\(S\)就要为单位阵
特例情况:
- \(Sn=\lambda n\),当特征值\(\lambda=1\)时,\(S\)矩阵的特征向量\(n\)不会被矩阵\(S\)改变大小方向,此时\(S\)不用为单位阵
- \(S\)为负单位阵时,反向了\(n\)的方向,但是也满足\(t^Tn=0\)
- \(S\)为绕\(t\)旋转的旋转矩阵时,\(n\)离开了原本\(n\)和\(t\)所在的平面,但是仍垂直于\(t\),满足\(t^Tn=0\)
不能说因为\(t^Tn=0\)所以\(S\)就要为单位阵,而是因为有以下几个条件,使得特例情况不满足,所以\(S\)才需要为单位阵
- 我们要得到一个统一的\(S\)使得对任意的\(t\)和\(n\)均满足\(t^TSn=0\)(排除特例1,与\(n\)有关)
- 我们不应该反向法线方向(排除特例2)
- 我们不应该使得法线偏离原本法线和切线所在的平面(排除特例3)
当\(G=(M^{-1})^T=M\)时,也就是不包括不等比缩放时,对法线向量直接用\(M\)矩阵才是对的,不然应该对法线向量使用法线矩阵\(G\)