Camera's area on a surface?

Is there a way to figure out what region of a surface is being rendered by the camera? For example, let’s say I have a surface split into nine squares (like a tic-tac-toe board) and I place my camera exactly in the center and zoomed in such that only the middle square is visible to the camera. Is there a way to figure out that the camera is looking at the middle square and only the middle square? Or if I move the camera a halfway up and to the left, that I am looking at a bit of each of four squares (top-left, top-mid, mid-left, mid-mid)?

Check out this page in the manual. It shows how to calculate the width and height of the camera view rectangle at a given distance from the camera. You can then use that view rectangle to check which of the object’s squares overlap the camera view.