> For the complete documentation index, see [llms.txt](https://todepond.gitbook.io/spacetode/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://todepond.gitbook.io/spacetode/symmetries.md).

# Symmetries

Symmetries are sets of translations that transform your diagrams into other shapes.\
Symmetries can be any combination of `x`, `y` and `z` in order.\
eg: `xz`\
eg: `xyz`\
eg: `y`

A symmetry includes all possible variations of its axes.\
For example, `xy` includes all possible variations of `x` and `y` .\
They could flip over, swap around, etc...

**Note: When using the `xyz` symmetry, you must choose a subset (see below).**

## Subsets

You can also use certain subsets of symmetries.\
Symmetries have these properties, which let you access subsets:

* `directions` (only points your diagram in different directions - does not rotate)
* `rotations` (only rotates your diagram - does not reflect)
* `shifts` (only points your diagram in different directions and then rotates around those directions - does not do any other rotations or reflections)
* `swaps` (only swaps the axes with each other)

For example, this element would move in a random `xyz` direction (6 possible directions):

```
any(xyz.directions) @_ => _@
```

This would have 12 transformations:

```
any(xyz.shifts) {
    @  => _
     _     @
}
```
