   Zooming In and Out
  I'm starting to work on a turrent-typed game/side-project, and I need to be able to zoom in and out. My initial idea was to just adjust my fov parameter to my projection matrix (which I do in software, btw). By decreasing my field of view, I am able to zoom in closer to my view point, however, I am not sure how to figure out what is 1x zoom, 2x zoom, 4x zoom, etc.I'm guessing zoom works like so:90   degrees = 1x zoom45   degrees = 2x zoom22.5 degrees = 4x zoometc...Also, when my fov angle is zero degrees, I expected some really weird results such as a single flat color or something because my fov should be looking at an entire point in space, right? Points are infinitely small, so this would probably result in a single color in my screen, but I'm not getting those results :/I did some digging, and did not find much. Another more obvious solution would be to just move my camera in closer, but I don't think that is quite right. After all, how would I be able to determine what the zoom factor is?   
  I'm not sure what the official definition of a 2X zoom is, but I'll assume it means an object appears twice as big on the screen.First, we must calculate a certain value, let's call it baseZoomFactor. We do this by calculatingfloat baseZoomFactor = tan(viewAngle / 2);Now, to calculate the angle of any zoom level just calculatefloat newAngle = 2 * atan( baseZoomFactor / zoomLevel);It's all basic math, but if you want an explanation why it works this way just say so.   