通俗理解三维向量的点乘与叉乘

这篇具有很好参考价值的文章主要介绍了通俗理解三维向量的点乘与叉乘。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

通俗理解三维向量的点乘和叉乘

一般接触得比较多的是二维向量的点乘和叉乘,但是做到与三维几何相关的工作的时候,三维向量的知识是必不可少的。

注意:三维向量和三维矢量是同一个东西,都是来自英文单词的Vector的中文翻译,只是翻译不同而已。

解释三维向量

三维向量(x ,y ,z)比二维向量(x ,y)多一维,三维向量体现在空间上,二位向量体现在平面上。

三维向量点乘,光线追踪,图形学,图形渲染,线性代数
不管二维还是三维向量,都来自两个坐标点,如上图中的A、B两个点,三维向量来自两个空间坐标点。

通过两个坐标点相减才能得到,例如上图向量BA = A - B (由B出发指向A,向量具有方向性)。

那么如果只给出一个坐标点,不给出两个坐标点,怎么得到向量呢——其实就是一个从原点(0 , 0, 0)出发指向坐标点的一个向量,例如点P的坐标是(1 ,2, 3),那么向量OP就是(1, 2, 3),虽然从数值上是一模一样,但是含义上是有区别的,比如向量PO变成了(-1, -2, -3)。

实际上,不管多少维,本质都是向量,计算法则都是相通的。只是二维和三维向量可以具体化到平面和三维空间上去理解,更高的维度只能抽象地去计算了。


三维向量叉乘

以上都是中学的知识了,作为回顾理解。

要说三维向量的叉乘,就先说我们在什么应用场景会用到:

最常用最经典的用处之一就是计算法向量(在三维空间中垂直平面的向量就命名为法向量)。法向量在图形渲染和几何处理等方面都有重要的用途。

三维向量点乘,光线追踪,图形学,图形渲染,线性代数

就说最简单的,请看上图左,三维空间坐标系的原点O (0 ,0 ,0), X轴的向量是X (1, 0, 0),Y轴的向量是(0 , 1, 0)。向量OX和向量OY放一起看就像是两条边决定了一个平面,这个平面就是XOY平面,现在要求用向量OX和向量OY求出法向量是什么

这个问题我们一眼看出法向量就是(0 ,0 ,1)就是OZ。

那上图右呢? 知道两个红色的向量,怎么才能算出蓝色的那个法向量呢?

答案就是直接用两个向量做叉乘
法向量N = 向量OA X 向量OB

直接可以说两向量叉乘的结果就是法向量。

那么算出的结果为什么是朝上呢,不是朝下呢?

那就要知道叉乘其实就是右手法则,如下图(图片来自网络)
三维向量点乘,光线追踪,图形学,图形渲染,线性代数

右手握拳的方向就是左边叉乘右边的方向。

向量OX 叉乘 向量OY 得到向量OZ (0, 0, 1)就是朝上的。而向量OY 叉乘 向量OX 得到向量(0 ,0, -1)就是朝下的。

那么计算公式是就是:
法向量OC =
向量OA (x1, y1, z1) 叉乘 向量 OB (x2, y2, z2) =
( y1 * z2 - y2 *z1 , x2 * z1 - z2 * x1 , x1 * y2 - x2 * y1 )

**运算结果还是一个向量。**本质上就是一系列加法和乘法的组合,可以理解为我们将这一套计算命名为叉乘,用运算符号 X 表示。

其实这个公式来自于矩阵计算的展开,公式就是直接套就完事了。

注意:为了方便理解,上面举的例子都是两向量拥有同一个起点,如果两个向量是分开的,叉乘的结果同样是他们的法向量,直接套公式计算就行了。

一句话总结: 两向量叉乘的结果就是他们的法向量,遵循右手法则。


三维向量的点乘

同样先说我们在什么场景下会用到点乘:

我们有两个三维平面,想知道这两个平面的夹角是多少,从而就能大约知道两个平面的弯曲程度,我们想到的方法就是求出两个平面的法向量,再计算两个法向量之间的夹角。
三维向量点乘,光线追踪,图形学,图形渲染,线性代数

现在我们只用利用叉乘就能求出两个平面的法向量了,那接下来要怎么才能算出两个法向量的夹角呢?

答案是利用两个向量的点乘。

我们先来看看点乘长什么样:
法向量N1 (x1, y1, z1) · 法向量N2 (x2, y2, z2) =
x1 * x2 + y1* y2 + z1 * z2

运算结果是一个数值。 其实本质上又是一系列加法和乘法的组合嘛,可以理解为我们将这一套计算命名为点乘,用符号 · 表示。

那上面的计算也看不出夹角啊?

其实向量N1和向量N2点乘的结果也等于 |N1| * |N2| * cosθ 。其中|N1|是指向量N1的长度,|N2|是指向量N2的长度,cosθ中的角度θ正是两个向量的夹角。那么结果呼之欲出了:

x1 * x2 + y1* y2 + z1 * z2 = |N1| * |N2| * cosθ

未知数只有θ一个,交换一下运算顺序就是

θ = arccos( N1 · N2 / |N1| * |N2| )

点乘也就是一套公式,我们只要记住,利用这套公式,我们可以求出两个向量的夹角。

另外,我们再看看N1 · N2 = |N1| * |N2| * cosθ,似乎可以有更多的理解空间:(下图来源网络)

