3D初等数学

来源:互联网 发布:然则朱文公何以知然 编辑:程序博客网 时间:2024/04/27 14:05
1.点乘:
两向量相乘后可得一值,单位向量点乘相当于COS角.
用途:求光照(N.L),平面方程(P.N+D=0),背面消除
(V.N<0,也就是>90度,即背面),投影等等.
 
2.叉乘:
即两向量叉乘得出另一向量.
用途:一般用来求法线,坐标的第3轴等
 
3.平面方程:
ax+by+cz+d=0,也就是P.N+D=0;
用途:=0,表示点p在平面上,>0在平面内,<0在平面外.
 
4.投影:
点点乘单位向量即得点在此向量上的投影值(标量)
用途:投影,坐标在不同坐标系下转换(如下)等等
                
5.矩阵:
即行列式,在游戏中一般用来记录新坐标系下的各轴向以及负位置(
偏移值).一个点乘上一个矩阵,相当于点乘各轴并加上偏移值.
 
6.空间转换:
一个点在各不同空间中的转换其实就是点转换到各不同坐标系下,
我们先把新坐标系移到原点,然后只需将点点乘新坐标系各轴向,即求得在其坐标轴上的各分量投影值.
然后再将新坐标系移回,即再减去新坐标系的位置.就可得出此点在新坐标系下的坐标.
用途:obj space to world space to view space to project space等等.
 
7.视矩阵:
 只需求出U, V, N各轴向以及相机位置即可,其中V可暂定为朝上,N即视线方向,
而U则由V叉乘N得来.这样视矩阵中各轴向为U,V,N.而偏移为负的相机位置.
当一个点要由世界坐标变换到视坐标系下,只需将点乘上该视矩阵.反之,要将一个
点由视坐标系变换到世界坐标系,只需将点乘上该视矩阵的逆,即 M*M的逆=1, 其它
空间的变换对于正逆矩阵的操作也同理.
 
8.物体朝向旋转:
只需朝向目标的向量作为z轴,再分别求出其它各轴得到一偏移值为0新坐标系,然后
对其转置(transpose),最后物体位置点乘上此新坐标系即可.
用途:如billboard,lookat等.
 
 
9. 射线与平面交点距离:
    例: 照相机观察方向到与平面相交点距离,
 设X为所求,D为照相机到平面垂直距离(D = camera.xyz dot plane's normal + d)
    N为平面法线, V为观察方向(即camera.z),那么
    V * X = 从照相机位置出发的观察方向的向量,长度为此方向上与平面相交点的距离.
    (V  * X) dot N = 观察方向上到平面相交点的向量在法线上的投影(即D)
    于是,(V*X) dot N = -D,
    交换一下:
    X = -D/(V dot N)
                  |  
                  |  
                  |  /  V
                  |    /
                  |___/ N
                  |  D
                  |
                plane
     用途:碰撞检测等

10. 反射线:
  如:
    反射光线: R = 2(N.L)N-L 
    反射视线: R = 2(N.V)N-V
   
    原理:
       L    N    R
        /   |   /^
         /  |  / |
          / | /  |
           /|/   |
---------/-------------
         O /   |M
              /  |
               / |
                /|
                  T
   OR = OT+TR = -L + TR = -L + (TM+MR) = -L + 2(MR) = -L + 2(N.L*N) = 2(N.L)N-L

用途:
反射光照: (V.R)的平方,(一般取经验模型: V.R = N.H, 其中H=(L.V)/2)),
环境纹理映射 (一般环境纹理映射方式可用反射/法线/质心朝向)
等等
 ======================================================
有不懂的自己查资料,我不能面面具到啊!!
 
原创粉丝点击