设向量为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';
没有评论:
发表评论