「Unity游戏开发」向量在游戏开发中的应用(二)

上一篇博客中讲了利用向量方向的性质来解决问题。这篇博客将继续用一个简单的小例子来讲解如何将向量的点乘性质应用到实际的游戏开发中。

向量点乘的几何定义

设二维空间内有两个向量UV,它们的夹角为θ([0, π]),则内积定义为以下实数:
向量点乘的公式:U·V = **|U||V|**cosθ
根据该公式可以退到下面五条结论:

  1. U·V > 0,表示向量UV之间的夹角小于90度(锐角)
  2. U·V < 0,表示向量UV之间的夹角大于90度(钝角)
  3. U·V = 0,表示向量UV之间的夹角为90度(相互垂直)
  4. U·V = 1,表示向量UV的方向相同
  5. U·V = -1,表示向量UV的方向相反

关于向量点乘的其他定义、规律以及应用有兴趣的朋友可以参考百度百科,这里就不再啰嗦了。本篇博客主要讲如何将以上五条结论应用到游戏开发中。

向量点乘的应用情景

  1. 根据向量点乘公式求两个向量的夹角大小。
  2. 根据结论1和2判断两个向量的夹角,可以用来限定两个向量的夹角。
  3. 根据结论3判断两个向量是否垂直。
  4. 根据结论4和5可以判断方位。可判断一个物体位于另一个物体的前面还是后面(或者左边还是右边)。

向量点乘如何判断一个物体在另一个物体的的前面还是后面呢?在「3D数学基础:图形与游戏开发」这本书中对这点做了很好的解释。下面贴出书中原话:
向量点乘

既然能判断前面还是后面,当然也能判断左边还是右边了,只是选择的方向向量不同而已,这里留给读者自己思考。


同系列文章

「Unity游戏开发」向量在游戏开发中的应用(一)

「Unity游戏开发」向量在游戏开发中的应用(二)

「Unity游戏开发」向量在游戏开发中的应用(三)