what does that mean in theory?
Left handed vs. right handed
the Orientation of the system describes how the three basis vectors that span the vector space are laid out against each other. X is always the thumb, Y the index finger and Z the middle finger. The Orientation of the system tells you which hand to use to visualize the space. It also tells you which hand to use when visualizing a cross product (thumb x index finger = middle finger), or when visualizing the axis-angle representation of a rotation (it rotates around your thumb in the direction of your other fingers).
Column vectors vs. row vectors
In computer memory, a vector is just a bunch of floating point values, usually laid out sequentially. The implementation of a vector usually has no notion about whether it represents a column or a row vector. But the way a vector is thought of (as being either row or column vector) affects how certain operations are implemented and therefore this is part of the conventions a 3D system uses. If we think of vectors as being row vectors, it means that they must be multiplied from the left with a matrix when transforming them. A column vector would need to be multiplied from the right. This affects the order in which the elements of the matrix are multiplied/added with the elements of the vector and therefore affects the result (Note: multiplying a row vector from the left to a matrix yields the same result as multiplying a column vector from the right to the transpose of that matrix). It also affects the order in which matrix*matrix multiplications must be performed. For example: When scaling, rotating and translating a model in 3D space, usually the vertices must be scaled first, then rotated and then translated in order to achieve the desired result. This operation can be described in a single affine transformation matrix that can be computed by multiplying a scale matrix, a rotation matrix and a translation matrix. if vectors are thought of as being row vectors and therefore are multiplied from the left, the transformation matrix must be calculated as A = S*R*T do get the desired result. In the case of column vectors that are multiplied from the right, the transformation matrix is calculated as A = T*R*S.
Column major vs. row major
Similarily to vectors, a matrix implementation also does not have a notion of being row major or column major. It usually consists of 16 floating point values that are laid out sequentially in memory. Whether it is is said to be column major or row major is a purely notational convention that tells us how to write down the 16 floating point values onto a sheet of paper if we want to visualize the matrix in order to think about which elements to access when implementing a certain operation that shall correspond to the convention used. In this sense, for a matrix containing ascending integers in the 16 sequentially laid out values this would mean:
Now, what does all of this mean in practice?
In practice this usually means the following: If you think your math is right but don’t see anything meaningful on screen, transpose your matrices and/or reverse the order of your matrix*matrix multiplications until stuff looks right. If you found this article helpful, have any questions or corrections, please let us know in the comments.