unhd (Joseph M Joy) (09/26/90)
I have a question regarding the factorizing of a 3D rotation matrix
into shear matrices. Let me define things first.
A general rotation matrix (non-homogeneous coordinates) has the form:
a b c (x)
R = d e f (x',y',z') = R * (y)
g h i (z)
where a...g are expressions involving the sines and cosines of the rotation
angles. (x', y', z') is the result of rotating vector (x, y, z) using R.
A shear matrix has one of the three forms below:
1 p q 1 0 0 1 0 0
H = 0 1 0 OR p 1 q OR 0 1 0
0 0 1 0 0 1 p q 1
where p and q can be any real numbers.
R can be factored into H1 * H2 * ... H7, where Hi are shear matrices
(i.e. have the form of H above).
THE QUESTION IS, will a lesser number suffice, and if so, what are these
shear matrices?
4 is impossible. I have been trying to solve for n = 5 and n = 6, but things
have been getting very messy.
NOTE: I have factored R into THREE ``shear-and-scale'' matrices
of the form
p q r 1 0 0 1 0 0
S = 0 1 0 OR p q r OR 0 1 0
0 0 1 0 0 1 p q r
This breaks down the general 3D rotation (or other affine
transformation) into THREE scanline operations, resulting in a fast
algorithm for applying affine (and perspective) transformations to 3D
arrays. If R can be factored into, say, five shear matrices, this
could result in a faster algorithm, analogous to Alan Paeth's 2D
rotation algorithm.
Any help will be greatly appreciated and acknowledged.
Joseph.
jmj@unh.edu, (603)862-4335