二维向量是数学中的一个重要概念,通常用两个实数表示。一个二维向量可以写成 $$ \mathbf{v} = \begin{bmatrix} v_1 \ v_2 \end{bmatrix} $$,其中
二维向量可以用来表示平面上的点,其中
Rust程序定义
pub struct Vector2D {
pub x: f64,
pub y: f64,
}
数学中的向量加法和减法是按照分量进行的。假设有两个二维向量:
-
向量加法: $$\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 }
}
假设有两个二维向量:
它们的点积(内积)定义为:
点积的几何意义包括计算一个向量在另一个向量方向上的投影。
程序解如下
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}$$,它们的"叉积"可以通过以下公式表示:
在这个情况下,它的结果是一个标量而不是一个向量,这代表了两个向量所在平面的有向面积。这个值可以用来判断两个向量的相对方向(顺时针还是逆时针)和计算面积。
请注意,在二维空间中,叉积的应用相对有限,主要因为它返回一个标量而不是一个向量。在三维空间中,叉积更加常见,因为它返回垂直于原始两个向量所在平面的向量。
程序解如下
// 向量叉积
pub fn cross_product(self, other: Vector2D) -> f64 {
self.x * other.y - self.y * other.x
}