Skew/shear transformations

I’m working on the COLLADA spec, and one of the transformations is called <skew>, and takes an angle and two axes and produces a skew transformation. The spec doesn’t have too much to say about it or any examples, but it points to a similar operation in the RenderMan spec:

RiSkew ( RtFloat angle, RtFloat dx1, RtFloat dy1, RtFloat dz1, RtFloat dx2, RtFloat dy2, RtFloat dz2 )

Concatenate a skew onto the current transformation . This operation shifts all points along lines parallel to the axis vector ( dx2, dy2, dz2 ). Points along the axis vector ( dx1, dy1, dz1 ) are mapped onto the vector ( x, y, z ), where angle specifies the angle (in degrees) between the vectors ( dx1, dy1, dz1 ) and ( x, y, z ), The two axes are not required to be perpendicular, however it is an error to specify an angle that is greater than or equal to the angle between them. A negative angle can be specified, but it must be greater than 180 degrees minus the angle between the two axes.

How can I turn this into a matrix? For all of the other operations (rotation, translation, look-at…) there was a ready-made API function for this in nalgebra but this one doesn’t seem to have anything. Should I open an issue for it?