计算向量法线的javascript公式
提出并回答了以下问题: 但是,我想在javascript函数中使用它,并想知道如何完成向量归一化的步骤: 法向量的单位向量是通过将每个分量除以向量的长度得到的 我没有向量数学的经验,但是为了得到‘rno’向量,我必须取向量的倒数,然后乘以左法线或右法线——我想。有人能帮我理解如何实现这一点吗?我想我必须乘以所有的分量,但我已经结束了漫长的一天,数学教程看起来都像希腊语计算向量法线的javascript公式,javascript,math,vector,Javascript,Math,Vector,提出并回答了以下问题: 但是,我想在javascript函数中使用它,并想知道如何完成向量归一化的步骤: 法向量的单位向量是通过将每个分量除以向量的长度得到的 我没有向量数学的经验,但是为了得到‘rno’向量,我必须取向量的倒数,然后乘以左法线或右法线——我想。有人能帮我理解如何实现这一点吗?我想我必须乘以所有的分量,但我已经结束了漫长的一天,数学教程看起来都像希腊语 提前谢谢 每个向量都由to值定义,例如x和y。向量的长度由方程Length=sqrt(x^2+y^2)给出。获取单位顶点的操作
提前谢谢 每个向量都由to值定义,例如x和y。向量的长度由方程Length=sqrt(x^2+y^2)给出。获取单位顶点的操作称为归一化。正如您所写的,为了规范化向量,我们将每个向量分量除以长度 下面是JavaScript实现的示例: 首先,您需要以某种方式定义向量。我们将创建名为Vector的新对象。然后,我们将添加一个函数来计算长度和新的x,y值
//creating Vector object
var Vector = function(x,y) {
this.x = x;
this.y = y;
}
Vector.prototype.normalize = function() {
var length = Math.sqrt(this.x*this.x+this.y*this.y); //calculating length
this.x = this.x/length; //assigning new value to x (dividing x by length of the vector)
this.y= this.y/length; //assigning new value to y
}
var v1 = new Vector(2,4) //creating new instance of Vector object
v1 // Vector {x: 2, y: 4}
v1.normalize() // normalizing our newly created instance
v1 //Vector {x: 0.4472135954999579, y: 0.8944271909999159}
请注意,这只是许多可能的实现之一
编辑:
您可以使用“长度”功能精确扩展对象:
Vector.prototype.length = function() { return Math.sqrt(this.x*this.x+this.y*this.y) }
并检查我们的v1向量是否正确规格化:
v1.length();
//0.9999999999999999