cause it s p i n

<img src="https://i.sstatic.net/PX0Id.gif" width="300">

### Explanation, ground up

When there's complex numbers, there's rotation. Recall, multiplying by $e^{j\theta}$ _rotates_ a number by $\theta$ radians:

<img src="https://i.sstatic.net/3iXb9.png" width="600">

and since $|e^{jX}|=1$ for any (real) $X$, it's a pure rotation, i.e. _size_ won't change. With a general complex number, $a + jb$, there's rotation + rescaling.

A complex sinusoid, $\cos(\omega t) + j \sin(\omega t)$, or $e^{j\omega t}$, can be plotted with real and imaginary parts separately:

<img src="https://i.sstatic.net/EM7ze.png" width="450">

One perspective is, we have a **1D waveform, spatially**, with "separate" real and imaginary components. That's what above shows. More often, however, the _true_ perspective is that the waveform traverses the complex plane:

<img src="https://i.sstatic.net/KUNdH.gif" width="600">

and at each instant, or spatial slice, it's a _point_ in the complex plane. Thus: a 0D point, that traverses a 1D curve, embedded in the 2D complex plane, evolving along the 3rd-D - time.

A Morlet wavelet is approximately a Gauss-windowed sinusoid. That is, it's above, rescaled. Separated view:

<img src="https://i.sstatic.net/G6t1G.png" width="450">

This is exactly what the plots in question show, but for the 2D case. Now, the "true" case - for clarity, shown alongside the pure sinusoid:

<img src="https://i.sstatic.net/4PMa1.gif" width="600">

(Note, they don't _quite_ spin perfectly in unison - the subject of [center frequency](https://dsp.stackexchange.com/a/76371/50076))

### 2D Morlet

If 1D complex takes 3D to visualize, then 2D complex takes 4D, which spells trouble for us cuboids. If we were flatlanders, we couldn't even do 1D Morlet. We _could_, however, do the 0D projection of a 1D path onto a 2D plane (left of first GIF). 

Our thin cousins light the way: what is the $3D\rightarrow 4D$ equivalent of the $2D\rightarrow 3D$ visuals above? To reiterate, we described the 1D Morlet as:

 - **a 0D point, that traverses a 1D curve, embedded in the 2D complex plane, evolving along the 3rd-D - time**

Then, it should follow, the 2D Morlet is

 - a 1D line, that traverses a 2D manifold, embedded in some 3D space, evolving along the 4th-D - time

I.e., "increment all by 1". How to visualize, exactly? Recall,

$$
\Psi(\lambda, t) = \psi(t) \psi(\lambda)
$$

In code, we have `Psi.shape == (n_lambdas, n_times)`. Then, it's just iterating: for each `n_time`, plot all of `n_lambdas` (1D, complex). That's 3D, evolving along 4th-D.

Result:

<img src="https://i.sstatic.net/baEqC.gif" width="370">

Both pairs:

<img src="https://i.sstatic.net/Vadm4.gif" width="700">

**s p i n**

in opposite directions!

But why "up" or "down"? That's just the right hand rule, as commonly used in physics:

<img src="https://i.sstatic.net/oZvqY.png" width="600">

<sup>Images [source 1](https://www.wikiwand.com/en/Right-hand_rule), [source 2](https://cdn1.byjus.com/wp-content/uploads/2020/05/right-hand-thumb-rule.png)</sup>

### ... wrong spin!

Note it says $\psi(-t) \psi(\lambda)$, rather than $\psi(t) \psi (-\lambda)$. I show what they'd look like if time's sign was flipped, as it's more obvious. Our wavelets in question instead are:

<img src="https://i.sstatic.net/ATcpi.gif" width="700">

At first glance, we may see they're different but really not tell how. The right-hand distinction is still there, but instead of down being up played in reverse, down is up *spatially unrolled* in reverse. At different (increasing) time instances:

<img src="https://i.sstatic.net/1HjMj.png" width="700">

This distinction is worth studying and interpreting in context of convolution upon a real-valued input, and concluding that the modulus of the result is the same only with $\psi(\pm t) \psi(\lambda)$.


### Bonus: all JTFS filters

In addition to spinned we have lowpass pairs, five in total, each for capturing distinct time-frequency geometry. Together:

<img src="https://i.sstatic.net/9VMB4.gif" width="600">

"Five" since they operate on the scalogram, which is always real, then take modulus, hence always $|U_1 * \phi(t)\psi(+\lambda)| = |U_1 * \phi(t)\psi(-\lambda)|$, and one of the pairs is redundant (disclaimer, bad convolution notation used!). But we show all six cause it pretty. 

Note, if $U_1$ was complex and we didn't take modulus afterwards, we'd have _eleven_ pairs, with temporal spin $+t$ and $-t$! The only 100% spin-free pair is the joint lowpass, $\phi(t)\phi(\lambda)$.

### But does it make sense?

**Yes**. This is _the_ spin interpretation.

As to whether it is the "true" visual in same sense as the 1D Morlet, it depends. Two competing interpretations:

 - **Cross-correlation** ($\Leftrightarrow$ convolution): the wavelet transform is defined this way. For each timeshift $\tau$, we compute _similarities_ of wavelets $\psi_\lambda(t - \tau)$ with the input, for all $\lambda$ ([visual](https://dsp.stackexchange.com/a/78513/50076)). The convolution kernel is 2D, and there's no such thing as "half a convolution": for every output point, we aggregate over the entirety of the 2D kernel. No "unrolling" or "evolving".
 - **Impulse response**: wavelets are strongly analogous to measurement devices, and there's physiological evidence for the mammalian auditory system doing a sort of wavelet filtering (even, in fact, JTFS: see ["Bioplausibility"](https://dsp.stackexchange.com/a/78623/50076)). Naturally, a physical system's response evolves with time.

Now, we complete our summary formulation and reiterate, for each:

 - CC: **a 2D time-frequency manifold, pointwise-embedded in a 2D complex plane**. Whether the 2D manifold traverses all resulting 4 spatial dimensions, or only a 3D subspace (like 1D Morlet's 2D subspace), I'm unsure.
 - IR: **a 1D line, that traverses a 2D manifold, embedded in 3D frequency-complex space, evolving along the 4th-D - time**

The IR interpretation is _the_ spin interpretation because, the CC interpretation doesn't evolve along anything, and rotation is evolution.

### Answer code

To be released soon.