首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【愚公系列】2023年08月 3D数学-叉积

【愚公系列】2023年08月 3D数学-叉积

作者头像
愚公搬代码
发布2025-05-28 17:28:14
发布2025-05-28 17:28:14
3600
举报
文章被收录于专栏:历史专栏历史专栏

前言

叉积,也称向量积或叉乘,是两个三维向量之间的一种运算,表示为

\vec{a} \times \vec{b}

,结果是另一个向量,垂直于

\vec{a}

\vec{b}

所在的平面,方向由右手定则确定。叉积的计算公式为:

\vec{a} \times \vec{b} = \begin{bmatrix} a_1 \\ a_2 \\ a_3 \end{bmatrix} \times \begin{bmatrix} b_1 \\ b_2 \\ b_3 \end{bmatrix} = \begin{bmatrix} a_2 b_3 - a_3 b_2 \\ a_3 b_1 - a_1 b_3 \\ a_1 b_2 - a_2 b_1 \end{bmatrix}

其中,

a_1,a_2,a_3

b_1,b_2,b_3

分别是

\vec{a}

\vec{b}

的三个分量。叉积的模长等于两个向量构成的平行四边形的面积,即

|\vec{a} \times \vec{b}| = |\vec{a}||\vec{b}|\sin\theta

,其中

\theta

\vec{a}

\vec{b}

之间的夹角。

一、叉积

1.推导过程

叉积是向量运算中的一种,也称为向量积或叉乘,它的结果是一个向量。它的计算公式如下:

\vec{c} = \vec{a} \times \vec{b} = |\vec{a}||\vec{b}|\sin\theta\hat{n}

其中,

\theta

\vec{a}

\vec{b}

之间的夹角,

\hat{n}

是一个法向量,其大小为1且与

\vec{a}

\vec{b}

确定的平面垂直。

叉积的推导过程如下:

  1. 首先,我们需要明确叉积的定义和性质:

定义:

\vec{a} \times \vec{b}

是一个向量,其大小为

|\vec{a}||\vec{b}|\sin\theta

,方向垂直于

\vec{a}

\vec{b}

所确定的平面,并按右手定则指向该平面内部。

性质:叉积满足分配律、反交换律和结合律。叉积还满足线性运算,即

\vec{a} \times (k\vec{b}) = k(\vec{a} \times \vec{b})

  1. 我们可以通过向量的坐标来推导叉积的计算公式。

\vec{a} = (a_{1}, a_{2}, a_{3})

\vec{b} = (b_{1}, b_{2}, b_{3})

,则向量

\vec{a} \times \vec{b}

的坐标可以表示为:

\vec{a} \times \vec{b} = \begin{vmatrix} \hat{i} & \hat{j} & \hat{k} \ a_{1} & a_{2} & a_{3} \ b_{1} & b_{2} & b_{3} \end{vmatrix}

其中,

\hat{i}

\hat{j}

\hat{k}

分别表示

x

y

z

轴的单位向量。

\begin{vmatrix} \hat{i} & \hat{j} & \hat{k} \\ a_{1} & a_{2} & a_{3} \\ b_{1} & b_{2} & b_{3} \end{vmatrix}

表示一个行列式,我们可以通过展开这个行列式来得到叉积的计算公式。

  1. 展开行列式,得到:
\begin{vmatrix} \hat{i} & \hat{j} & \hat{k} \\ a_{1} & a_{2} & a_{3} \\ b_{1} & b_{2} & b_{3} \end{vmatrix} = (\hat{j}a_{3}b_{1} - \hat{j}a_{2}b_{3}) + (-\hat{i}a_{3}b_{1} + \hat{i}a_{1}b_{3}) + (\hat{k}a_{2}b_{1} - \hat{k}a_{1}b_{2})
  1. 化简上式,得到:
