Animation Nodes: How can I apply a different matrix to every point in a mesh
OK, over lunch I sat down and read through the Animation Nodes docs, and worked out how subprograms work. Like a lot of stuff in Blender it seems like they're completely opaque and baffling, until you understand them, at which point they're completely obvious. So what I needed to do was to make a subprogram with the Project Point On Line node and the transformation matrix inside, and use the vectors from the mesh as an iterator. That means that for every point in the mesh the subprogram is run, given the point's co-ordinates and the strength parameter, and returns the rotated vector as a result.

Here's the much simpler, and more elegant node tree:



And here's the before and after, working just like I want: