source files: [xc]tfm.[ch]
(SEND <tfm> :TRANSFORM-POINT '(<x> <y> <z>)) (SEND <tfm> :TRANSFORM-NORMAL '(<x> <y> <z>))
Transform the given point or normal and return the result as an '(<x> <y> <z>) list. The algorithm used to :TRANSFORM-NORMALs is currently actually incorrect, it uses the matrix as is, but it should use the inverse transpose of the matrix. I believe this only matters if unusual transforms like shears are used.
Since these messages are not heavily used, shears are infrequent, and matrix inversion is expensive, the current arrangement seems livable. for now.