So I'm trying to learn 3D programming. Using the framework libgdx, I decided to build a camera that translates and rotates along its own axes instead of the world axes, which is non-intuitive and not user friendly. (I basically wanted an FPS or flight sim camera.)
I feel really stupid because, well, I figured out that to move forward/back, you can just translate the camera along the direction vector, and that to move left/right, you can translate along the direction vector rotated 90 degrees around the up vector. But then I couldn't figure out how to translate up/down. I tried doing all sorts of multiplication with the up and direction vectors, and I even left it alone for a few hours to try and figure it out.
When I got back, it hit me - to translate up/down, translate along the Up vector. Duh! How silly...
Of course, I understand that really doing 3D work would involve using matrices in a very hands-on way, and I'm going to get to that at some point...