@math.gl/culling 3.6.0-alpha.3 → 3.6.0-alpha.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/dist/es5/lib/algorithms/compute-eigen-decomposition.js.map +1 -1
  2. package/dist/es5/lib/bounding-volumes/axis-aligned-bounding-box.js.map +1 -1
  3. package/dist/es5/lib/bounding-volumes/oriented-bounding-box.js.map +1 -1
  4. package/dist/es5/lib/perspective-frustum.js +63 -58
  5. package/dist/es5/lib/perspective-frustum.js.map +1 -1
  6. package/dist/es5/lib/perspective-off-center-frustum.js +51 -51
  7. package/dist/es5/lib/perspective-off-center-frustum.js.map +1 -1
  8. package/dist/es5/lib/plane.js.map +1 -1
  9. package/dist/esm/lib/algorithms/compute-eigen-decomposition.js.map +1 -1
  10. package/dist/esm/lib/bounding-volumes/axis-aligned-bounding-box.js.map +1 -1
  11. package/dist/esm/lib/bounding-volumes/oriented-bounding-box.js.map +1 -1
  12. package/dist/esm/lib/perspective-frustum.js +60 -55
  13. package/dist/esm/lib/perspective-frustum.js.map +1 -1
  14. package/dist/esm/lib/perspective-off-center-frustum.js +48 -46
  15. package/dist/esm/lib/perspective-off-center-frustum.js.map +1 -1
  16. package/dist/esm/lib/plane.js.map +1 -1
  17. package/dist/lib/bounding-volumes/axis-aligned-bounding-box.d.ts +1 -1
  18. package/dist/lib/bounding-volumes/axis-aligned-bounding-box.d.ts.map +1 -1
  19. package/dist/lib/bounding-volumes/oriented-bounding-box.d.ts +2 -2
  20. package/dist/lib/bounding-volumes/oriented-bounding-box.d.ts.map +1 -1
  21. package/dist/lib/perspective-frustum.d.ts +52 -40
  22. package/dist/lib/perspective-frustum.d.ts.map +1 -1
  23. package/dist/lib/perspective-frustum.js +81 -96
  24. package/dist/lib/perspective-off-center-frustum.d.ts +74 -38
  25. package/dist/lib/perspective-off-center-frustum.d.ts.map +1 -1
  26. package/dist/lib/perspective-off-center-frustum.js +64 -99
  27. package/dist/lib/plane.d.ts +8 -8
  28. package/dist/lib/plane.d.ts.map +1 -1
  29. package/package.json +3 -3
  30. package/src/lib/algorithms/compute-eigen-decomposition.ts +3 -3
  31. package/src/lib/bounding-volumes/axis-aligned-bounding-box.ts +2 -2
  32. package/src/lib/bounding-volumes/oriented-bounding-box.ts +2 -2
  33. package/src/lib/perspective-frustum.ts +115 -118
  34. package/src/lib/perspective-off-center-frustum.ts +137 -131
  35. package/src/lib/plane.ts +11 -8
@@ -3,8 +3,7 @@
3
3
  // Note: This class is still an experimental export, mainly used by other test cases
4
4
  // - It has not been fully adapted to math.gl conventions
5
5
  // - Documentation has not been ported
6
- // @ts-nocheck
7
- import { assert } from '@math.gl/core';
6
+ import { assert, Vector2 } from '@math.gl/core';
8
7
  import PerspectiveOffCenterFrustum from './perspective-off-center-frustum';
9
8
  const defined = (val) => val !== null && typeof val !== 'undefined';
10
9
  /**
@@ -14,15 +13,6 @@ const defined = (val) => val !== null && typeof val !== 'undefined';
14
13
  * plane from the origin/camera position.
15
14
  *
16
15
  * @alias PerspectiveFrustum
17
- * @constructor
18
- *
19
- * @param {Object} [options] An object with the following properties:
20
- * @param {Number} [options.fov] The angle of the field of view (FOV), in radians.
21
- * @param {Number} [options.aspectRatio] The aspect ratio of the frustum's width to it's height.
22
- * @param {Number} [options.near=1.0] The distance of the near plane.
23
- * @param {Number} [options.far=500000000.0] The distance of the far plane.
24
- * @param {Number} [options.xOffset=0.0] The offset in the x direction.
25
- * @param {Number} [options.yOffset=0.0] The offset in the y direction.
26
16
  *
27
17
  * @example
28
18
  * var frustum = new PerspectiveFrustum({
@@ -37,23 +27,13 @@ const defined = (val) => val !== null && typeof val !== 'undefined';
37
27
  export default class PerspectiveFrustum {
38
28
  constructor(options = {}) {
39
29
  this._offCenterFrustum = new PerspectiveOffCenterFrustum();
40
- options = {
41
- near: 1.0,
42
- far: 500000000.0,
43
- xOffset: 0.0,
44
- yOffset: 0.0,
45
- ...options
46
- };
47
- this.fov = options.fov;
48
- this.aspectRatio = options.aspectRatio;
49
- this.near = options.near;
50
- this._near = this.near;
51
- this.far = options.far;
52
- this._far = this.far;
53
- this.xOffset = options.xOffset;
54
- this._xOffset = this.xOffset;
55
- this.yOffset = options.yOffset;
56
- this._yOffset = this.yOffset;
30
+ const { fov, aspectRatio, near = 1.0, far = 500000000.0, xOffset = 0.0, yOffset = 0.0 } = options;
31
+ this.fov = fov;
32
+ this.aspectRatio = aspectRatio;
33
+ this.near = near;
34
+ this.far = far;
35
+ this.xOffset = xOffset;
36
+ this.yOffset = yOffset;
57
37
  }
58
38
  /**
59
39
  * Returns a duplicate of a PerspectiveFrustum instance.
@@ -74,8 +54,8 @@ export default class PerspectiveFrustum {
74
54
  if (!defined(other) || !(other instanceof PerspectiveFrustum)) {
75
55
  return false;
76
56
  }
77
- update(this);
78
- update(other);
57
+ this._update();
58
+ other._update();
79
59
  return (this.fov === other.fov &&
80
60
  this.aspectRatio === other.aspectRatio &&
81
61
  this.near === other.near &&
@@ -83,57 +63,54 @@ export default class PerspectiveFrustum {
83
63
  this._offCenterFrustum.equals(other._offCenterFrustum));
84
64
  }
85
65
  /**
86
- * Gets the perspective projection matrix computed from the view frustum.
66
+ * Gets the perspective projection matrix computed from the view this.
87
67
  */
88
68
  get projectionMatrix() {
89
- update(this);
69
+ this._update();
90
70
  return this._offCenterFrustum.projectionMatrix;
91
71
  }
92
72
  /**
93
73
  * The perspective projection matrix computed from the view frustum with an infinite far plane.
94
74
  */
95
75
  get infiniteProjectionMatrix() {
96
- update(this);
76
+ this._update();
97
77
  return this._offCenterFrustum.infiniteProjectionMatrix;
98
78
  }
99
79
  /**
100
80
  * Gets the angle of the vertical field of view, in radians.
101
81
  */
102
82
  get fovy() {
103
- update(this);
83
+ this._update();
104
84
  return this._fovy;
105
85
  }
106
86
  /**
107
87
  * @private
108
88
  */
109
89
  get sseDenominator() {
110
- update(this);
90
+ this._update();
111
91
  return this._sseDenominator;
112
92
  }
113
93
  /**
114
- * Creates a culling volume for this frustum.
115
- *
116
- * @param {Vector3} position The eye position.
117
- * @param {Vector3} direction The view direction.
118
- * @param {Vector3} up The up direction.
94
+ * Creates a culling volume for this this.ion.
119
95
  * @returns {CullingVolume} A culling volume at the given position and orientation.
120
96
  *
121
97
  * @example
122
- * // Check if a bounding volume intersects the frustum.
123
- * var cullingVolume = frustum.computeCullingVolume(cameraPosition, cameraDirection, cameraUp);
98
+ * // Check if a bounding volume intersects the this.
99
+ * var cullingVolume = this.computeCullingVolume(cameraPosition, cameraDirection, cameraUp);
124
100
  * var intersect = cullingVolume.computeVisibility(boundingVolume);
125
101
  */
