#include "std.h" #include "frustum.h" Frustum::Frustum(){ } Frustum::Frustum( float nr,float fr,float w,float h ){ verts[VERT_TLNEAR]=Vector( w*-.5f,h*+.5f,nr ); verts[VERT_TRNEAR]=Vector( w*+.5f,h*+.5f,nr ); verts[VERT_BRNEAR]=Vector( w*+.5f,h*-.5f,nr ); verts[VERT_BLNEAR]=Vector( w*-.5f,h*-.5f,nr ); float t=fr/nr; verts[VERT_TLFAR]=verts[VERT_TLNEAR] * t; verts[VERT_TRFAR]=verts[VERT_TRNEAR] * t; verts[VERT_BRFAR]=verts[VERT_BRNEAR] * t; verts[VERT_BLFAR]=verts[VERT_BLNEAR] * t; verts[VERT_EYE]=Vector(); makePlanes(); } Frustum::Frustum( const Frustum &f,const Transform &t ){ for( int k=0;k<9;++k ){ verts[k]=t*f.verts[k]; } makePlanes(); } bool Frustum::cull( const Vector v[],int cnt )const{ for( int n=0;n<6;++n ){ int k; for( k=0;k0 ){ for( int k=0;k<6;++k ) planes[k]=-planes[k]; } }