|
发表于 2007-12-14 17:46:00
|
显示全部楼层
Re:关于鼠标拾取
包围盒你看一下D3DXBoxBoundProbe(); 原理随便一搜就可以了cross boundingbox
包围球i
nline bool IsCrossSphere(COSFGBoundingShpere* pSphere,D3DXVECTOR3& RayOrg,D3DXVECTOR3& RayDir)
{
D3DXVECTOR3 v = RayOrg - pSphere->m_vCenter;
float b = 2.0f * D3DXVec3Dot(&RayDir, &v);
float c = D3DXVec3Dot(&v, &v) - (pSphere->m_fRadius * pSphere->m_fRadius);
float discriminant = (b * b) - (4.0f * c);
if( discriminant < 0.0f )
return false;
discriminant = sqrtf(discriminant);
float s0 = (-b + discriminant) / 2.0f;
float s1 = (-b - discriminant) / 2.0f;
if( s0 >= 0.0f || s1 >= 0.0f )
return true;
return false;
}
这个是我引擎代码。原理也是一样自己搜索了看一下 |
|