# Xaos

Xaos provides more fine grained control over the selection of xforms on each iteration. It is expressed as a probability modifier for each xform in relation to every other xform.

The default state is for all elements to have a value of 1, which means that xaos is not used. When any element is changed to something other than 1, xaos is in effect.

Xaos specifies how likely an xform is to be chosen based on the previous xform that was chosen. Alternatively, this can also be expressed as the probability modifier of the next chosen xform based on the currently chosen one. These two methods of stating xaos are known as “from” and “to”.

The table simultaneously displays the xaos probabilities in both forms, with the xform names shown in the headers. The columns show them in “from” form, hence the “F” prefix. The rows show them in “to” form, hence the “T” prefix. They can be thought of as such:

#### From

Col N, Row M: If the last xform was at index N, adjust the probability weight of xform M by X amount on the next iteration.

#### To

Row M, Col N: If the current xform is at index M, adjust the probability weight of xform N by X amount on the next iteration.

Double clicking any cell will toggle it between 0 and 1.

Double clicking any row or column header will toggle all elements in that row or column between 0 and 1 and do a best fit for all columns.

Double clicking the headers with the right mouse button will just do the best fit without changing any values.

### Clear xaos

Set all elements to 1, which disables xaos.

### Random xaos

Set all elements to randomly selected values of 0 or 1.

Hold Ctrl while clicking to set all elements to a random decimal value between 0 and 3, inclusive.

### Add layer

Add a layer using the specified number of xforms.

A layer is defined as a new set of xforms whose xaos values are the following:

From existing to existing: unchanged

From existing to new: 0

From new to existing: 0

From new to new: 1

### Transpose xaos

Swap the row and column values.

### Paste Style

These options govern how xaos values will be treated when xforms are either duplicated, or pasted in from another flame.

None: All values in the new rows and columns will be 1.

0->1: All values before the new square in the bottom right will be 0, and the values within the square will be 1.

0->Vals: All values before the new square in the bottom right will be 0, and the values within the square will be the original xaos values of the xforms being pasted, starting from the top.

1->Vals: All values before the new square in the bottom right will be 1, and the values within the square will be the original xaos values of the xforms being pasted, starting from the top.

Vals->1: All values before the new square in the bottom right will be the original xaos values of the xforms being pasted, and the values within the square will be 1.

### Probability table

This table shows the probability that each xform is selected by having its xform identifier color take up an amount of space equivalent to the percentage chance that it gets chosen on each iteration.

Each column shows this percentage, with xaos applied, coming from each xform.

When xaos is unused (all 1s), all columns are the same.

Adjust the xform weights and the xaos values to receive real-time feedback on how these adjustments affect the xform selection probabilities.

### Applied xaos table

This table shows what the actual xform probabilities will be after the xaos values are multiplied by the xform weights.

Each column shows what the xform probabilities will be when coming from each xform.