# `math.quat`

> Contract 2.0.0 · package sha256 `a857eca95b35921109faf997094bb4192f12527d9d0fcd4be7e97f06425bad6e` · generated from `math.d.ts` by `services/onsite-scripter/scripts/build-contract-docs.mjs`; edit the source, not this file.

Const · `import { quat } from '@holostep-configurators/runtime-client/math';` · stable · since 2.0.0 · section 23. /math

Unit quaternions.

## Members

| Member | Kind | Summary |
| --- | --- | --- |
| <a id="identity"></a>[`identity`](math.quat.identity.md) | method | No rotation. |
| <a id="fromeulerdeg"></a>[`fromEulerDeg`](math.quat.fromEulerDeg.md) | method | From degrees, intrinsic X then Y then Z (as `rotationDeg`). |
| <a id="toeulerdeg"></a>[`toEulerDeg`](math.quat.toEulerDeg.md) | method | To degrees, intrinsic X then Y then Z. |
| <a id="fromaxisangledeg"></a>[`fromAxisAngleDeg`](math.quat.fromAxisAngleDeg.md) | method | A rotation of `deg` degrees about `axis` (any length); a zero-length axis returns the identity. |
| <a id="fromunitvectors"></a>[`fromUnitVectors`](math.quat.fromUnitVectors.md) | method | The shortest rotation from one unit vector to another. |
| <a id="multiply"></a>[`multiply`](math.quat.multiply.md) | method | The product a × b: b applies first, then a. |
| <a id="invert"></a>[`invert`](math.quat.invert.md) | method | The opposite rotation. |

## Declaration

```ts
export const quat: {
  identity(): Quat;
  fromEulerDeg(e: Point3): Quat;
  toEulerDeg(q: Quat): Point3;
  fromAxisAngleDeg(axis: Point3, deg: number): Quat;
  fromUnitVectors(from: Point3, to: Point3): Quat;
  multiply(a: Quat, b: Quat): Quat;
  invert(q: Quat): Quat;
};
```

## Generic-API test (spec 3.1)

| Rule | Result |
| --- | --- |
| 1. Neutral name | pass: `quat` names no product |
| 2. A precedent | not recorded: no ledger row (coverage.json) names this member or its owner |
| 3. Two apps, or labs | not recorded: no ledger row names this member or its owner |
| 4. The cheaper fix first | not recorded per member (Appendix B decides it per need) |
