Your question is more of a math question and I can't answer that (and you might be better off asking it over at math.stackexchange), but if you would be satisfied with only achieving the visual result, that's easy enough (though, not the "curve length stays constant" part):
I marked my additions to your setup with yellow. First Add node is to get rid of that long line you have going from the origin point to the end of the spiral (well, technically, the start). I don't know much about math, but I assume that's happening because Spline Parameter—Factor gives you a linear gradient of floats from $0$ to $1$ and since $\frac{1}{0}$ is undefined, it just puts the first point of the curve to $0,0,0$. Adding a very small number get rids of that. Closer to $0$ that number is, longer the "stem".
Second group of nodes simply uses the Position of that point at the end of the stem (Index0
) to offset the whole group in the opposite direction, then rotates it so it stays upwards and looks to right.
Edit 1: Instead of the Transform node for rotation, you could simply switch the X and Y values of your setup and make them negative:
Edit 2: Here's a super hacky way of making the curve retain its length:
Marked the newly added nodes with blue. I'm taking the length of the curve at the animation start when it's just a vertical line and scaling the result down in proportion to it. The magical $49.020$ number happens to be the length of the curve when the rotation angle is at $0.000$ and the first Add node value is at $0.020$. If you wanted to change that number to adjust the length of the "stem", you would need to hook up a Viewer node to the curve before scaling (with rotation at $0$) to see the new curve length in the spreadsheet and put that into the Divide node.