126
- computeCullingVolume(position, direction, up) {
127
- update(this);
102
+ computeCullingVolume(
103
+ /** A Vector3 defines the eye position. */
104
+ position,
105
+ /** A Vector3 defines the view direction. */
106
+ direction,
107
+ /** A Vector3 defines the up direction. */
108
+ up) {
109
+ this._update();
128
110
  return this._offCenterFrustum.computeCullingVolume(position, direction, up);
129
111
  }
130
112
  /**
131
113
  * Returns the pixel's width and height in meters.
132
- *
133
- * @param {Number} drawingBufferWidth The width of the drawing buffer.
134
- * @param {Number} drawingBufferHeight The height of the drawing buffer.
135
- * @param {Number} distance The distance to the near plane in meters.
136
- * @param {Vector2} result The object onto which to store the result.
137
114
  * @returns {Vector2} The modified result parameter or a new instance of {@link Vector2} with the pixel's width and height in the x and y properties, respectively.
138
115
  *
139
116
  * @exception {DeveloperError} drawingBufferWidth must be greater than zero.
@@ -142,7 +119,7 @@ export default class PerspectiveFrustum {
142
119
  * @example
143
120
  * // Example 1
144
121
  * // Get the width and height of a pixel.
145
- * var pixelSize = camera.frustum.getPixelDimensions(scene.drawingBufferWidth, scene.drawingBufferHeight, 1.0, new Vector2());
122
+ * var pixelSize = camera.this.getPixelDimensions(scene.drawingBufferWidth, scene.drawingBufferHeight, 1.0, new Vector2());
146
123
  *
147
124
  * @example
148
125
  * // Example 2
@@ -153,53 +130,61 @@ export default class PerspectiveFrustum {
153
130
  * var toCenter = Vector3.subtract(primitive.boundingVolume.center, position, new Vector3()); // vector from camera to a primitive
154
131
  * var toCenterProj = Vector3.multiplyByScalar(direction, Vector3.dot(direction, toCenter), new Vector3()); // project vector onto camera direction vector
155
132
  * var distance = Vector3.magnitude(toCenterProj);
156
- * var pixelSize = camera.frustum.getPixelDimensions(scene.drawingBufferWidth, scene.drawingBufferHeight, distance, new Vector2());
133
+ * var pixelSize = camera.this.getPixelDimensions(scene.drawingBufferWidth, scene.drawingBufferHeight, distance, new Vector2());
157
134
  */
158
- getPixelDimensions(drawingBufferWidth, drawingBufferHeight, distance, result) {
159
- update(this);
160
- return this._offCenterFrustum.getPixelDimensions(drawingBufferWidth, drawingBufferHeight, distance, result);
135
+ getPixelDimensions(
136
+ /** The width of the drawing buffer. */
137
+ drawingBufferWidth,
138
+ /** The height of the drawing buffer. */
139
+ drawingBufferHeight,
140
+ /** The distance to the near plane in meters. */
141
+ distance,
142
+ /** The object onto which to store the result. */
143
+ result) {
144
+ this._update();
145
+ return this._offCenterFrustum.getPixelDimensions(drawingBufferWidth, drawingBufferHeight, distance, result || new Vector2());
161
146
  }
162
- }
163
- // eslint-disable-next-line complexity, max-statements
164
- function update(frustum) {
165
- assert(Number.isFinite(frustum.fov) &&
166
- Number.isFinite(frustum.aspectRatio) &&
167
- Number.isFinite(frustum.near) &&
168
- Number.isFinite(frustum.far));
169
- // 'fov, aspectRatio, near, or far parameters are not set.'
170
- const f = frustum._offCenterFrustum;
171
- if (frustum.fov !== frustum._fov ||
172
- frustum.aspectRatio !== frustum._aspectRatio ||
173
- frustum.near !== frustum._near ||
174
- frustum.far !== frustum._far ||
175
- frustum.xOffset !== frustum._xOffset ||
176
- frustum.yOffset !== frustum._yOffset) {
177
- assert(frustum.fov >= 0 && frustum.fov < Math.PI);
178
- // throw new DeveloperError('fov must be in the range [0, PI).');
179
- assert(frustum.aspectRatio > 0);
180
- // throw new DeveloperError('aspectRatio must be positive.');
181
- assert(frustum.near >= 0 && frustum.near < frustum.far);
182
- // throw new DeveloperError('near must be greater than zero and less than far.');
183
- frustum._aspectRatio = frustum.aspectRatio;
184
- frustum._fov = frustum.fov;
185
- frustum._fovy =
186
- frustum.aspectRatio <= 1
187
- ? frustum.fov
188
- : Math.atan(Math.tan(frustum.fov * 0.5) / frustum.aspectRatio) * 2.0;
189
- frustum._near = frustum.near;
190
- frustum._far = frustum.far;
191
- frustum._sseDenominator = 2.0 * Math.tan(0.5 * frustum._fovy);
192
- frustum._xOffset = frustum.xOffset;
193
- frustum._yOffset = frustum.yOffset;
194
- f.top = frustum.near * Math.tan(0.5 * frustum._fovy);
195
- f.bottom = -f.top;
196
- f.right = frustum.aspectRatio * f.top;
197
- f.left = -f.right;
198
- f.near = frustum.near;
199
- f.far = frustum.far;
200
- f.right += frustum.xOffset;
201
- f.left += frustum.xOffset;
202
- f.top += frustum.yOffset;
203
- f.bottom += frustum.yOffset;
147
+ // eslint-disable-next-line complexity, max-statements
148
+ _update() {
149
+ assert(Number.isFinite(this.fov) &&
150
+ Number.isFinite(this.aspectRatio) &&
151
+ Number.isFinite(this.near) &&
152
+ Number.isFinite(this.far));
153
+ // 'fov, aspectRatio, near, or far parameters are not set.'
154
+ const f = this._offCenterFrustum;
155
+ if (this.fov !== this._fov ||
156
+ this.aspectRatio !== this._aspectRatio ||
157
+ this.near !== this._near ||
158
+ this.far !== this._far ||
159
+ this.xOffset !== this._xOffset ||
160
+ this.yOffset !== this._yOffset) {
161
+ assert(this.fov >= 0 && this.fov < Math.PI);
162
+ // throw new DeveloperError('fov must be in the range [0, PI).');
163
+ assert(this.aspectRatio > 0);
164
+ // throw new DeveloperError('aspectRatio must be positive.');
165
+ assert(this.near >= 0 && this.near < this.far);
166
+ // throw new DeveloperError('near must be greater than zero and less than far.');
167
+ this._aspectRatio = this.aspectRatio;
168
+ this._fov = this.fov;
169
+ this._fovy =
170
+ this.aspectRatio <= 1
171
+ ? this.fov
172
+ : Math.atan(Math.tan(this.fov * 0.5) / this.aspectRatio) * 2.0;
173
+ this._near = this.near;
174
+ this._far = this.far;
175
+ this._sseDenominator = 2.0 * Math.tan(0.5 * this._fovy);
176
+ this._xOffset = this.xOffset;
177
+ this._yOffset = this.yOffset;
178
+ f.top = this.near * Math.tan(0.5 * this._fovy);
179
+ f.bottom = -f.top;
180
+ f.right = this.aspectRatio * f.top;
181
+ f.left = -f.right;
182
+ f.near = this.near;
183
+ f.far = this.far;
184
+ f.right += this.xOffset;
185
+ f.left += this.xOffset;
186
+ f.top += this.yOffset;
187
+ f.bottom += this.yOffset;
188
+ }
204
189
  }
205
190
  }
@@ -1,21 +1,59 @@
1
- import { Matrix4 } from '@math.gl/core';
1
+ import { Vector2, Matrix4, NumericArray } from '@math.gl/core';
2
2
  import CullingVolume from './culling-volume';
3
+ declare type PerspectiveOffCenterFrustumOptions = {
4
+ left?: number;
5
+ right?: number;
6
+ top?: number;
7
+ bottom?: number;
8
+ near?: number;
9
+ far?: number;
10
+ };
3
11
  export default class PerspectiveOffCenterFrustum {
4
- left: any;
5
- _left: any;
6
- right: any;
7
- _right: any;
8
- top: any;
9
- _top: any;
10
- bottom: any;
11
- _bottom: any;
12
- near: any;
13
- _near: any;
14
- far: any;
15
- _far: any;
16
- _cullingVolume: CullingVolume;
17
- _perspectiveMatrix: Matrix4;
18
- _infinitePerspective: Matrix4;
12
+ /**
13
+ * Defines the left clipping plane.
14
+ * @type {Number}
15
+ * @default undefined
16
+ */
17
+ left?: number;
18
+ private _left?;
19
+ /**
20
+ * Defines the right clipping plane.
21
+ * @type {Number}
22
+ * @default undefined
23
+ */
24
+ right?: number;
25
+ private _right?;
26
+ /**
27
+ * Defines the top clipping plane.
28
+ * @type {Number}
29
+ * @default undefined
30
+ */
31
+ top?: number;
32
+ private _top?;
33
+ /**
34
+ * Defines the bottom clipping plane.
35
+ * @type {Number}
36
+ * @default undefined
37
+ */
38
+ bottom?: number;
39
+ private _bottom?;
40
+ /**
41
+ * The distance of the near plane.
42
+ * @type {Number}
43
+ * @default 1.0
44
+ */
45
+ near: number;
46
+ private _near;
47
+ /**
48
+ * The distance of the far plane.
49
+ * @type {Number}
50
+ * @default 500000000.0
51
+ */
52
+ far: number;
53
+ private _far;
54
+ private _cullingVolume;
55
+ private _perspectiveMatrix;
56
+ private _infinitePerspective;
19
57
  /**
20
58
  * The viewing frustum is defined by 6 planes.
21
59
  * Each plane is represented by a {@link Vector4} object, where the x, y, and z components
@@ -23,15 +61,6 @@ export default class PerspectiveOffCenterFrustum {
23
61
  * plane from the origin/camera position.
24
62
  *
25
63
  * @alias PerspectiveOffCenterFrustum
26
- * @constructor
27
- *
28
- * @param {Object} [options] An object with the following properties:
29
- * @param {Number} [options.left] The left clipping plane distance.
30
- * @param {Number} [options.right] The right clipping plane distance.
31
- * @param {Number} [options.top] The top clipping plane distance.
32
- * @param {Number} [options.bottom] The bottom clipping plane distance.
33
- * @param {Number} [options.near=1.0] The near clipping plane distance.
34
- * @param {Number} [options.far=500000000.0] The far clipping plane distance.
35
64
  *
36
65
  * @example
37
66
  * const frustum = new PerspectiveOffCenterFrustum({
@@ -45,7 +74,7 @@ export default class PerspectiveOffCenterFrustum {
45
74
  *
46
75
  * @see PerspectiveFrustum
47
76
  */
48
- constructor(options?: Record<string, any>);
77
+ constructor(options?: PerspectiveOffCenterFrustumOptions);
49
78
  /**
50
79
  * Returns a duplicate of a PerspectiveOffCenterFrustum instance.
51
80
  * @returns {PerspectiveOffCenterFrustum} A new PerspectiveFrustum instance.
@@ -55,10 +84,9 @@ export default class PerspectiveOffCenterFrustum {
55
84
  * Compares the provided PerspectiveOffCenterFrustum componentwise and returns
56
85
  * <code>true</code> if they are equal, <code>false</code> otherwise.
57
86
  *
58
- * @param {PerspectiveOffCenterFrustum} [other] The right hand side PerspectiveOffCenterFrustum.
59
87
  * @returns {Boolean} <code>true</code> if they are equal, <code>false</code> otherwise.
60
88
  */
61
- equals(other: any): boolean;
89
+ equals(other: PerspectiveOffCenterFrustum): boolean;
62
90
  /**
63
91
  * Gets the perspective projection matrix computed from the view frustum.
64
92
  * @memberof PerspectiveOffCenterFrustum.prototype
@@ -77,10 +105,6 @@ export default class PerspectiveOffCenterFrustum {
77
105
  get infiniteProjectionMatrix(): Matrix4;
78
106
  /**
79
107
  * Creates a culling volume for this frustum.
80
- *
81
- * @param {Vector3} position The eye position.
82
- * @param {Vector3} direction The view direction.
83
- * @param {Vector3} up The up direction.
84
108
  * @returns {CullingVolume} A culling volume at the given position and orientation.
85
109
  *
86
110
  * @example
@@ -88,14 +112,16 @@ export default class PerspectiveOffCenterFrustum {
88
112
  * const cullingVolume = frustum.computeCullingVolume(cameraPosition, cameraDirection, cameraUp);
89
113
  * const intersect = cullingVolume.computeVisibility(boundingVolume);
90
114
  */
91
- computeCullingVolume(position: any, direction: any, up: any): CullingVolume;
115
+ computeCullingVolume(
116
+ /** A Vector3 defines the eye position. */
117
+ position: Readonly<NumericArray>,
118
+ /** A Vector3 defines the view direction. */
119
+ direction: Readonly<NumericArray>,
120
+ /** A Vector3 defines the up direction. */
121
+ up: Readonly<NumericArray>): CullingVolume;
92
122
  /**
93
123
  * Returns the pixel's width and height in meters.
94
124
  *
95
- * @param {Number} drawingBufferWidth The width of the drawing buffer.
96
- * @param {Number} drawingBufferHeight The height of the drawing buffer.
97
- * @param {Number} distance The distance to the near plane in meters.
98
- * @param {Vector2} result The object onto which to store the result.
99
125
  * @returns {Vector2} The modified result parameter or a new instance of {@link Vector2} with the pixel's width and height in the x and y properties, respectively.
100
126
  *
101
127
  * @exception {DeveloperError} drawingBufferWidth must be greater than zero.
@@ -117,6 +143,16 @@ export default class PerspectiveOffCenterFrustum {
117
143
  * const distance = Vector3.magnitude(toCenterProj);
118
144
  * const pixelSize = camera.frustum.getPixelDimensions(scene.drawingBufferWidth, scene.drawingBufferHeight, distance, new Vector2());
119
145
  */
120
- getPixelDimensions(drawingBufferWidth: any, drawingBufferHeight: any, distance: any, result: any): any;
146
+ getPixelDimensions(
147
+ /** The width of the drawing buffer. */
148
+ drawingBufferWidth: number,
149
+ /** The height of the drawing buffer. */
150
+ drawingBufferHeight: number,
151
+ /** The distance to the near plane in meters. */
152
+ distance: number,
153
+ /** The object onto which to store the result. */
154
+ result: Vector2): Vector2;
155
+ private _update;
121
156
  }
157
+ export {};
122
158
  //# sourceMappingURL=perspective-off-center-frustum.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"perspective-off-center-frustum.d.ts","sourceRoot":"","sources":["../../src/lib/perspective-off-center-frustum.ts"],"names":[],"mappings":"AASA,OAAO,EAAU,OAAO,EAAS,MAAM,eAAe,CAAC;AACvD,OAAO,aAAa,MAAM,kBAAkB,CAAC;AAS7C,MAAM,CAAC,OAAO,OAAO,2BAA2B;IAC9C,IAAI,MAAC;IACL,KAAK,MAAC;IACN,KAAK,MAAC;IACN,MAAM,MAAC;IACP,GAAG,MAAC;IACJ,IAAI,MAAC;IACL,MAAM,MAAC;IACP,OAAO,MAAC;IACR,IAAI,MAAC;IACL,KAAK,MAAC;IACN,GAAG,MAAC;IACJ,IAAI,MAAC;IACL,cAAc,gBAOX;IACH,kBAAkB,UAAiB;IACnC,oBAAoB,UAAiB;IAErC;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;gBACS,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM;IAoD7C;;;SAGK;IACL,KAAK;IAWL;;;;;;OAMG;IACH,MAAM,CAAC,KAAK,KAAA;IAaZ;;;;;;OAMG;IACH,IAAI,gBAAgB,YAGnB;IAED;;;;;;OAMG;IACH,IAAI,wBAAwB,YAG3B;IAED;;;;;;;;;;;;OAYG;IAEH,oBAAoB,CAAC,QAAQ,KAAA,EAAE,SAAS,KAAA,EAAE,EAAE,KAAA;IAmE5C;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACH,kBAAkB,CAAC,kBAAkB,KAAA,EAAE,mBAAmB,KAAA,EAAE,QAAQ,KAAA,EAAE,MAAM,KAAA;CAwB7E"}
1
+ {"version":3,"file":"perspective-off-center-frustum.d.ts","sourceRoot":"","sources":["../../src/lib/perspective-off-center-frustum.ts"],"names":[],"mappings":"AAOA,OAAO,EAAU,OAAO,EAAE,OAAO,EAAU,YAAY,EAAC,MAAM,eAAe,CAAC;AAC9E,OAAO,aAAa,MAAM,kBAAkB,CAAC;AAS7C,aAAK,kCAAkC,GAAG;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,2BAA2B;IAC9C;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,KAAK,CAAC,CAAS;IACvB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB;;;;OAIG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,IAAI,CAAC,CAAS;IACtB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,OAAO,CAAC,CAAS;IACzB;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,KAAK,CAAS;IACtB;;;;OAIG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,IAAI,CAAS;IAErB,OAAO,CAAC,cAAc,CAOnB;IACH,OAAO,CAAC,kBAAkB,CAAiB;IAC3C,OAAO,CAAC,oBAAoB,CAAiB;IAE7C;;;;;;;;;;;;;;;;;;;OAmBG;gBACS,OAAO,GAAE,kCAAuC;IAsB5D;;;SAGK;IACL,KAAK,IAAI,2BAA2B;IAWpC;;;;;OAKG;IACH,MAAM,CAAC,KAAK,EAAE,2BAA2B,GAAG,OAAO;IAanD;;;;;;OAMG;IACH,IAAI,gBAAgB,IAAI,OAAO,CAG9B;IAED;;;;;;OAMG;IACH,IAAI,wBAAwB,IAAI,OAAO,CAGtC;IAED;;;;;;;;OAQG;IAEH,oBAAoB;IAClB,0CAA0C;IAC1C,QAAQ,EAAE,QAAQ,CAAC,YAAY,CAAC;IAChC,4CAA4C;IAC5C,SAAS,EAAE,QAAQ,CAAC,YAAY,CAAC;IACjC,0CAA0C;IAC1C,EAAE,EAAE,QAAQ,CAAC,YAAY,CAAC,GACzB,aAAa;IAmEhB;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,kBAAkB;IAChB,uCAAuC;IACvC,kBAAkB,EAAE,MAAM;IAC1B,wCAAwC;IACxC,mBAAmB,EAAE,MAAM;IAC3B,gDAAgD;IAChD,QAAQ,EAAE,MAAM;IAChB,iDAAiD;IACjD,MAAM,EAAE,OAAO,GACd,OAAO;IA0BV,OAAO,CAAC,OAAO;CAkDhB"}