This project is about creating intuitive links between a web-based graphical interface for a quantum computer.
While quantum computers have primarily been "sold" as the next generation in the ongoing race to build
ever "faster computers", part of the premise of this work is that that is not the only way to look at these machines.

HTML is the most powerful advance in human language since the initial development of writing. The advent of the universal web browser which can read the same code as all other browsers, independent of hardware platform and operating system combined with the ubiquitous mobile Internet means that in a few seconds you can create a multimedia document which can be shared with roughly 3 billion poeople instantly. While all these billions can't do that at the same time due to bandwidth constraints, if a fraction of the people getting your file go on to share it with others, you really can share your file with half of humanity in a few seconds, and if they can share devices with people in their vicinity you can reach all 7 billion humans in minutes, at least in theory.

Given this power, it is fair to say that we have only barely scratched the surface of what can be done by sharing information over the Web via HTML in a browser.

If you've studied quantum mechanics at even the most basic level, you'll think "the way to represent a one qubit system
geometrically is clearly the Bloch sphere". The Bloch sphere is great. But it is very challenging to extend to
higher numbers of qubits. The problem is that the Bloch sphere is taking advantage of the special place that three
dimensional spaces and spheres have for the human mind. When you try to take this and directly extend it to
more dimensions you end up with trying to wrap your mind around n dimensional geometry and n dimensional "spheres",
which is simply not something our minds are built for.

When this visualization proves impossible, theorists give up and go back to an all numbers based represenation with giant patricies drawn with many "..."'s and may zeros. The problem with this is that quantum "computing" really is a geometric technology. When we use large matricies of numbers to talk about hilbert spaces of qubits we are extending another innapropriate model, that of the classical computer. This tends to obscure the truly vast size of Hilbert space.

The purpose of the two qubit representation here is not to somehow replace the Bloch sphere, and I don't claim it's as good. The purpose is to make a geometric model which will allow us to have more dimensions without abandoning the basic structure of that model.

We begin with a 1 qubit system with arbitrary state vectors: $$\alpha\left|0\right> + \beta\left|1\right>.$$ if we normalize to one, so that $$\left|\alpha\right|^2 + \left|\beta\right|^2$$ and remove an arbitrary global phase to make the ground state purely real we can write this as $$\cos{\theta}\left|0\right> + e^{i\phi}\sin{\theta}\left|1\right>,$$ and this will map to all possible complex phases as well as all possible magnitudes that satisfy the normalization conditions.

The way this is mapped into HTML is to have each of the two basis states be represented by a bitmap photo of something recognizable and distinct with a clear "up" and "down" orientation(like faces) in this case famous cats of the Internet, and the rotation of each image represents complex phase and the opacity of each image is the magnitude squared. Since we have arbitrarily set the ground state to have zero complex phase, it is always right side up, and to denote that the ground state(Grumpy Cat) is square while the other states are round.

One more aspect of this HTML model of Hilbert space is I assume that angles are on a discrete grid. That is I assume that all angles are multiples of some integer fraction of $2\pi$. To make this more concrete the states can be re-written as $$\cos{\left(\frac{2\pi n}{N}\right)}\left|0\right> + \sin{\left(\frac{2\pi n}{N}\right)}e^{i\frac{2\pi m}{M}}\left|1\right>, n,m,N,M \in \mathbb{Z}$$

To begin with, N and M are both set to 8, making the angle step for both $\theta$ and $\phi$ $\frac{2\pi}{8} = \frac{\pi}{4}$. This is the minimal step size required to get the superposition state $\frac{1}{\sqrt{2}}\left|0\right> + \frac{1}{\sqrt{2}}\left|1\right>$.The buttons on the control panel at the bottom of the screen allow the user to multiply or divide N and M by 2 and 3, and to increment or decrement n and m. The code does not reset the values of n and m to zero when they get to N and M, and lets the geometry take care of this as the images cycle rather destroying information on how you got to a given state. Also no modifications are made to allow for the degeneracy caused by different values of complex phase changing sign and causing overlap. Again, this is not a physicaly thing, it's just a artistic rendering of a sequence of complex numbers in HTML, designed to capture the information in the state. I remind the reader that we should not take the Bloch sphere literally either, we've just used it for so many years and it's so close to the canonical studies of spins in fields that we have learned to pretend that it's physical(although given that many of us are now measuring macroscopic electrical properties in circuits this is even less physical than it was).

