Loading

【GAMES101-现代计算机图形学入门-闫令琪】笔记 Lecture 02 Review of Linear Algebra

【GAMES101-现代计算机图形学入门-闫令琪】笔记 Lecture 02 Review of Linear Algebra

参考资料&原文链接

GAMES101-现代计算机图形学入门-闫令琪

线性代数概论

国内翻译为糙快猛- -。

image-20210912161925921

图形学需要的基础知识

image-20210912190414300

本节课目标

image-20210912190508153

向量

这节和3D数学里面的内容差不多,这节课的内容在本博客中也有,点击前往

判断向量的方向

现在给你一个向量a和向量b,如何判定b是在a的左边还是在a的右边?

image-20210912191145058

用向量叉乘。

将向量a和向量b叉乘:||a × b|| = ||a||||b||sinθ

即将向量a,b首尾相接(注意是将a的头与b的尾相接),用右手定则,四指方向是箭头方向,大拇指方向即是第三根轴c的方向。向上则叉乘结果为正,否则为负。

如何判定b是在a的左边还是在a的右边?

  • 若sinθ为正,则b在a的左边,c向上。
  • 若sinθ为负,则b在a的右边,c向上。

即:正左上,负右下。

判断点在三角形的内部和外部

现在有一个三角形和任意一点P,我想知道这个点P在三角形的里边还是外边,该如何判断?

image-20210912193217381

将三角形按逆时针连接起来,组成了三个向量:AB、BC和CA(当然你按顺时针连接起来也可以)。

这个判断与上面那个判断左和右的方法是一样的。只需要将每个向量(AB、BC、AC)与每个点和P连起来的向量(AP、BP、CP)叉乘一下判断下第三根轴的方向即可。

叉乘出来第三根轴的方向全部向上或者全部向下即可证明P在三角形内部。详细步骤如下:

  • 连接AP,用向量AB叉乘AP(注意先后顺序),用右手定则,第三根轴的方向是垂直于屏幕向内,证明AP在AB的左边,即点P在AB的左边。
  • 连接BP,用向量BC叉乘BP(注意先后顺序),用右手定则,第三根轴的方向是垂直于屏幕向内,证明BP在BP的左边,即点P在BC的左边。
  • 连接CP,用向量CA叉乘CP(注意先后顺序),用右手定则,第三根轴的方向是垂直于屏幕向内,证明CP在CA的左边,即点P在CA的左边。

每次叉乘结果第三根轴都垂直于屏幕向内,点P都在各个向量的左边,所以点P一定在三角形内部。

那如果P不在三角形内部呢?那么至少有一边叉乘出来的结果跟其余两边叉乘出来的结果相反。

例如:现在将点P移动到AC的右边:

再执行以上步骤:

  • 连接AP,用向量AB叉乘AP(注意先后顺序),用右手定则,第三根轴的方向是垂直于屏幕向内,证明AP在AB的左边,即点P在AB的左边。
  • 连接BP,用向量BC叉乘BP(注意先后顺序),用右手定则,第三根轴的方向是垂直于屏幕向内,证明BP在BP的左边,即点P在BC的左边。
  • 连接CP,用向量CA叉乘CP(注意先后顺序),用右手定则,第三根轴的方向是垂直于屏幕向外,证明CP在CA的右边,即点P在CA的右边。

所以点P一定在三角形外。

那如果得出的结果正好是0,则这种情况自己决定点P是在三角形ABC的外边还是里边,判定为在外边还是在里面由自己说了算,都可以。

这个方法在计算机图形学中有非常重要的位置,在光栅化的时候要用到,判断一个像素是在三角形内部还是在外部,以此来决定是否给这个三角形进行着色。

矩阵

这节和3D数学里面的内容差不多,这节课的内容在本博客中也有,点击这里这里打开笔记对照视频进行食用更佳。

本文标签

计算机图形学游戏开发GAMES101-现代计算机图形学入门-闫令琪Unreal Engine游戏开发基础视频系列笔记笔记

posted @ 2021-09-12 20:05  多思考多实践同等重要  阅读(107)  评论(0编辑  收藏  举报