Math 规格化向量函数返回意外结果
我在理解向量规范化函数时遇到问题 我有一个向量归一化函数:Math 规格化向量函数返回意外结果,math,vector,normalization,Math,Vector,Normalization,我在理解向量规范化函数时遇到问题 我有一个向量归一化函数: function vectorNormalization(vector) { var magnitude = Math.sqrt((vector[0] * vector[0]) + (vector[1] * vector[1]) + (vector[2] * vector[2])); var x = vector[0] / magnitude; var y = vecto
function vectorNormalization(vector) {
var magnitude = Math.sqrt((vector[0] * vector[0]) + (vector[1] * vector[1]) +
(vector[2] * vector[2]));
var x = vector[0] / magnitude;
var y = vector[1] / magnitude;
var z = vector[2] / magnitude;
return [x, y, z];
}
这是两个矢量之间减少的结果(在3D软件中使用)
vector normalization函数返回以下内容:
[-0.025028054575754678,0.99963152765883,-0.010507397138519977]
Y值太高,它应该被规范化并表示一个单位,但它会导致更高的数字。单位应小于标准化前的值
正如你所看到的,我正在处理一个十进制精度的三维坐标系。该部门正在为此做出让步。我想我需要做一些事情来考虑十进制精度,但我不确定。答案是正确的。规格化将向量投影到单位球体上。原始向量的大小为0.191987547,小于1,因此归一化将导致大小增加。您可以通过计算得到的规范化向量的大小来验证这种情况,并查看其大小基本上为1.0
此外,您可以看到原始图像的Y分量比X或Z分量长得多,因此在归一化向量中非常接近1也就不足为奇了。有没有办法获得一个不会更高的单位。我试图在一个方向上设置对象的动画,直到对象2。使用此函数,对象将在循环中添加这些值的第一次迭代中通过y轴上的第二个对象,因此它不表示该范围内的较小单位,该单位是两个向量之间整个范围的子集。有没有一个函数可以给我一个单位,它的增量代表距离的一部分。我想你需要的不是向量标准化。在上述情况下,应用1/vec_mag的比例因子,其中vec_mag是向量的大小。可以对比例因子施加下限或其他约束。不过,最终你需要做的是定义你正在寻找的行为,然后定义一个算法,根据这个愿望计算比例因子。
[-0.025028054575754678,0.99963152765883,-0.010507397138519977]