法向量变换

法向量变换

设两点切线向量为\(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\)

posted @ 2022-04-20 19:43  WhiteBlackCat  阅读(196)  评论(0编辑  收藏  举报