Prerequisites
How can we combine rotations and translations without using matrices?
If you are not familiar with this subject you may like to look at the following pages first:
Combined Rotation and Translation
In VRML and related standards there is the concept of a transform group. This is a node in a scenegraph which contains the following parameters:
center="0 0 0"
rotation="0 0 1 0"
scale="1 1 1"
scaleOrientation="0 0 1 0"
translation="0 0 0"
To simplify things at this stage assume that the node contains only:
center="0 0 0"
rotation="0 0 1 0"
translation="0 0 0"
Rotation about a Point
Here we cover the rotation about a point (not necessarily the origin). This can be solved using matrix methods as shown here.
First as a comparison consider a rotation about the origin.
 Angle = theta
 translation = 0
Now imagine the same object being rotated by the same angle, but about point P.
 angle = theta
 translation = T = C  rotate(C)
Where:
 T = translation caused by the rotation.
 C = the point we are rotating about.
 R(C) = the rotate function applied to point C
So the angle of rotation is the same whatever point we rotate about, but if we rotate about a point other than the origin this will translate the centre of the object by C  R(C).
Rotating Sum of two points
What is the effect of applying the rotation function R() to the sum of two points?
What this diagram is trying to show (I realise that the diagram is a bit messy) is that if:
Point P1, in absolute coordinates, is rotated to point R(P1) in local coordinates.
Point P2, in absolute coordinates, is rotated to point R(P2) in local coordinates.
Then:
Point P1+P2, in absolute coordinates, is rotated to point R(P1+P2) in local coordinates.
So:
R(P1+P2) = R(P1) + R(P2)
Transforms
Let us take a transform with the following parameters:
 T = translation
 R() = rotation function
 C = centre of rotation
To calculate the total transform in terms of these parameters, we need to first shift the centre of rotation to the origin, then rotate, then shift back to the original centre.
So first shift C to origin: P_{absolute} = P_{local}  C 

Now rotate about origin: P_{absolute} = R(P_{local}  C) 

Now move back to original point: P_{absolute} = R(P_{local}  C) + C 
Now add the translation:
P_{absolute} = R(P_{local}  C) + C + T
The terms in the rotation function can be spilt up as described in 'Rotating Sum of two points' above.
P_{absolute} = R(P_{local})  R(C) + C + T
Combining Transform Nodes
What is the combined effect of putting one transform node under another:
It is possible to find the resulting transform in terms of a 4x4 matrix. But what is an equivalent Transform node that will have the same effect as the two nodes above:  
For on level of transform we have seen that the absolute position is given by:
P_{absolute} = R(P_{local}  C) + C + T
To cascade more than one of these we can calculate the position in coordinates of layer 'n' from the position in the coordinates of the layer below:
P_{n1} = R_{n}(P_{n}  C_{n}) + C_{n} + T_{n}
where:
 P_{n} = position of point in coordinates of layer n
 R_{n} = rotation function of layer n in coordinates of layer n1
 P_{n1} = position of point in coordinates of the layer below n
 C_{n} = centre of rotation of layer n in coordinates of layer n1
 T_{n} = translation on layer n in coordinates of layer n1
So P_{absolute} = R_{a}(P_{a}  C_{a}) + C_{a}
+ T_{a}
and P_{a} = R_{b}(P_{b}  C_{b}) + C_{b}
+ T_{b}
where:
 R_{a} = rotation function of transform a in absolute coordinates
 C_{a} = centre of rotation of transform a in absolute coordinates
 T_{a} = translation of transform a in absolute coordinates
 R_{b} = rotation function of transform b in coordinates of transform a
 C_{b} = centre of rotation of transform b in coordinates of transform a
 T_{b} = translation of transform b in coordinates of transform a
So substituting the Pa from the second equation into the first gives:
P_{absolute} =R_{a}(R_{b}(P_{b}  C_{b}) + C_{b} + T_{b}  C_{a}) + C_{a} + T_{a}
Expanding out gives:
P_{absolute} =R_{a }R_{b}(P_{b}  C_{b}) +R_{a} (C_{b} + T_{b}  C_{a}) + C_{a} + T_{a}
We want to put this into this format:
P_{absolute} = R_{t}(P_{b}  C_{t}) + C_{t} + T_{t}
where:
 P_{absolute} = position of point in absolute coordinates
 R_{t} = equivalent total rotation
 P_{b} = position of point in coordinates of transform b
 C_{t} = centre of equivalent total rotation
 T_{t} = equivalent total translation
