2016-04-16 25 views
1

Die folgende Frage wurde gestellt und beantwortet:javascript Formel zur Berechnung des Vektors normalen

Given 2 points how do I draw a line at a right angle to the line formed by the two points?

Aber ich bin zu wollen, es in einer Javascript-Funktion verwenden und würde gerne wissen, wie Sie den Schritt abzuschließen, wo der Vektor ist normalisiert:

Der Einheitsvektor des Normalvektors wird durch Teilen jeder Komponente durch die Länge des Vektors angegeben.

Ich habe keine Erfahrung mit Vektormathematik, aber um den 'rno' Vektor zu erhalten, muss ich die Inverse des Vektors nehmen und sie mit der linken oder rechten Normalen multiplizieren - denke ich. Kann jemand mir helfen, zu verstehen, wie man dieses pls erreicht? Ich denke, ich muss alle Komponenten multiplizieren, aber bin am Ende eines langen Tages, und Mathe-Tutorials sehen alle wie Griechisch aus.

Vielen Dank im Voraus.

Antwort

2

Jeder Vektor wird durch Werte definiert, z. x und y. Die Länge des Vektors ist gegeben durch die Gleichung Länge = sqrt (x^2 + y^2). Der Betrieb der Erhaltungseinheit wird als Normalisierung bezeichnet. Wie Sie geschrieben haben, um den Vektor zu normalisieren, teilen wir jede Vektorkomponente durch die Länge.

Hier ist Beispiel der Implementierung in JavaScript:

Zunächst einmal müssen Sie Vektor irgendwie definieren. Wir werden ein neues Objekt namens Vector erstellen. Dann fügen wir eine Funktion hinzu, die die Länge und neue XY-Werte berechnet.

//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 lenght 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} 

Beachten Sie, dass nur eine der vielen möglichen Implementierungen ist.

EDIT: Sie können accually Ihr Objekt mit einer Länge Funktion erweitern:

Vector.prototype.length = function() { return Math.sqrt(this.x*this.x+this.y*this.y) } 

und überprüfen, ob unsere v1 Vektor richtig normalisiert wird:

v1.length(); 
//0.9999999999999999 
Verwandte Themen