Added a frustum class to support camera geometric reasoning