0
我想讓這避免了開方功能的反射算法,這就是我想出了:這個反射算法爲什麼不起作用?
Vector3D.prototype.reflectOver = function(vectorToReflectOver){ //return a reflected vector
var t = (vectorToReflectOver.dot(vectorToReflectOver))/(this.dot(vectorToReflectOver));
var reflectedVector = vectorToReflectOver.multiply(2).subtract(this.multiply(t));
return reflectedVector;
}
其背後的原因是,如果我們想反映在另一個載體V_2向量V_1,我們想找到一個向量V_3,使得V_2 + V_3是反射向量。首先,我們必須找到向量t * V_1,使得t * V_1 - V_2 = V_3。這是函數中的t。有任何想法嗎?
爲了清楚起見,點函數指的是一個點積,乘以一個標量與一個矢量,減去兩個矢量。函數被調用如下,v.reflectOver(n),其中v和n是兩個向量。此外,這不會引發錯誤。這是性能錯誤,不是編譯器或運行時錯誤。