This problem bothers me and probably every other developer in the field of computer graphics ever since. Take any two graphics libraries/frameworks and you can be almost sure that they use a different coordinate system definition. The most famous examples are of course DirectX and OpenGL.
DirectX uses a left-handed system where
positive X = (1, 0, 0) points to the right positive Y = (0, 1, 0) to the top and positive Z = (0, 0, 1) to the back.
OpenGL uses a right-handed system where
positive X = (1, 0, 0) also points to the right positive Y = (0, 1, 0) also to the top but positive Z = (0, 0, 1) to the front.
To make things even worse, their interpretation of the 16 values of a 4x4 matrix is transposed to each other (row major <-> column major).
Another example would be OpenCV which has also a right-handed system but Y points downwards... its a mess!
How can it be solved in a general way, so that an object defined and transformed in system A appears in the same position/orientation in the other system B from the (independent) position of the viewer (e.g. person in front of the screen)?
I guess one would need the basis vectors of system A (where the object comes from) defined in system B (in which one wants to display it) and setup some linear equation system to solve in order to get a transformation matrix which is also defined in B and apply that to the coordinates of the object.
The same question goes for matrices, which matrix (defined in system B) transforms a transformation defined in system A into a transformation defined in system B so that it has visually the same 'effect'? hopefully its the same matrix as in question A with the exception that one has to transpose the matrix in case the two systems use other interpretations of the 16 values.