Skip to main content

点乘、叉乘

在Unity(以及许多其他3D图形和物理引擎中),向量是非常重要的概念。它们用于表示方向、速度、力等。以下是关于向量的点乘、叉乘以及归一化的意义:

  1. 点乘描述了两个向量的相似程度,结果越大两向量越相似,还可表示投影。
  2. 叉乘得到的向量垂直于原来的两个向量。
  3. 标准化向量:用在只关系方向,不关心大小的时候。

点乘(Dot Product)

在Unity中,你可以使用Vector3.Dot函数来计算两个向量的点乘。

点乘是两个向量之间的点积,其结果是一个标量(没有方向的数值)。对于两个向量A和B,它们的点乘定义为:

A · B = |A| * |B| * cos(θ)

其中,|A|和|B|是向量的模(长度),θ是它们之间的夹角。

点乘的意义主要有以下几点:

  • 判断两个向量的夹角:如果点乘结果为正,则夹角小于90度;如果为负,则夹角大于90度;如果为0,则夹角为90度。
  • 计算一个向量在另一个向量方向上的投影长度。
  • 在物理中,点乘常用于计算力在特定方向上的分量,或者判断两个物体之间的相对位置关系。

叉乘(Cross Product)

在Unity中,你可以使用Vector3.Cross函数来计算两个向量的叉乘。

叉乘是两个向量的叉积,其结果是一个新的向量,与原有两个向量都垂直。对于两个向量A和B,它们的叉乘定义为:

A × B = |A| * |B| * sin(θ) * n

其中,n是一个与A和B都垂直的单位向量,其方向由右手定则确定。

叉乘的意义主要有以下几点:

  • 生成一个与两个输入向量都垂直的新向量。
  • 在物理中,叉乘常用于计算旋转轴或扭矩。
  • 在图形学中,叉乘常用于计算表面的法线或确定三角形的朝向。

归一化**(Normalization)**

在Unity中,你可以使用Vector3.normalized属性来获取一个向量的归一化版本。

归一化是将一个向量转化为单位向量的过程。单位向量是一个模为1的向量,只表示方向,不表示长度。对于任意向量V,其归一化后的向量Vn定义为:

Vn = V / |V|

归一化的意义主要有以下几点:

  • 消除向量的长度信息,只保留方向信息。
  • 在比较两个向量的方向时,可以先将它们都归一化,然后比较它们的方向是否相同或接近。
  • 在物理和图形学中,归一化向量常用于表示方向或计算与方向相关的量(如光照、反射等)。