Поскольку вы вычисляете пересечение, как если бы блок представлял собой группу точек, а не группу линий. Вот как я делаю это в псевдокоде:
inter = Inside
for ( plane : frustum ) {
verts[2] = findOpposingPointsMostPerpendicularToPlane( box, plane )
near = plane.signedDistance( verts[0] ) > 0.0
far = plane.signedDistance( verts[1] ) > 0.0
if ( !near && !far )
inter = Outside
break
else ( near ^ far )
inter = Intersecting
}
Если ваш ящик представляет собой AABB, вы создаете статический массив индексов вершин для findOpposingPointsMostPerpendicularToPlane()
, а затем сопоставляете их с использованием знака нормальных компонентов плоскости.