Hi Andrew, I don't think this is the right interpretation, I think column major storage does explain the behavior, and it's not clear to me what is wrong assuming that this is the case.
In python and blender C code, matrices are accessed as matrix[column][row]. When printing the matrix in python, it will print a list of columns. A python __repr__ implementation for Matrix could make this print better. Brecht. On Fri, Dec 9, 2011 at 12:37 PM, Andrew Hale <trumanblend...@gmail.com> wrote: > Hi Ton, > > I will try to explain better (this is a devilish topic). The problem here > is how matrices are accessed in Python and how the matrix product is > formed. The method of indexing matrices is shown in [1], [2] and [3]. This > method has the method of accessing matrices as > matrix[row_index][column_index], this is the method used in Python > currently. However, when the product of a matrix and vector is formed > according to normal matrix rules for a matrix times a column vector (see > [4] and [5]) the result is incorrect. Also see the patch tracker entry for > an example of how the matrix multiplication in Python is incorrect. > > The reason that the multiplication is not being calculated correctly is > that the way matrices are printed an how they are stored is different. > Because of this in Python when we access matrix[i][j] element, we're > accessing element matrix[j][i] in C. Hence the product matrix*vector is > actually computed as matrix^T * vector of what is shown on screen. matrix^T > is the matrix transpose, i.e. rows/columns switched. > > Thanks, > Andrew > > [1] http://mathworld.wolfram.com/Matrix.html > [2] http://www.mathworks.com.au/help/techdoc/math/f1-85462.html#f1-85488 > [3] > http://en.wikipedia.org/wiki/Index_notation#Index_notation_in_mathematics > [4] http://mathworld.wolfram.com/MatrixMultiplication.html > [5] http://en.wikipedia.org/wiki/Matrix_multiplication#Matrix_multiplication > > On Fri, Dec 9, 2011 at 9:01 PM, Ton Roosendaal <t...@blender.org> wrote: > >> Hi Andrew, >> >> Can you provide evidence for who is spreading, supporting or enforcing >> this "Standard Notation"? >> >> Apart from that - especially when this standard appears disputable - >> we can much better ensure we are 100% clear about it in docs. Look at >> this wonderful Panda3d page: >> >> http://www.panda3d.org/manual/index.php/Matrix_Representation >> >> I rather see this approach for us! >> >> -Ton- >> >> ------------------------------------------------------------------------ >> Ton Roosendaal Blender Foundation t...@blender.org www.blender.org >> Blender Institute Entrepotdok 57A 1018AD Amsterdam The Netherlands >> >> On 8 Dec, 2011, at 7:05, Andrew Hale wrote: >> >> > Hi All, >> > >> > I have written a patch which rectifies a cause of confusion among >> > Blender >> > uses when starting out with matrices and vectors. The patch ensures >> > consistency between the matrix representation and matrix/vector >> > products so >> > that they behave in the way that people familiar with math expect. >> > This is >> > achieved by adjusting pythons access to the internal storage, while >> > keeping >> > the internal data the same. Note that this does not interfere with how >> > matrices are stored internally or how matrix products, additions etc >> > are >> > performed internally. >> > >> > The patch can be found here: >> > >> http://projects.blender.org/tracker/index.php?func=detail&aid=29534&group_id=9&atid=127along >> > with a more in depth explanation. >> > >> > Thanks, >> > Andrew >> > _______________________________________________ >> > Bf-committers mailing list >> > Bf-committers@blender.org >> > http://lists.blender.org/mailman/listinfo/bf-committers >> >> _______________________________________________ >> Bf-committers mailing list >> Bf-committers@blender.org >> http://lists.blender.org/mailman/listinfo/bf-committers >> > _______________________________________________ > Bf-committers mailing list > Bf-committers@blender.org > http://lists.blender.org/mailman/listinfo/bf-committers _______________________________________________ Bf-committers mailing list Bf-committers@blender.org http://lists.blender.org/mailman/listinfo/bf-committers