#### antennaist

##### Newbie level 3

I'm trying to rotate the radiation pattern around an axis (x, y, and z). I know how to rotate individual spherical points using rotation matrices but I don't know how to rotate the radiation pattern while keeping track of the polarization. After rotating I'm trying to interpolate the new (rotated) theta,phi,r points to the old theta and phi values.

The second problem I have is that I'm doing this numerically and this seems like very common operation done in computer graphics (minus the polarization) but I'm having a hard time finding algorithms to do this elegantly. I don't know the name of the problem I'm searching for. I keep searching "polarization rotation in spherical coordinates" but all I keep getting are rotation matrices which I already know. Right now this is what I'm thinking about doing (without considering polarization):

1. Convert each point from spherical to cartesian coordinates

2. Multiply each point by its proper rotation matrix

3. Since the new rotated points may not contain theta = 0 and theta = 180 I need to interpolate these using e.g. between theta = 179.8, phi = 0 and theta = 174.2, phi = 180.

4. Using the same method as 3 I need to interpolate the end points of phi = 0 and phi = 360.

5. Since theta = 0 and theta = 180 contain a bunch of redundant points, I need to copy the interpolated theta = 0 and theta = 180 to all phi values at theta = 0 and 180.

5. After that I need to sort/rearrange the matrix so I can do interpolation

6. Then I need to interpolate the pattern over my original theta and phi vectors to get the final rotated pattern.

That doesn't even consider polarization, it's just rotating a 3D figure. My method seems very messy and not at all elegant. It seems like this is done quite often and I shouldn't need to write my own messy code to accomplish it but I'm having a hard time finding any information about this.

I'd like to find a good book/reference on how to do all of this since I feel like I'm inventing it all because I don't know the name of my problem or what the solution is called. If you know of any books/references/anything that can help steer me in the right direction, I would appreciate it.

If it matters I'm trying to do this in Python but I can implement any algorithm.