点乘、叉乘
在Unity(以及许多其他3D图形和物理引擎中),向量是非常重要的概念。它们用于表示方向、速度、力等。以下是关于向量的点乘、叉乘以及归一化的意义:
- 点乘描述了两个向量的相似程度,结果越大两向量越相似,还可表示投影。
- 叉乘得到的向量垂直于原来的两个向量。
- 标准化向量:用在只关系方向,不关心大小的时候。
点乘(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|
归一化的意义主要有以下几点:
- 消除向量的长度信息,只保留方向信息。
- 在比较两个向量的方向时,可以先将它们都归一化,然后比较它们的方向是否相同或接近。
- 在物理和图形学中,归一化向量常用于表示方向或计算与方向相关的量(如光照、反射等)。