26.05.06 Slot Placementv0.1.42 → v0.1.43
Changed in v0.1.43 (2026-04-14): now rotation use degree
→+5 −5
| v0.1.42 | v0.1.43 | ||
|---|---|---|---|
| 63 | } | 63 | } |
| 64 | ``` | 64 | ``` |
| 65 | 65 | ||
| 66 | - `rotationStep` is OPTIONAL and its value MUST be of type `number` and MUST be an integer. `rotationStep` indicates the allowed rotations around `rotationStepAxis` by $\frac{k\,2\pi}{N}$, where $N$ is the integer specified by `rotationStep` and $k$ is an integer that can be specified via `slotOrientationIndex` in `EmbeddingProperties`. A `rotationStep` of zero indicates that smooth rotation is allowed and, in the `Embedding`, the rotation MUST be specified in `rotation`. | 66 | - `rotationStep` is OPTIONAL and its value MUST be of type `number` and MUST be an integer. `rotationStep` indicates the allowed rotations around `rotationStepAxis` by $\frac{k\,360\degree}{N}$, where $N$ is the integer specified by `rotationStep` and $k$ is an integer that can be specified via `slotOrientationIndex` in `EmbeddingProperties`. A `rotationStep` of zero indicates that smooth rotation is allowed and, in the `Embedding`, the rotation MUST be specified in `rotation`. |
| 67 | - `rotationStepAxis` is OPTIONAL and its value MUST be of type `Coordinate`. It specifies the axis around which `rotationStep` rotations are applied. The magnitude of `rotationStepAxis` MUST be ignored; only its direction is used. If not provided, the default axis is the $z$-axis, i.e., `[0, 0, 1]`. | 67 | - `rotationStepAxis` is OPTIONAL and its value MUST be of type `Coordinate`. It specifies the axis around which `rotationStep` rotations are applied. The magnitude of `rotationStepAxis` MUST be ignored; only its direction is used. If not provided, the default axis is the $z$-axis, i.e., `[0, 0, 1]`. |
| 68 | - `eulerStep` is OPTIONAL and its value MUST be an array of type `Euler`. `eulerStep` indicates the allowed Euler rotations. In the `Embedding`, the choice can be specified in `slotOrientationIndex` by the index of an element in `eulerStep`, where the index starts from zero. An empty `eulerStep` array indicates that smooth Euler rotation is allowed and, in the `Embedding`, the rotation MUST be specified in `rotation`. | 68 | - `eulerStep` is OPTIONAL and its value MUST be an array of type `Euler`. `eulerStep` indicates the allowed Euler rotations. In the `Embedding`, the choice can be specified in `slotOrientationIndex` by the index of an element in `eulerStep`, where the index starts from zero. An empty `eulerStep` array indicates that smooth Euler rotation is allowed and, in the `Embedding`, the rotation MUST be specified in `rotation`. |
| 69 | 69 | ||
| 107 | 2. **No `slotRotation` specified.** | 107 | 2. **No `slotRotation` specified.** |
| 108 | If the `Slot` has no `slotRotation`, the rotation of the artifact is zero on all axes. | 108 | If the `Slot` has no `slotRotation`, the rotation of the artifact is zero on all axes. |
| 109 | 3. **`rotationStep` is a non-zero integer $N$.** | 109 | 3. **`rotationStep` is a non-zero integer $N$.** |
| 110 | Allowed rotations are around the axis of `rotationStepAxis` only, from the set $\{\tfrac{k\,2\pi}{N}\mid k\in\mathbb{Z}\}$; | 110 | Allowed rotations are around the axis of `rotationStepAxis` only, from the set $\{\tfrac{k\,360\degree}{N}\mid k\in\mathbb{Z}\}$; |
| 111 | 1. If `slotOrientationIndex` is present and is an integer $k$, set the rotation around `rotationStepAxis` to $\tfrac{k\,2\pi}{N}$. | 111 | 1. If `slotOrientationIndex` is present and is an integer $k$, set the rotation around `rotationStepAxis` to $\tfrac{k\,360\degree}{N}$. |
| 112 | 2. Else if `rotation` is present, round it to the nearest value in rotation around `rotationStepAxis` to $\tfrac{k\,2\pi}{N}$, where “nearest” is the shortest Euclidean distance after wrapping angles on the lattice with basis $\{2\pi\,\hat x,2\pi\,\hat y,2\pi\,\hat z\}$. If exactly between two options, select the one with larger $k$. | 112 | 2. Else if `rotation` is present, round it to the nearest value in rotation around `rotationStepAxis` to $\tfrac{k\,360\degree}{N}$, where “nearest” is the shortest Euclidean distance after wrapping angles on the lattice with basis $\{360\degree\,\hat x,360\degree\,\hat y,360\degree\,\hat z\}$. If exactly between two options, select the one with larger $k$. |
| 113 | 3. Else set the $z$ rotation to 0. | 113 | 3. Else set the $z$ rotation to 0. |
| 114 | 4. **`rotationStep` is zero.** | 114 | 4. **`rotationStep` is zero.** |
| 115 | A smooth rotation around `rotationStepAxis` is allowed. | 115 | A smooth rotation around `rotationStepAxis` is allowed. |
| 116 | - If `rotation` is present, use it. | 116 | - If `rotation` is present, use it. |
| 117 | - Otherwise set the rotation around `rotationStepAxis` to 0. | 117 | - Otherwise set the rotation around `rotationStepAxis` to 0. |
| 118 | 5. **`eulerStep` is a non-empty array.** | 118 | 5. **`eulerStep` is a non-empty array.** |
| 119 | Allowed rotations are the Euler triples listed in `eulerStep`. | 119 | Allowed rotations are the Euler triples listed in `eulerStep`. |
| 120 | 1. If `slotOrientationIndex` is present and is an integer, select the Euler triple at that index; if the index exceeds the array length, select the first element (index 0). | 120 | 1. If `slotOrientationIndex` is present and is an integer, select the Euler triple at that index; if the index exceeds the array length, select the first element (index 0). |
| 121 | 2. Else if `rotation` is present, select the nearest Euler triple from `eulerStep`, where “nearest” is the shortest Euclidean distance after wrapping angles on the lattice with basis $\{2\pi\,\hat x,2\pi\,\hat y,2\pi\,\hat z\}$. If exactly between two options, select the one with the smaller array index. | 121 | 2. Else if `rotation` is present, select the nearest Euler triple from `eulerStep`, where “nearest” is the shortest Euclidean distance after wrapping angles on the lattice with basis $\{360\degree\,\hat x,360\degree\,\hat y,360\degree\,\hat z\}$. If exactly between two options, select the one with the smaller array index. |
| 122 | 3. Else select the first element (index 0) of `eulerStep`. | 122 | 3. Else select the first element (index 0) of `eulerStep`. |
| 123 | 6. **`eulerStep` is an empty array.** | 123 | 6. **`eulerStep` is an empty array.** |
| 124 | A smooth Euler rotation is allowed. | 124 | A smooth Euler rotation is allowed. |
| 125 | - If `rotation` is present, use it. | 125 | - If `rotation` is present, use it. |
| 126 | - Otherwise the rotation is zero on each axis. | 126 | - Otherwise the rotation is zero on each axis. |