读书人

D3D中 怎么判断三角形是在背面还是在正

发布时间: 2012-02-24 16:30:39 作者: rapoo

D3D中 如何判断三角形是在背面还是在正面
已知三角形3个顶点坐标,以及一个参考原点坐标
如何计算这个三角形相对于这个参考原点是在正面还是在背面?

bool ComputeNormal(D3DXVECTOR3 v1,D3DXVECTOR3 v2,D3DXVECTOR3 v3,D3DXVECTOR3 &result)
{
D3DXVECTOR3 u = v2 - v1;
D3DXVECTOR3 v = v3 - v1;
D3DXVec3Cross(&result, &u, &v);
D3DXVec3Normalize(&result, &result);
return true;
}

bool AnalysPlanePositiveOrnegative(D3DXVECTOR3 v1,D3DXVECTOR3 v2,D3DXVECTOR3 v3,D3DXVECTOR3 origin)
{
D3DXVECTOR3 Normal;
ComputeNormal(v1,v2,v3,Normal);
D3DXPLANE Plane;
Plane.a=Normal.x;
Plane.b=Normal.y;
Plane.c=Normal.z;
Plane.d=0.0f;
float fval;
fval=::D3DXPlaneDotCoord(&Plane,&origin);
if (fval<0.0f)
{
return false;
}
else
{
return true;
}
}
//'=============================以上是我的代码===========================
好像不行,求大侠帮我改一改 谢谢!

[解决办法]
三角形所在面的方程构建错误
normal是法向量没错, 但是平面plane的d参数坐标不是0, d = - (normal 点乘 v1)
平面方程是:
n*v + d = 0

读书人网 >网络游戏

热点推荐