Shader学习过程11——3D数学基础

3D数学基础:坐标系
坐标系: 1.模型坐标系
2.世界坐标系
3.摄像机坐标系
4.屏幕坐标系


从模型到屏幕需要3个变换
1.模型到世界
2.世界到摄像机
3.摄像机到屏幕
3个变换的综合变换 称之为 MVP


向量:
1.向量
  向量既有大小也有方向,没有位置的概念,大小就是向量的长度。一般从远点算起。
  标量 只有大小 没有方向。
  向量有 2D向量:(x,y)     
             3D向量: (x,y,z)
             4D向量: (x,y,z,w)
2.向量的运算
  向量的加法:v1 = (x1,y1)
                      v2 = (x2,y2)
                      v3 = v1+v2=(x1+x2,y1+y2)


  向量的减法:     v3 = v2-v1 =(x2-x1,y2-y1)  得到 v1指向v2的向量


  向量和标量乘法: v = (x,y,z)
                              d = 2
                              R = v*d = (2x,2y,2z)   得到的向量方向跟v相同 长度是v的d倍


  向量的规范化:就是向量的每个分量 / 向量的长度(模长)
  已知向量的分量 求向量的长度  v = (x,y)
                               d = x的平方+ y的平方 再开平方




3.向量的点积


  2D向量
  v1 = (x1,y1)
  v2 = (x2,y2)  
  dot(v1,v2) = v1*v2  = (x1*y1+x2*y2) =d
  3D向量道理相同 无非就是多了个z分量 继续加一起就好
  得到的是一个标量值
  dot(v1,v2) =v1 * v2 = ||v1||*||v2||*cos(a)   v1的长度*v2的长度*夹角的余玄值 
  当v1 和 v2 都是规范化向量的时候 
  dot(v1,v2) = cos(a)                  就直接等于夹角的余玄值
  如果 dot(v1,v2) = 0.5
  那么 cos(a) = 0.5
          a = acos(0.5)
          a  = 60度


  如果 dot(v1,v2)= 1
  那么 a = acos(1)
          a = 0度
 几何意义: 两个向量的夹角越小 得到的值越大 夹角越大 得到的值越小


4.向量的叉积
  v1 =(1,0,0)
  v2 =(0,1,0)
  
  几何意义:得出垂直于v1与v2形成的平面的向量 顺序不一样 会得到的不同的向量 虽然都是垂直
            但是方向会相反

矩阵


1.矩阵维度和记法


  3x2矩阵          3x3矩阵

2.矩阵的转置

 就是把矩阵的行变为列
 为什么要转置?目的是什么? 早知道就没那么多疑问了,因为好奇,去查了一下,本来就一个问题不懂,
突然变成几十个问题,瞬间心情不好了。。。。
  
向量也可以当作矩阵来用 也可以转置 平时说的行向量 列向量  是用矩阵的概念在描述向量


3.矩阵和标量的乘法

4.矩阵和矩阵的乘法
 
  第一行*第一列   第一行*第二列 第一行*第三列
  第二行*第一列   第二行*第二列 第二行*第三列
  第三行*第一列   第三行*第二列 第三行*第三列


  矩阵与矩阵的乘法是有顺序的 如果换下顺序 结果是不一样的
  矩阵与矩阵的乘法 第一个矩阵的行的元素个数需要跟第二个矩阵的列的元素个数相同 不然是不能相乘的
  
 mul乘法函数
 mul(m,v) m矩阵 v向量
 mul(v,m)
 虽然矩阵乘法有顺序 但是这个函数是可以调换位置 结果相同


5.单位矩阵

  特点:单位矩阵乘以任何矩阵或者任何向量  不会改变这个矩阵与向量




矩阵和变换
 1.2D旋转矩阵
   绕坐标中心旋转a角度
   
    a不是角度  而是0-2pi的范围  是弧度 想旋转角度 需要由度数跟弧度之间的转换
    2Pi = 360度  


2.2D缩放矩阵

   沿坐标轴缩放   沿任意N轴缩放

   

 Nx指那个N向量的一个分量 K为缩放因子

 3. 2D平移(3x3)
     
 4.3D平移(4x4矩阵)
     
 4.3D旋转矩阵
               x                                  y                                 z
     

 5.3D旋转+平移
     
 6.3D缩放矩阵
     


 7.透视投影矩阵

    

 d是屏幕到相机的距离  z是相机到物体的距离
   真正投影到屏幕上的 只有x y
   需要做的是透视的   用 x y 除以第四个分量z/d 舍弃z值
           如果平行的 用 x y  不需要除
 8.变换的种类
     旋转  缩放  平移  镜像  切变
     投影(平行投影) 投影(透视投影)
     可逆  等角 正交 刚体
     线性变换  仿射变换

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值