so to make this equivalent to the two separate rotations makes:
 R_{t} = equivalent total rotation = R_{a} R_{b}
 C_{t} = centre of equivalent total rotation = C_{b}
 T_{t} = equivalent total translation = R_{a} (C_{b} + T_{b}  C_{a}) + C_{a} + T_{a}  C_{b}
So we rotate around a point which is equal to the centre of rotation of the first level rotation, but we have to adjust the translation by a factor which depends on the absolute rotation.
Example 1
Imagine that we are implementing a trackerball control. To do this we are translating an object in a transform under another transform, the lowest level transform rotates everything by 45 degrees. We pull the object across the screen and we want it to move across the screen but how do we correct for the bottom transform.
We are setting the lowest level transform:  but we want it to be equivalent to the following 
equivalent total translation = R_{a} (T_{b})  equivalent total translation = Tin_{} 
Therefore Tb = Ra'(Tin)
In other words we apply the inverse rotation to the input translation which is minus 45degrees.
Example 2
As example 1 but with translation and offcentre..
We are setting the lowest level transform:  but we want it to be equivalent to the following 
equivalent total translation = R_{a} (T_{b}  C_{a}) + C_{a} + T_{a}  equivalent total translation = T_{a} + T_{in} 
Therefore R_{a} (T_{b}  C_{a}) + C_{a} + T_{a} = T_{a} + T_{in}
R_{a} (T_{b}  C_{a}) + C_{a} = T_{in}
T_{b} = R_{a}'(T_{in}  C_{a}) + C_{a}
Scaling, Translation and Rotation.
We now want to add scaling to the following parameters:
 T = translation
 R() = rotation function
 C = centre of rotation
We add the following two parameters:
 The S (scale) field specifies a nonuniform scale of the coordinate system. Scale values shall be greater than zero.
 The SR (scaleOrientation) specifies a rotation of the coordinate system before the scale (to specify scales in arbitrary orientations). The scaleOrientation applies only to the scale operation.
P_{absolute} = R(SR(S × SR'(P_{local}C))) + T + C
Combining Transform Nodes with Scale
What is the combined effect of putting one transform node under another:
For on level of transform we have seen that the absolute position is given by:
P_{absolute} = R(SR(S × SR'(P_{local}C))) + T + C
To cascade more than one of these we can calculate the position in coordinates of layer 'n' from the position in the coordinates of the layer below:
P_{n1} = R_{n}(SR_{n}(S_{n} × SR_{n}'(P_{n}C_{n}))) + T_{n} + C_{n}
where:
 P_{n} = position of point in coordinates of layer n
 R_{n} = rotation function of layer n in coordinates of layer n1
 P_{n1} = position of point in coordinates of the layer below n
 C_{n} = centre of rotation of layer n in coordinates of layer n1
 T_{n} = translation on layer n in coordinates of layer n1
 S_{n} = scale of layer n in coordinates of layer n1
 SR_{n} = scale rotation function of layer n in coordinates of layer n1
So P_{absolute} = R_{a}(SR_{a}(S_{a} ×
SR_{a}'(P_{a}C_{a}))) + T_{a} + C_{a}
and P_{a} = R_{b}(SR_{b}(S_{b} × SR_{b}'(P_{b}C_{b})))
+ T_{b} + C_{b}
where:
 R_{a} = rotation function of transform a in absolute coordinates
 C_{a} = centre of rotation of transform a in absolute coordinates
 T_{a} = translation of transform a in absolute coordinates
 S_{a} = scale of transform a in coordinates of layer n1
 SR_{a} = scale rotation function of transform a in coordinates of layer n1
 R_{b} = rotation function of transform b in coordinates of transform a
 C_{b} = centre of rotation of transform b in coordinates of transform a
 T_{b} = translation of transform b in coordinates of transform a
 S_{b} = scale of transform b in coordinates of layer n1
 SR_{b} = scale rotation function of transform b in coordinates of layer n1
So substituting the Pa from the second equation into the first gives:
P_{absolute} =R_{a}(SR_{a}(S_{a} × SR_{a}'((R_{b}(SR_{b}(S_{b} × SR_{b}'(P_{b}C_{b}))) + T_{b} + C_{b})_{}C_{a}))) + T_{a} + C_{a}
Can anyone help me expand this out and find an equivilant single transform??
Further Reading
You may be interested in other means to represent orientation and rotational quantities such as:
Or you may be interested in how these quantities are used to simulate physical objects: