# `IDefaultView`

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

Interface · `import type { IDefaultView } from '@holostep-configurators/runtime-client/contract';` · stable · since 2.0.0 · section 21. Stored data (vendored; replaces @holo/interfaces)

Stored angles are degrees. The runtime never reads a stored view, as in 1.4, where only the debug
tools copy one: a scene write never moves the camera, and the app passes the view to
[`camera.set`](Camera.set.md). [`position`](IDefaultView.position.md) only echoes the same camera. [`cameraViewFromStored`](cameraViewFromStored.md) converts one for
[`camera.set`](Camera.set.md). An app whose view helper let a stored [`position`](IDefaultView.position.md) win (the template's
`cameraViewFor`) converts it as that helper did and keeps [`focalOffset`](IDefaultView.focalOffset.md), as [`cameraViewFromStored`](cameraViewFromStored.md) does: with d = position −
target, `azimuthDeg` = atan2(d.x, d.z), `polarDeg` = atan2(hypot(d.x, d.z), d.y), in degrees,
and `distance` = hypot(d.x, d.y, d.z), a [`CameraView`](CameraView.md) for [`camera.set`](Camera.set.md). A [`LookAtView`](LookAtView.md) zeroes
[`focalOffset`](IDefaultView.focalOffset.md), so pass `{ position, target }` only for a stored view without one.

## Members

| Member | Kind | Summary |
| --- | --- | --- |
| <a id="target"></a>[`target`](IDefaultView.target.md) | property | The orbit target, metres. |
| <a id="azimuth"></a>[`azimuth`](IDefaultView.azimuth.md) | property | Degrees, as [`CameraView.azimuthDeg`](CameraView.azimuthDeg.md). |
| <a id="polar"></a>[`polar`](IDefaultView.polar.md) | property | Degrees, as [`CameraView.polarDeg`](CameraView.polarDeg.md). |
| <a id="radius"></a>[`radius`](IDefaultView.radius.md) | property | Metres from the target, as [`CameraView.distance`](CameraView.distance.md). |
| <a id="position"></a>[`position?`](IDefaultView.position.md) | property | An echo of the camera position; ignored by the runtime (see above). |
| <a id="focaloffset"></a>[`focalOffset?`](IDefaultView.focalOffset.md) | property | Metres, as [`CameraView.focalOffset`](CameraView.focalOffset.md). |

## Declaration

```ts
export interface IDefaultView {
  target: Point3;
  azimuth: number;
  polar: number;
  radius: number;
  position?: Point3;
  focalOffset?: Point3;
}
```

## Generic-API test (spec 3.1)

| Rule | Result |
| --- | --- |
| 1. Neutral name | pass: `IDefaultView` names no product |
| 2. A precedent | not recorded: no ledger row (coverage.json) names this member or its owner |
| 3. Two apps, or labs | pass: 23 apps (fleet cross-check: app-04c2774145, app-0c773a4ee3, app-37356bf09f, app-378d190f1b, app-4762caacdc, app-4fd23bc869, app-59c5b5751e, app-822bb9d6aa and 15 more) |
| 4. The cheaper fix first | not recorded per member (Appendix B decides it per need) |
