Thanks for sharing some code. It helps give me perspective (pun not intended :-D). Unfortunately, I'm not following the code -- it looks to be very non-standard/customized, in terms of what I'd expect to see in a 3D application.
For starters, the name, "rotationProjectionMatrix" is confusing. Rotation and projection are two very different kinds of transformation. Without getting into too much "math speak", rotation simply transforms axes to point in different directions; it does not "deform" the relationships among the axes (i.e., after any rotation, the X, Y, and Z axes stay at 90 degree angles with respect to each other).
On the other hand, projections are not guaranteed to preserve that property (especially not perspective projections, which "squash" from 3D onto 2D, removing an entire dimension/axis/coordinate space). That's why, e.g., OpenGL treats the "model/view" transformation matrix (which includes rotation) as an entirely separate entity from the "projection" matrix. In OpenGL, you apply all of your model/view transformations first (rotation/translation/scaling/shear/whatever) with the "MODELVIEW" matrix. Then after that, you use the "PROJECTION" matrix to flatten your transformed 3D geometry into a convincing 2D image, for display on whatever screen/monitor you're using (if you didn't know that, now you do :-D).
Based on your code, the "rotationProjectionMatrix" looks not like a matrix, but like a camera object. It has an eye position vector, view space basis vectors (up/look/right) and a projection "object" -- you called the projection object a vector, but I contend that it should be a matrix, because projection is a transformation that really can only be done with a matrix.
This series of articles might be useful: http://www.scratchapixel.com/lessons/3d-basic-rendering/perspective-and-orthographic-projection-matrix/projection-matrix-introduction <-- but it gets very heavy into math; I had to read and re-read it 4 or 5 times before it clicked
Lastly, you seem to have 2 "lookAt" vectors.. The object named "vector" appears to serve the same purpose that the rotationProjectionMatrix.look vector should serve. Here's how OpenGL does it: https://www.khronos.org/opengl/wiki/GluLookAt_code
Whew.. This turned into a long post. Does this make sense?