What I really want is to transform a square into a trapezoid. I mean - I can (and will!) do it mathematically. I’d just rather have a transform take care of it for me.
We can add shearX and shearY functions that mirror processing’s. We might as well throw in applyMatrix() and overload rotate() to do axis-angle rotations.
translate() already accepts a z parameter, it’s just not documented.
!!! Neat! I have something to mess with tomorrow then!
(I had suspected that this might have been floating around in there - you’ve mentioned the graphics API is modeled after processing, so to have it missing was odd)