Animate Camera Rotation to 45 Degrees

I have two questions, either one could solve my problem. My issue is that I have a button which will rotate the camera to a 45 degree view, no matter where it started from. So from normal starting point it would go from the 90 degrees to 45. If it was at 70, it would just rotate by 25 degrees. I need this to be animated, so you see the Earth sort of roll, as if you were doing it with the mouse. Is there a way to just animate the rotateUp function? I could not find one, so my solution was to have a short timer and every time it fired, call rotateUp with 1 degree increments until the camera tilt was at 45 degrees. It worked great for most cases. The problem I run into is when the camera is zoomed out. In this case, rotating 45 degrees from the start, does not result in the camera tilt equaling 45 degrees. It is more like 80. I understand why this is the case, the further you are away from the globe, the less the camera is actually tilted to result in a 45 degree view of the globe. I have no idea how to solve this problem though. I have been trying to figure out a way I could get what the final tilt should be, and then I can just rotate a single degree each time until I hit that tilt number, but I have been unsuccessful in being able to get that number. As you zoom in, the resulting camera tilt value (for a 45 degree rotation) goes down, getting closer to 45, but I don’t see it going down in any sort of pattern I can decipher. Does anyone have any ideas? I’m open to doing it another way as well, this was just the one I came up with. Thanks.