计算向量法线的javascript公式

计算向量法线的javascript公式,javascript,math,vector,Javascript,Math,Vector,提出并回答了以下问题: 但是,我想在javascript函数中使用它,并想知道如何完成向量归一化的步骤: 法向量的单位向量是通过将每个分量除以向量的长度得到的 我没有向量数学的经验,但是为了得到‘rno’向量,我必须取向量的倒数,然后乘以左法线或右法线——我想。有人能帮我理解如何实现这一点吗?我想我必须乘以所有的分量,但我已经结束了漫长的一天,数学教程看起来都像希腊语 提前谢谢 每个向量都由to值定义,例如x和y。向量的长度由方程Length=sqrt(x^2+y^2)给出。获取单位顶点的操作

提出并回答了以下问题:

但是,我想在javascript函数中使用它,并想知道如何完成向量归一化的步骤:

法向量的单位向量是通过将每个分量除以向量的长度得到的

我没有向量数学的经验,但是为了得到‘rno’向量,我必须取向量的倒数,然后乘以左法线或右法线——我想。有人能帮我理解如何实现这一点吗?我想我必须乘以所有的分量,但我已经结束了漫长的一天,数学教程看起来都像希腊语


提前谢谢

每个向量都由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