The solution is great, the thing I’m getting at is that it works only for tensors where the feature vector’s data are non directional, unless I misunderstood something there. So your example works when a rotation works this way, for instance:
| [x1,y1]  [x3,y3] |    - - - - - - - - - - -  - - >     | [x2,y2]  [x1,y1] | 
| [x2,y2]  [x4,y4] |   90 degree clockwise rotation      | [x4,y4]  [x3,y3] | 

However mine works this way
| [x1,y1]  [x3,y3] |    - - - - - - - - - - -  - - >     | [x2*,y2*]  [x1*,y1*] | 
| [x2,y2]  [x4,y4] |   90 degree clockwise rotation      | [x4*,y4*]  [x3*,y3*] | 

The asterisk * symbolizes that the values inside of the features x_n and y_n themselves have changed according to the rotation because they encode directional data and have to point to a new direction if the overall element is rotated.
The solution I currently have first calculates the rotation for the directional features, which doesn’t “move” them “inside” of the tensor, just changes their numbers (essentially a rotation on a vector), and then actually rotates the tensor’s data using a similar approach to what you have there in the post.
This math stackexchange post might be closer to what I’m talking about, but I have to explore it further. I have a gut feeling this thread might bring me closer to the solution I’m looking for, but right now I need to rest. I’ll post a solution if I find it.
https://math.stackexchange.com/questions/912070/rotating-vector-functions#:~:text=To%20rotate%20the%20E%20vectors,position%20of%20every%20vector%20E 3.