三维向量点乘,光线追踪,图形学,图形渲染,线性代数

cosθ是三角形的 邻边/斜边,那么把|N2| 想象成是一条三角形的斜边, |N2| * cosθ的计算结果,就是向量N2在向量N1上的投影长度。而|N1| * cosθ的计算结果,就是向量N1在向量N2上的投影长度,因为θ是他们两个向量的夹角。文章来源地址https://www.toymoban.com/news/detail-806924.html

到了这里,关于通俗理解三维向量的点乘与叉乘的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 向量的点乘、叉乘和混合积(三重积)

    设、、为三个向量,三重矢积公式 上述的两个公式也称为拉格朗日公式。  三重矢积的公式有三个特性: 1) 两个分项都带有三个向量( 、、); 2) 三重积一定是先做叉积的两向量之线性组合; 3) 中间的向量所带的系数一定为正(此处为向量)。 特别的: 逆交换律: 任意

    2024年02月11日
    浏览(32)
  • Unity中向量的点乘、叉乘区别和作用以及经典案例

    unity开发中我们要计算角度,判断位置,常用点乘、叉乘、归一化等等,我们看看他们的使用案例 点乘(Dot Product) 在Unity中的Vector3类提供了 Dot() 方法来计算两个向量的点乘。点乘的结果是一个标量值,可以用于判断两个向量的方向关系或者计算投影长度等。 叉乘(Cross P

    2024年04月28日
    浏览(39)
  • 【Unity每日一记】方位辨别—向量的叉乘点乘结合

    👨‍💻个人主页 :@元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏 : unity每日一记 ⭐【Unityc#专题篇】之c#系统化大礼包】 ⭐【unity数据持久化】数据管理类_PlayerPrfs ⭐【unity本站最全系列】unity常用API大全

    2024年02月12日
    浏览(31)
  • 【Unity每日一记】Unity中的方位辨别—向量的叉乘点乘结合

    👨‍💻个人主页 :@元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏 : unity每日一记 ⭐【Unityc#专题篇】之c#系统化大礼包】 ⭐【unity数据持久化】数据管理类_PlayerPrfs ⭐【unity本站最全系列】unity常用API大全

    2024年02月11日
    浏览(37)
  • 【理解线性代数】(四)从向量组点乘到矩阵相乘

    工业生产的发展趋势总是从单件生产到批量生产。科学技术研究也是一样,总是从简单计算到复合运算、批量运算。批量意味着生产能力、处理能力的提升。计算机从16位发展到64位,从单核发展到多核;计算机从CPU处理数据发展到GPU处理数据;大数据、人工智能领域的大模型

    2024年02月09日
    浏览(37)
  • 【数理知识】矩阵普通乘积,哈达玛积,克罗内克积,点乘,点积,叉乘,matlab代码实现

    序号 内容 1 【数理知识】向量数乘,内积,外积,matlab代码实现 2 【数理知识】矩阵普通乘积,哈达玛积,克罗内克积,点乘,点积,叉乘,matlab代码实现 首先介绍矩阵 在数学中,矩阵是一个按照长方阵列排列的复数或实数集合。由 m × n m times n m × n 个数 a i j a_{ij} a ij ​

    2024年02月04日
    浏览(72)
  • 线性代数的学习和整理22:矩阵的点乘(草稿)

    4  矩阵乘法 A,B两个同阶同秩N阵,看上去结构一样,但两厢相乘,在做在右,地位差别巨大。 在左,你就是基,是空间的根本,是坐标系,是往哪去、能到哪的定海神针,是如来佛手;在右,你就只是乾坤已定后数量的选择,你是翻十个跟头,还是翻十一个(都出不了如来佛

    2024年02月09日
    浏览(51)
  • MATLAB中如何实现n个矩阵的点乘或相加

      - 如果你的矩阵都是同样的大小,你可以将它们存储在一个三维数组中,然后使用sum函数沿着第三个维度求和。例如,如果你有三个2×2的矩阵A、B和C,你可以这样做:   ```markdown M = cat(3,A,B,C); % 将A、B、C沿着第三个维度拼接成一个2×2×3的数组 S = sum(M,3); % 沿着第三个维度求

    2024年02月06日
    浏览(34)
  • 矩阵与向量的运算:矩阵的加法、数乘与乘法

    作者:禅与计算机程序设计艺术 \\\"矩阵与向量的运算\\\"是机器学习领域的一个基础课。在实际应用中,许多算法都需要涉及到矩阵运算。理解并掌握这种运算对于解决复杂的问题和优化模型性能至关重要。本文将带您快速了解矩阵的概念,以及如何进行矩阵运算。 \\\"行列式\\\"是指

    2024年02月11日
    浏览(41)
  • 叉乘、向量积的计算以及推导

    几何图示: 设有 a = ( a x , a y , a z ) , b = ( b x , b y , b z ) mathbf{a}=left(a_{x}, a_{y}, a_{z}right), mathbf{b}=left(b_{x}, b_{y}, b_{z}right) a = ( a x ​ , a y ​ , a z ​ ) , b = ( b x ​ , b y ​ , b z ​ ) i , j , k 分别是 X , Y , Z 轴方向的单位向量,则: a × b = ( a y b z − a z b y ) i + ( a z b x − a

    2024年02月16日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包