SGI style: rowvec * matrix GED style: matrix * colvec [0][0] [0][1] [0][2] [0][3] 0 1 2 3 [1][0] [1][1] [1][2] [1][3] 4 5 6 7 [2][0] [2][1] [2][2] [2][3] 8 9 10 11 [3][0] [3][1] [3][2] [3][3] 12 13 14 15 r1 r2 r3 . r1 r4 r7 tx r4 r5 r6 . r2 r5 r8 ty r7 r8 r9 . r3 r6 r9 tz tx ty tz 1/s . . . 1/s Rot +X Rot +X 1 0 0 1 0 0 0 cos sin 0 cos -sin 0 -sin cos 0 sin cos Rot +Y Rot +Y cos 0 -sin cos 0 sin 0 1 0 0 1 0 sin 0 cos -sin 0 cos Rot +Z Rot +Z cos sin 0 cos -sin 0 -sin cos 0 sin cos 0 0 0 1 0 0 1 For Negative rotations, the signs of the sine terms change. The LIBRT mat_ae( m, az, el ) azimuth, elevation routine does a +Z (az) followed by a -Y (-el) rotation. This results in a GED matrix of: cosAcosE -sinA -cosAsinE sinAcosE cosA -sinAsinE sinE 0 cosE ------------------------ SGI: multmatrix inserts here | \|/ rowvec * Newmatix * matrix [World_Coords] i.e. it premultiplies the matrix stack. rot(); trans(); looks like: rowvec * Trans * Rot [World_Coords] -----------------------