2016-04-16 7 views
1

を計算するためのjavascript式:次の質問を頼まと答えたベクトル通常

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

しかし、私はjavascript関数でそれを使用したいのです、どこのステップを完了する方法を知りたいですベクトルは正規化される:

法線ベクトルの単位ベクトルは、各成分をベクトルの長さで割ることによって与えられる。

私はベクトル数学の経験はありませんが、 'rno'ベクトルを得るためには、ベクトルの逆数をとり、それを左または右の法線で掛ける必要があります。誰も私がこのplsを達成する方法を理解するのを助けることができますか?私はすべてのコンポーネントを掛けなければならないと思っていますが、長い一日の終わりに、数学のチュートリアルはすべてギリシャのように見えます。

ありがとうございます。

答えて

2

すべてのベクトルは値によって定義されます。 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 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} 

多くの可能な実装の1つに過ぎないことに注意してください。

EDIT: あなたはaccually length関数を使ってオブジェクトを拡張することができます

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

を、私たちのv1のベクトルが適切に正規化されているかどうかを確認:

v1.length(); 
//0.9999999999999999 
関連する問題