题目:在三维坐标系中,任一射线AB,与一三角形abc,判断射线是否穿过三角形.
应用:在三维建模软件和三维游戏中,选取屏幕上一个基本几何图形或物体是其基本功能之一.同时游戏需要算法有非常高的效率,但不需要有极高的精确程度.
原理:以射线AB为三维坐标系的OX轴,过滤掉三角形所有点坐标都在负半轴的情况,则转化为一个在YOZ二维坐标中三角形abc是否包含原点的问题,若o在abc中,则三角形oab,obc,oca的面积与abc面积相等,否则大于abc的面积.
实现:
1.已知射线AB,求以A为原点,AB方向为X轴的坐标系O'X'Y'Z'的变换矩阵;
2.将三角形三个顶点坐标转化到新的坐标系中;
3.若三角形三个顶点坐标的X值均小于零,则认为射线不经过三角形(注意,此处简略了一些射线不经过三角形但不影响视觉效果的情况);
4.在Y'O'Z'中求原点到三角形各顶点的距离;<