图形学小记(一)

1.已知两个世界矩阵A,B,求A相对于B的矩阵

以2*2的矩阵为例,世界矩阵应用于顶点数据的运算过程如下

根据矩阵转换后的结果来求A相对于B的结果,很容易得出结论:

已知两个世界矩阵A,B,求A相对于B的矩阵,只需A-B

2.射线与球体的相交检测

参数化方程:设射线方程为f(x)= P +d ,圆方程为G(x)=||X-C||^{2}=R^{2},带人可得到一个二次线性方程组,利用二次线性方程组进行求解。

排除法:

  1. 检测射线起点是否在圆内。
  2. 检测射线的方向是否与到圆心的方向同向
  3. 计算射线的球心距,与半径进行对比

3.判断一个点是否在一个三角形内

  • 内角和为180°
  • 面积和相等
  • 同向法:按顺序检测点p与边向量的方向,最后查看符号是否相同

4.OBB碰撞检测

两个多边形在所有轴上的投影都发生重叠,则判定为碰撞;否则,没有发生碰撞。

5.下图那种方式效率更高

for(int i=0;i<3;i++){
    for(int j=0;j<3000;j++){
        cout<<i*j<<endl;
    }
}

for(int i=0;i<3000;i++){
    for(int j=0;j<3;j++){
        cout<<i*j<<endl;
    }
}

前者初始化了3次j,后者3000次

6.怎么光栅化一个三角形

转换为平底(和平顶)三角形

扫描线插值

猜你喜欢

转载自blog.csdn.net/qq_40946921/article/details/108689152