box intersection with normal calculations