In the next page, start by hitting the "n++" button a few times to cycle between the ground and excited state. You are performing Rabbi flops here. If you go into the excited state, where you can no longer see Grumpy Cat and Keyboard Cat is fully visible, try hitting the "m++" and "m--" buttons. You should now see Keyboad Cat rotate, which is a rotation of the relative complex phase of the exicted state. Now if you hit the buttons "NX2" and "MX2" a couple times and repeat these experiments you can see the steps get smaller both in the fade out and the rotation. Try all this! Then move on to the two qubit model.

$$
\alpha\left|00\right> +\beta\left|01\right>+\gamma\left|10\right>+\delta\left|11\right>
$$
$$
\cos{\theta_0}\left|00\right> +
\cos{\theta_1}\sin{\theta_0}e^{i\phi_0}\left|01\right> +
\cos{\theta_2}\sin{\theta_1}\sin{\theta_0}e^{i\phi_1}\left|10\right> +
\sin{\theta_2}\sin{\theta_1}\sin{\theta_0}e^{i\phi_2}\left|11\right>
$$
$$
\cos{\frac{2\pi n_0}{N}}\left|00\right> + ...
$$$$
\cos{\frac{2\pi n_1}{N}}\sin{\frac{2\pi n_0}{N}}e^{i\frac{2\pi m_0}{M}}\left|01\right> + ...
$$$$
\cos{\frac{2\pi n_2}{N}}\sin{\frac{2\pi n_1}{N}}\sin{\frac{2\pi n_0}{N}}e^{i\frac{2\pi m_1}{M}}\left|10\right> + ...
$$$$
\sin{\frac{2\pi n_2}{N}}\sin{\frac{2\pi n_1}{N}}\sin{\frac{2\pi n_0}{N}}e^{i\frac{2\pi m_2}{M}}\left|11\right>,
$$$$
n_i,m_i,N,M \in \mathbb{Z}
$$

$$
\alpha\left|000\right> +\beta\left|001\right>+\gamma\left|010\right>+\delta\left|11\right> +
$$$$
\epsilon\left|100\right> +\zeta\left|101\right>+\eta\left|110\right>+\iota\left|111\right>
$$
$$
\cos{\theta_0}\left|000\right> +
\cos{\theta_1}\sin{\theta_0}e^{i\phi_0}\left|001\right> +
\cos{\theta_2}\sin{\theta_1}\sin{\theta_0}e^{i\phi_1}\left|010\right> +
\cos{\theta_3}\sin{\theta_2}\sin{\theta_1}\sin{\theta_0}e^{i\phi_2}\left|011\right> +
$$
$$
\cos{\frac{2\pi n_0}{N}}\left|00\right> + ...
$$$$
\cos{\frac{2\pi n_1}{N}}\sin{\frac{2\pi n_0}{N}}e^{i\frac{2\pi m_0}{M}}\left|01\right> + ...
$$$$
\cos{\frac{2\pi n_2}{N}}\sin{\frac{2\pi n_1}{N}}\sin{\frac{2\pi n_0}{N}}e^{i\frac{2\pi m_1}{M}}\left|10\right> + ...
$$$$
\sin{\frac{2\pi n_2}{N}}\sin{\frac{2\pi n_1}{N}}\sin{\frac{2\pi n_0}{N}}e^{i\frac{2\pi m_2}{M}}\left|11\right>,
$$$$
n_i,m_i,N,M \in \mathbb{Z}
$$

- X
- Y
- Z
- T
- S
- H

- Control-not
- control-swap

What now? I've shown that you can represent 1,2 and 3 qubit states and gates

Quantum Kitties

Nx2 | N/2 | Mx2 | M/2 | Nx3 | N/3 | Mx3 | M/3 |

n++ | n-- | m++ | m-- |

Nx2 | N/2 | Mx2 | M/2 | Nx3 | N/3 | Mx3 | M/3 | ||||

n0++ | n0-- | m0++ | m0-- | n1++ | n1-- | m1++ | m1-- | n2++ | n2-- | m2++ | m2-- |

Nx2 | N/2 | Mx2 | M/2 | Nx3 | N/3 | Mx3 | M/3 | ||||||||

n0++ | n0-- | m0++ | m0-- | n1++ | n1-- | m1++ | m1-- | n2++ | n2-- | m2++ | m2-- | n3++ | n3-- | m3++ | m3-- |

n4++ | n4-- | m4++ | m4-- | n5++ | n5-- | m5++ | m5-- | n6++ | n6-- | m6++ | m6-- |