Animation Nodes: How can I apply a different matrix to every point in a mesh I have a mesh that I want to deform, and since there doesn't seem to be a deformer built in to blender that does what I want, I thought I'd try animation nodes.

Here's my node tree. The four maths nodes calculate how far the point is on the XY plane to the center (distance to line would have done the same thing, but it doesn't work for lists). Then I have a rotation matrix where the amount of rotation is controlled by that distance. Now it's just a matter of applying the matrix to the vert, right. But computer says no! I can't give a list of matrices to the transform node.



Can anyone suggest a workaround?

EDIT OK, I sat down and did the maths, and I got THIS CLOSE to having it work. But EVERY. FREAKING. TIME. there is one node that I need that doesn't work with list inputs.

Here is the updated node tree, with the rotation calculated using maths nodes (the formula is written in on lwr left). 



It is so close to working that I'm thumping the monitor.

Here's the original mesh. seen from top ortho:



Here is what I get with the nodes applied:



SO CLOSE! The only problem is that for verts where x==0 it is returning 0,0 because it's dividing by zero. You can see it when I set the strength to 0



So I thought I'd add a compare node, and for any vert where x==0 I'd use a formula that avoided the divide by zero problem. But of course the compare node doesn't work with lists. HNGGGGH!

Why is something so simple so bloody difficult in Blender? Because you haven't read the manual.
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: