若3D模型發生碰撞後需要計算碰撞反應,不通物體運動有不同碰撞反應.但物體多數以直線運動.物體彈回角度和碰撞角度相等.
入射角度:桌球運動方向與邊沿平面法線向量之間夾角.
反射角度:垂直於運動方向矢量
例:當桌球撞向邊沿.它將按撞擊角度與之對等『入射角度』彈開
方程並沒有考慮球體旋轉作用力與磨擦力.最終得到計算反射方向方程式
給定運動方向矢量I與垂直法線N求碰撞反射方向F
F = (I – N2 (I % N)) * | I |;
計算反射方向代碼,dir為射線方向,normal為碰撞面法線
VECTOR3D Reflection_VECTOR3D(VECTOR3D_PTR dir,VECTOR3D_PTR normal){
VECTOR3D vec ;
Normalize_VECTOR3D(dir, &vec); // 單為化方向向量
*dir = (vec – *normal * 2.0f * (vec % *normal)) * Length_VECTOR3D(dir);
return *dir;
}