Let's say I have two transformation matrices:
```
import vispy.util.transforms as tr
translate = tr.translate(10, 5, 0)
scale = tr.scale(1, 2, 1)
```
..and an array of vertex positions:
```
pos = np.array([[1,2,3,1], [0, 2, 1, 1], [1, 0, 0, 1]])
```
Now I want to map these vertices like ```translate( scale( pos ))```. Being familiar with linear algebra, my temptation is to multiply the transformations together, then multiply them against the position array:
```
total_tr = np.dot(translate, scale)
new_pos = np.dot(total_tr, pos)
```
But this does not work, because the transformation matrices and vertex positions alike are transposed relative to my expectation. Instead I must do this:
```
total_tr = np.dot(scale, translate)
new_pos = np.dot(pos, total_tr)
```