二维向量是数学中的一个重要概念,通常用两个实数表示。一个二维向量可以写成 \(\mathbf{v} = \begin{bmatrix} v_1 \\ v_2 \end{bmatrix}\),其中 \(v_1\) 和 \(v_2\) 是实数,分别表示向量在 x 轴和 y 轴上的分量。
二维向量可以用来表示平面上的点,其中 \(v_1\) 表示 x 坐标,\(v_2\) 表示 y 坐标。这样,一个点的位置可以由一个二维向量来描述。
Rust程序定义
pub struct Vector2D {
pub x: f64,
pub y: f64,
}
数学中的向量加法和减法是按照分量进行的。假设有两个二维向量:
\(\mathbf{v} = \begin{bmatrix} v_1 \\ v_2 \end{bmatrix}\) 和 \(\mathbf{u} = \begin{bmatrix} u_1 \\ u_2 \end{bmatrix}\)
向量加法: \(\mathbf{v} + \mathbf{u} = \begin{bmatrix} v_1 + u_1 \\ v_2 + u_2 \end{bmatrix}\)
这表示将两个向量的对应分量相加,得到一个新的向量。
向量减法: \(\mathbf{v} - \mathbf{u} = \begin{bmatrix} v_1 - u_1 \\ v_2 - u_2 \end{bmatrix}\)
程序解如下
// 向量加法
pub fn add(self, other: Vector2D) -> Vector2D {
Vector2D { x: self.x + other.x, y: self.y + other.y }
}
// 向量减法
pub fn subtract(self, other: Vector2D) -> Vector2D {
Vector2D { x: self.x - other.x, y: self.y - other.y }
}
假设有两个二维向量:
\(\mathbf{v} = \begin{bmatrix} v_1 \\ v_2 \end{bmatrix}\) 和 \(\mathbf{u} = \begin{bmatrix} u_1 \\ u_2 \end{bmatrix}\)
它们的点积(内积)定义为:
\[\mathbf{v} \cdot \mathbf{u} = v_1 \cdot u_1 + v_2 \cdot u_2\]点积的几何意义包括计算一个向量在另一个向量方向上的投影。
程序解如下
pub fn dot_product(self, other: Vector2D) -> f64 {
self.x * other.x + self.y * other.y
}
在二维空间中,叉积并没有直接的定义,因为它主要用于三维向量。对于二维向量 \(\mathbf{v} = \begin{bmatrix} v_1 \\ v_2 \end{bmatrix}\) 和 \(\mathbf{u} = \begin{bmatrix} u_1 \\ u_2 \end{bmatrix}\),它们的”叉积”可以通过以下公式表示:
\[\mathbf{v} \times \mathbf{u} = v_1 \cdot u_2 - v_2 \cdot u_1\]在这个情况下,它的结果是一个标量而不是一个向量,这代表了两个向量所在平面的有向面积。这个值可以用来判断两个向量的相对方向(顺时针还是逆时针)和计算面积。
请注意,在二维空间中,叉积的应用相对有限,主要因为它返回一个标量而不是一个向量。在三维空间中,叉积更加常见,因为它返回垂直于原始两个向量所在平面的向量。
程序解如下
// 向量叉积
pub fn cross_product(self, other: Vector2D) -> f64 {
self.x * other.y - self.y * other.x
}