在很多情况下,我们只关心向量的方向儿不关心其大小,比如,在计算关照模型时,我们往往需要得到顶点的法线方向和光源方向,此时我们不关心这些向量有多长。在这些情况下,我们就需要计算标准化向量
标准化向量指的是那些长度为1的向量,标准化向量也被称为归一化的向量或者单位向量。
公式解析:
1.求一个向量的标准化向量,本质是让这个向量与自身的模相除;
2.向量与一个数值相除,本质是向量与一个标量相除;
代码实现:
/// <summary>
/// 标准化向量.
/// </summary>
public Vector3 normalized
{
get
{
float temp = magnitude;//先计算得到向量的模.
//自身向量的各分量除以自身向量的模.
float X = this.x / temp;
float Y = this.y / temp;
float Z = this.z / temp;
return new Vector3(X, Y, Z);//最终返回一个新的向量.
}
}
注意:零向量是不可以被归一化的,这是因为做除法运算时分母不能为0