\vec{a} \times \vec{b} = (a_{2}b_{3} - a_{3}b_{2})\hat{i} + (a_{3}b_{1} - a_{1}b_{3})\hat{j} + (a_{1}b_{2} - a_{2}b_{1})\hat{k}

这就是叉积的计算公式。

综上所述,叉积的推导过程是通过向量的坐标来展开行列式,然后化简得到叉积的计算公式。

2.应用场景

叉积在物理学、工程学、数学、计算机科学等领域都有广泛的应用,以下是一些常见的应用场景:

  1. 物理学中的力矩:叉积可用来计算物体所受力矩的大小和方向。
  2. 电磁学中的磁场:叉积可用于计算磁场强度和磁场线的方向。
  3. 三维图形学中的向量旋转:叉积可用于计算向量绕轴旋转后的新向量。
  4. 机器人学中的机械臂运动:叉积可用于描述机械臂的运动和姿态。
  5. 计算机图形学中的光线追踪:叉积可用于计算光线与物体表面的交点及反射光线的方向。
  6. 工程学中的力学分析:叉积可用于计算扭矩、剪力和弯曲力等。
  7. 导航学中的航向角度计算:叉积可用于计算航向角度,用于导航和飞行控制中。

3.案例

以下是几个叉积相关的案例:

  1. 计算力矩:假设一根长度为2m的棍子,重量为10N,放置在平衡位置上。现在在棍子的一个端点施加一个力为20N的力,垂直于棍子,求这个力对于棍子的力矩。根据力矩公式,力矩等于施力点到旋转中心的距离乘以力的大小,因此可以使用叉积来计算。将棍子的长度向量记为a,施力点到旋转中心的向量记为b,力的向量记为F,则力矩M等于a×F·b。将向量化为数字,可以计算出力矩为40N·m。
  2. 计算平面的法向量:假设一个平面由三个点组成,分别是(1,2,3)、(4,5,6)和(7,8,9)。首先需要计算两个向量,分别是从第一个点到第二个点的向量和从第一个点到第三个点的向量。这两个向量的叉积就是平面的法向量。使用向量叉积公式,可以计算出 (4-1, 5-2, 6-3) × (7-1, 8-2, 9-3) = (3,3,3),因此该平面的法向量为(3,3,3)。
  3. 计算旋转后的向量:假设有一个向量v(1,0,0),需要将其绕z轴旋转45度。可以使用叉积来计算旋转后的向量。将z轴的单位向量记为k,向量v在xy平面上的投影记为v’,则旋转后的向量可以表示为 v’·cos(45) + (k×v’)·sin(45)。计算v’可以将向量v的z分量设为0,因此v’为 (cos(45), sin(45), 0)。将其代入公式计算,可以得到旋转后的向量为 (cos(45), sin(45), 0)×(1,0,0)·sin(45) + (cos(45), sin(45), 0)·(1,0,0)·cos(45) = (sqrt(2)/2, sqrt(2)/2, 0)。

二、叉积函数封装

以下是叉积函数的封装代码:

代码语言:javascript
复制
def cross_product(vector1, vector2):
    """
    计算两个三维向量的叉积
    :param vector1: 三维向量,格式为[x1, y1, z1]
    :param vector2: 三维向量,格式为[x2, y2, z2]
    :return: 返回叉积结果,格式为[x, y, z]
    """
    x = vector1[1] * vector2[2] - vector1[2] * vector2[1]
    y = vector1[2] * vector2[0] - vector1[0] * vector2[2]
    z = vector1[0] * vector2[1] - vector1[1] * vector2[0]
    return [x, y, z]

叉积函数的使用方法如下:

代码语言:javascript
复制
vector1 = [1, 2, 3]
vector2 = [4, 5, 6]
cross_product_result = cross_product(vector1, vector2)
print(cross_product_result)  # 输出结果为:[-3, 6, -3]
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-08-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 一、叉积
    • 1.推导过程
    • 2.应用场景
    • 3.案例
  • 二、叉积函数封装
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档