2011年2月17日星期四

求一个向量在一个平面上的投影向量

设向量为V, 平面normal为N, 其在平面上的投影向量为V'。

Normalize V和N。

v = normlize(V);
n = normaize(N);

计算v和n的夹角cos值,如果是负值则翻转n和cos值,保证所取的normal和V夹角在180以内。

cosVN = dot(v, n);
if(cosVN < 0)
{
     cosVN = -cosVN;
      n = -n;
}

根据V的长度(V_L)和V和N夹角的cos(cosVN) 计算N'长度(N'_L)和N'。N'满足其终点和V终点连线和平面平行。

N'_L = V_L * cosVN';
N' = N'_L * n;

最后算出V'。

V' =  V - N';

没有评论:

发表评论