用矩阵来运算向量与点的平移

用4*4的矩阵来描述向量与点:

  1.为什么要用4*4的矩阵,而不是3*3的矩阵呢?

    因为在3D世界中,描述一个点至少需要3个维度,如果使用3个维度来描述向量或者点,

    那么点与向量就没法区别对待,但是点平移与向量平移是不同的,点平移要改变,向量

    平移不变,所以,需要扩展为4*4的。

  2.如果使用4*4的矩阵来描述一个点 or向量:

    点A = [x,y,z,w],向量B = [a,b,c,w]

    由以前的篇幅可知,一个矩阵乘以单位矩阵结果不变,那么我们用单位矩阵C来乘以 A /B.

    [x,y,z,w] *[1,0,0,0 ]   x*1+y*0+z*0+w*0 =x

          0,1,0,0    x*0+y*1+z*0+w*0 =y

          0,0,1,0    x*0+y*0+z*1+w*0 =z

          0,0,0,1    x*0+y*0+z*0+w*1 =w

    同时,将点A移动一段距离,假设移动向量N = [α,β,γ,δ],根据以前知识可知,结果为两个向量

    相加,A+N =[x+α,y+β,z+γ,w+1]

    那么乘以这样的向量N'

     [x,y,z,w] *[1,0,0,0 ]   x*1+y*0+z*0+w*α =x+w*α

          0,1,0,0    x*0+y*1+z*0+w*β =y+w*β

          0,0,1,0    x*0+y*0+z*1+w*γ =z+w*γ

          α,β,γ,1    x*0+y*0+z*0+w*1 =w

    从此次可知,只要w =0,那么位移一段距离也不会改变A,如果w =1,那么就会改变位置,所以可以描述

    向量。

posted @ 2018-01-28 17:03  gameDesigner  阅读(588)  评论(0编辑  收藏  举报