C++语言程序设计

要计算向量P0P1和P1P2之间的夹角，首先要确定它们的旋向，即是逆时针，还是顺时针。
令：
若P0 -> P1 -> P2为逆时针方向，则 ；若P0 -> P1 -> P2为顺时针方向，则 ；若P0 -> P1 -> P2共线，则 。
当P0、P1、P2共线时：若P0在P2、P1之间，如下图（a），取顺时针方向；若P2在P0、P1之间，如下图（b），使函数值返回零；若P1在P0、P2之间，如下图（c），取逆时针方向。

| 图6-13 夹角之和检验法
| (a) | (b) | (c)

2、计算向量之间的夹角。
知道了向量的旋向之后，就能确定它们之间夹角的正负。那么如何计算两向量夹角的大小呢？对于向量 、 ，设 ，，则有关系式：
我们可以用前一个公式计算两个向量 、 之间的夹角，主要是考虑到反余弦的值域为0~π，反正弦的值域为-π/2~π/2，而待求的向量之间的夹角很可能是一个钝角。所以，用向量的点积计算向量的夹角，而用向量的叉积判断夹角的方向。