谁给我一个比较完善的3D的OBB类啊
我像无头苍蝇一样找了一天了
还是没有找到合适的。。。
重谢!
[解决办法]
这好象蛮繁琐的,首先你要求出中心点,在求协方差矩阵和他的特征向量,从而求出主轴,然后你在求点积,求出最大和最小值,然后求出新区间大小,在调整中心点
[解决办法]
// Our basic orientedbox class
class __declspec(dllexport) ZFXObb {
public:
float fA0, fA1, fA2; // half axis length
ZFXVector vcA0, vcA1, vcA2; // box axis
ZFXVector vcCenter; // centerpoint
//---------------------------------------
ZFXObb(void) { /* nothing to do */ ; }
inline void DeTransform(const ZFXObb &obb,
const ZFXMatrix &m);
bool Intersects(const ZFXRay &Ray, float *t);
bool Intersects(const ZFXRay &Ray, float fL, float *t);
bool Intersects(const ZFXObb &Obb);
bool Intersects(const ZFXVector &v0,
const ZFXVector &v1,
const ZFXVector &v2);
int Cull(const ZFXPlane *pPlanes, int nNumPlanes);
private:
void ObbProj(const ZFXObb &Obb, const ZFXVector &vcV,
float *pfMin, float *pfMax);
void TriProj(const ZFXVector &v0, const ZFXVector &v1,
const ZFXVector &v2, const ZFXVector &vcV,
float *pfMin, float *pfMax);
}; // class