0

http://www.tonypa.pri.ee/vectors/tut03.html

説明してくれませんか、どうやってベクトルに射影するのですか? dp * 単位ベクトルを乗算すると、何が得られますか? 私は彼らが何をしているのか、どのように角度やその他のものなしでそれを取得するのか理解していません.30k +(私は巨大なdp番号を取得します)のような投影のような奇妙な非ベクトル番号* 1の長さのベクトルです。atan2 やその他のジオメトリ計算で射影を取得しようとして、すべての式を調べるのに本当に苦労しました。

4

1 に答える 1

1

投影されているベクトルの長さで割った 2 つのベクトルのドット積を実行します。投影する前に両方のベクトルを正規化し、投影ベースであるベクトルの長さを投影に掛けると、同じ結果が得られます (英語が下手で申し訳ありません。私の心は遅いです)。ところで、直交座標系では、投影を行うために角度は必要ありません-おそらく非直交でも。ベクトル間の角度は から導出されるということacos(dotProduct(v1,v2)/length(v1)/length(v2))です。

var v:Vector.<Number>; // the vector to get projected
var p:Vector.<Number>; // the projection base. Lengths of vectors as number sequences are equal
function dotProduct(v1,v2:Vector.<Number>):Number {
    var d:Number=0;
    for (var i:int=v1.length-1;i>=0;i--) d+=v1[i]*v2[i];
    return d;
}
function lengthOf(v:Vector.<Number):Number { return Math.sqrt(dotProduct(v,v)); }
var pl:Number=dotProduct(v,p)/lengthOf(v)/lengthOf(p); // part of p's length that's the projection length
for (var i:int=v.length-1;i>=0;i--) v[i]=p[i]*pl;
于 2013-02-26T14:13:23.333 に答える