美文网首页
计算机图形学坐标变换

计算机图形学坐标变换

作者: 雨诺寒雪 | 来源:发表于2017-09-10 16:10 被阅读0次

    先附上原文链接:
    https://www.zybuluo.com/yuyujunjun/note/879480
    由于简书对数学公式的兼容性不那么好,还是请移步到原文去看。


    比例变换

    沿坐标轴变换: 乘对应对角矩阵即可

    沿任意坐标变换:

    • 首先将其变换到标准坐标系中:

        乘该坐标系的逆矩阵,如果是该坐标系正交,则其逆矩阵为其转置矩阵,如何求逆矩阵,详见我另一篇博客。
      
    • 乘以对角矩阵施加变换

    • 再乘以该坐标系变换回来

    旋转变换

    对于二维向量:

    < x,y >变成 <-y,x> 即可求出其旋转90度的向量,和原始向量构成一组基可求的与原始向量成任意角度的新向量。

    对于三维向量:

    矩阵方法:(假设向量皆为单位向量)

    将原始向量P绕任意轴A旋转任意角度:

    1. 首先沿着该轴将向量分解为沿轴的分量Y和垂直轴的分量C,因为平行于轴的分量在旋转过程中不变,我们只用考虑垂直轴的分量C:
      $$Y:(A \cdot P)A $$
      $$ C: P - Y $$
    2. 计算得到垂直A且包含C的平面,则可以在该平面内做二维旋转变换
    3. 将旋转后的向量加上Y即得到最后结果
      $$P'=Pcos\theta + (A \times P)sin \theta + A(A \cdot P)(1 - cos \theta) $$

    四元数方法:

    四元数介绍:

    $q=<w,x,y,z>=w + xi+yj+zk$ 或者 $q=s+\textbf{v}$
    $\bar{q}=s-\textbf{v}$
    $q_1q_2=s_1s_2-\textbf{$v_1$}\textbf{$v_2$}+s_1\textbf{$v_2$}+s_2\textbf{$v_1$}+\textbf{$v_1$}\textbf{$v_2$}$

    旋转相当于将原始的一个角经过一个函数变换,使之长度、角度、手相性不变。
    长度不变:$$length(F(P))=length(P)$$
    角度不变:$$F(P_1) \cdot F(P_2) = P_1 \cdot P_2$$
    手相性不变:$$F(P_1) \times F(P_2) = F (P_1 \times P_2)$$
    对于这样的F,我们有$F(P)=qPq^{-1}$,其中q为非零的四元数
    $\textbf{note:}$ 任意标量a,乘以q,得到的 aq 和 q 执行的是相同的旋转操作。
    最后结论:绕A轴进行旋转,相当于$$q=cos\frac{\theta}{2}+Asin\frac{\theta}{2}$$的上述函数运算。

    平移操作

    将点P从一个坐标系变换到另一个坐标系的表达式为:$$ P'=MP+T $$

    具体操作:

    $$F=
    \left{
    \begin{matrix}
    &M&T\
    &0&1
    \end{matrix}
    \right}
    $$
    将$P$扩充为$<P_x,P_y,P_z,1>$

    实际应用中:

    平移变换中,表示点的向量将会发生变化,但是表示方向的向量不变。
    所以在进行变化过程中,表示点的向量的$w$分量设为1,但是表示方向向量的$w$分量设置为0,则可以统一变化。

    $\textbf{note:$w$的几何意义——投影}$

    • $\bar{P}=<\frac{x}{w},\frac{y}{w},\frac{z}{w}>$表示P向量与$w=1$平面的交点。
    • 给四维向量P乘以任何比例系数,都对应三维空间的相同点。

    除了点之外的变换

    前面已经提到对于方向向量的平移该如何变换,旋转和缩放方向向量和普通点的变换类似。
    这里讲点的切向量和法向量的变换。

    切向量

    切向量可以通过两个顶点向量之间的差获得,因此可以用变换后的两个定点作差得到,在变换过程中,可以用相同矩阵进行变化。(如果是4维,应向方向向量一样扩充得到)

    法向量

    变换后的法向量常常指向一个与变换表面不垂直的方向。
    但是切向量和法向量内积的值是一定等于0的。已知初始切向量法向量,变换后的切向量,我们可以得到变换后的法向量。
    $N\cdot T=N'\cdot T'=(GN)\cdot (MT) =0$
    其中M是一般点的变换矩阵,G是我们需要求的法向量的变换矩阵。
    $N\cdot T=N^TT$
    $(GN)\cdot (MT)=(GN)T(MT)=NTG^TMT=0$
    所以只需要$GTM=I$即可,所以$G=(M{-1})^T$,如果M是正交矩阵,则$G=M$。

    相关文章

      网友评论

          本文标题:计算机图形学坐标变换

          本文链接:https://www.haomeiwen.com/subject/hvozjxtx.html