高中几何:平面几何与向量

向量的代数运算、几何投影(点积)与有向面积(叉积)的直观演示

📖 几何与计算几何基础:向量的威力

在信息学竞赛(特别是计算几何)中,向量 (Vector) 是最基本的研究对象。利用向量的代数运算,我们可以避开三角函数,通过单纯的乘加运算高效判断点线关系、多边形面积和线段交点。

📐 向量点积 (Dot Product) —— 投影与夹角

对于二维向量 $\vec{u} = (u_x, u_y)$ 和 $\vec{v} = (v_x, v_y)$,其点积定义为:

$\vec{u} \cdot \vec{v} = u_x v_x + u_y v_y = |\vec{u}| |\vec{v}| \cos\theta$

几何意义:$\vec{u}$ 在 $\vec{v}$ 方向上的投影长度乘以 $\vec{v}$ 的模长。

  • $\vec{u} \cdot \vec{v} > 0$:夹角 $\theta$ 为锐角 ($< 90^\circ$)。
  • $\vec{u} \cdot \vec{v} = 0$:夹角 $\theta = 90^\circ$,即两向量垂直。
  • $\vec{u} \cdot \vec{v} < 0$:夹角 $\theta$ 为钝角 ($> 90^\circ$)。

📐 向量叉积 (Cross Product) —— 面积与旋转方向

对于二维向量 $\vec{u}$ 和 $\vec{v}$,其叉积(标量形式)定义为:

$\vec{u} \times \vec{v} = u_x v_y - u_y v_x = |\vec{u}| |\vec{v}| \sin\theta$

几何意义:两向量围成的平行四边形的有向面积。

  • $\vec{u} \times \vec{v} > 0$:$\vec{v}$ 在 $\vec{u}$ 的逆时针方向(左侧)。
  • $\vec{u} \times \vec{v} = 0$:两向量共线。
  • $\vec{u} \times \vec{v} < 0$:$\vec{v}$ 在 $\vec{u}$ 的顺时针方向(右侧)。
操作提示: 可以直接在下方绘图区中鼠标拖动蓝色箭头端点 $\vec{u}$ 和紫色箭头端点 $\vec{v}$。
用鼠标拖动向量的箭头端点,观察右侧的监测变量和下方的 C++ 代码。
向量 u & v u=(4,2), v=(2,5)
点积 u · v 18.00
夹角 θ 48.37°
叉积 u × v (有向面积) 16.00
📐 二维向量交互空间
向量 u
向量 v
平行四边形(面积)
投影向量
struct Point { double x, y; };
typedef Point Vector;
Vector operator - (Point A, Point B) { return {A.x - B.x, A.y - B.y}; }

// 向量点积
double Dot(Vector u, Vector v) {
    return u.x * v.x + u.y * v.y;
}

// 向量叉积
double Cross(Vector u, Vector v) {
    return u.x * v.y - u.y * v.x;
}

// 利用叉积计算三角形面积 (S = |u × v| / 2)
double Area2(Point A, Point B, Point C) {
    return Cross(B - A, C - A);
}
📋 几何运算历史步骤