# Simulating electromagnetic wave polarization in Blender

I am trying to visualize some experiments done in my lab with wave polarization. One thing I'd like to have is a curve representing an EM wave with arbitrary polarization that I can animate. Mathematically this is expressed as $$E(z,t) = E_0(e^{i\phi_x}\hat{x} + e^{i\phi_y}\hat{y})e^{(kz-\omega t)}$$

Right now I am just expressing linear polarization by creating a spiral curve, tabbing into edit mode and scaling the x component of all vertices to zero, and then rotating the wave around an axis to get horizontal, vertical, and diagonal polarizations. The probelem is that after I scale the vertices I have no way to recover the spiral behavior. Similarly, you have to define the spiral as right or left handed when you create it, and there isn't any way to change it from one to the other. I'd like to have parameters I can keyframe (namely, $$\phi_x$$ and $$\phi_y$$ from above) to modify the polarization of the wave/appearance of the curve. The plan is to eventually map an object onto this curve to represent traveling EM waves. Is there some way I can do this with nodes or even scripting? It doesn't seem possible with just the basic curve controls blender gives you. The twist modifier seems to be almost what I want, but it doesn't allow me to get a nice uniform circle.

• Can you add some images of what you’ve tried and what you’d like to get? Oct 24, 2021 at 16:29
• Is this something you could do using the parametric surface functions from the Add Mesh Extra Objects add-on? Oct 24, 2021 at 17:09

Maybe something along these lines, in Geometry Nodes?

• The Transform node labelled 'Spiral Transform' rotates the spiral before projection to a plane, giving a phase-shift .. is this what you meant by "spiral behaviour"?
• The Transform node labelled 'Projection Transform' rotates the wave after projection, to rotate the projection plane
• The spiral can be switched between clockwise and anticlockwise winding

Blender 3.0a, but easy enough to reproduce in 2.93..

All parameters, and others, not (yet) exposed in the modifier, are animatable..

If this is heading in the right direction, but you want more user-relevant parameters, or, say, the orthogonal wave included in the same object, call back with a comment.

One way to visualize the effect is to use Animation Nodes to create a shape that is parametric and animated.

Details (Tested with Blender 2.93.4 and Animation Nodes 2.2):

1. Convert the equation from complex math to real math that solves for x,y,z as a function of time and the parameters E0, k, w, phi-x, and phi-y. For this example, only the real part of the equation will be added. Following the same principles, both the real and the imaginary parts of the equation can be added.
2. Add a curve. This curve will be replaced by the animated wave using animation nodes.
3. Create a new animation nodes network.
4. Add the following Loop that will calculate the x,y,z positions for the points on the curve as a function of time using the constants as shown.
5. Add the following loop that will determine the edge relationships for between the vertices.
6. Add the following nodes that will call the loops to get the vertices, get the edges, and create a curve from the data.

Now, when animated, the curve will follow the desired equation and the parameters can be changed to illustrate RHP, LHP, circular polarization, elliptical polarization, and planar polarization at different frequencies and signal amplitude.

Example Blender File -