Create a board for photons. Mostly for internal use.
An integer, size x (width) of the board.
An integer, size y (height) of the board.
Vector with [x1, y1, dir1, pol1, ..., xn, yn, dirn, poln].
A list of IXYOperator derived from elements from the board.
The total number of photons.
Size x ('width') of the board.
Size y ('height') of the board.
Act on single photons with the precomputed cachedDiffU.
Itself, for chaining.
Add one more photon to the state, using Photons.vectorFromIndicator.
Position of the photon, x.
Position of the photon, y.
Direction from ['>', '^', '<', 'v].
Polarization from ['H', 'V', 'D', 'A', 'L', 'R'].
Itself, for chaining.
Angles 0-360, starting from --> and moving counterclockwise |psi> = (are + i aim) |H> + (bre + i bim) |V>
A deep copy of the same object.
Generates a string for kets. See Vector.toString for formatting options.
.
Float precision.
A ket string, e.g. (0.71 +0.00i) |3,1,>,V⟩ + (0.00 +0.71i) |2,2,v,V⟩.
Perform measurement given measurement projections and positive operators.
Operator, assumed to be with dimensions [pol, dir].
Probability lost at tile (x, y) after applying the operator. Does not change the photon object.
Normalize
Itself, for chaining.
Propagate all particles, hardcoded. See propagatePhotonsWithOperator for a reference.
Itself, for chaining.
Propagate all particles, using {@link createPhotonPropagator}. Use it for a reference. All practical operations with propagatePhotons.
or true, direction 'v' increments dimY.
Itself, for chaining.
Sampling states for (possibly entangled) particles. A proof-of-concept, everything may change (including its mathematics). For product (i.e. pure, non-entangled) states the result is deterministic, up to the phase.
Shows probability of photons.
Add operators to photons and compute static cachedDiffU
An array of board operators in IXYOperator format.
Dimension indices for particle i, for [posX, posY, dir, pol].
Photon id, from [0, ..., nPhotons - 1]
E.g. for 1: [4, 5, 6, 7]
Dimension indices for particle i, for [posX, posY, dir].
Photon id, from [0, ..., nPhotons - 1]
E.g. for 1: [4, 5, 6]
Dimension indices for particle i, for [posX, posY].
Photon id, from [0, ..., nPhotons - 1]
E.g. for 1: [4, 5]
Only measurement (zeros excluded). Conditional state is NOT normalized (to avoid issues with division by ) FIXME: No return type
Generates a DirPol projections for completem projective, non-destructive measurement.
Generates a DirPol basis for completem projective, destructive measurement.
Multiplicative factor. Use Math.SQRT1_2 for 50% of detection.
Create an empty board for photons, with a given size.
An integer, size x (width) of the board.
An integer, size y (height) of the board.
Create an operator for a particular place, projecting only on the particular position.
Board size, x.
Board size, y.
Operator, assumed to be with dimensions [pol, dir].
An operator [dimX, dimY, pol, dir].
Turns vector of a single photon in an array of amplitudes, grouped by polarization.
Vector for one photon.
Create a propagator, given the board size.
Board size, x.
Board size, y.
For true, direction 'v' increments dimY.
An operator, with dimensions [dimX, dimY, {@link Dimension.direction()}].
Turn an list of operators in a complete one-photon iteraction operator for the board.
Board size, x.
Board size, y.
A list of [x, y, operator with [dir, pol]].
Turn an list of operators in a complete one-photon iteraction operator for the board (U - Id).
Board size, x.
Board size, y.
A list of [x, y, operator with [dir, pol]].
Create a single photon vector.
Board size, x.
Board size, y.
Position of the photon, x.
Position of the photon, y.
Polarization from ['H', 'V', 'D', 'A', 'L', 'R'].
A vector [dimX, DimY, dir, pol], does not modify the object.
Generated using TypeDoc
Photons class. A state of many photons, each with with dimensions: x, y, direction, polarization
{@link @Dimension.position}, {@link @Dimension.direction}, {@link @Dimension.polarization} Designed so that it will work with https://github.com/Quantum-Game/quantum-game-2 board.
Think deeply about which things should change in-plance, and which: modify this object.
A lot of things with interfaces to make them consistent.