astro-viewer 3.10.0 → 3.11.0

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.
package/lib-esm/Camera.js CHANGED
@@ -13,7 +13,7 @@
13
13
  */
14
14
  import { vec3, mat4 } from "gl-matrix";
15
15
  import { astroDegToSpherical, cartesianToSpherical, sphericalToCartesian, } from "./utils/Utils.js";
16
- import global from './Global.js';
16
+ import global from "./Global.js";
17
17
  class Camera {
18
18
  insideSphere = false;
19
19
  cam_pos = vec3.create(); // camera position
@@ -32,6 +32,7 @@ class Camera {
32
32
  lockRotX = false;
33
33
  lockRotY = false;
34
34
  lockRotZ = false;
35
+ flyToAnimation = null;
35
36
  constructor(in_position, in_sphere) {
36
37
  this.init(in_position, in_sphere);
37
38
  }
@@ -41,7 +42,11 @@ class Camera {
41
42
  this.vMatrix = mat4.create();
42
43
  this.T = mat4.create();
43
44
  this.R = mat4.create();
44
- mat4.translate(this.T, this.T, [this.cam_pos[0], this.cam_pos[1], this.cam_pos[2]]);
45
+ mat4.translate(this.T, this.T, [
46
+ this.cam_pos[0],
47
+ this.cam_pos[1],
48
+ this.cam_pos[2],
49
+ ]);
45
50
  // reset helpers
46
51
  this.FoV = this.previousFoV = 180.0;
47
52
  this.move = vec3.clone([0, 0, 0]);
@@ -50,11 +55,15 @@ class Camera {
50
55
  this.goTo(raDeg, decDeg);
51
56
  }
52
57
  goTo(raDeg, decDeg) {
58
+ this.cancelFlyTo();
53
59
  this.goToPhiTheta(astroDegToSpherical(raDeg, decDeg));
54
60
  }
55
61
  goToPhiTheta(ptDeg) {
56
62
  const xyz = sphericalToCartesian(ptDeg.phi, ptDeg.theta, this.cam_pos[2]);
57
- const targetDirection = vec3.normalize(vec3.create(), vec3.fromValues(xyz[0], xyz[1], xyz[2]));
63
+ this.applyCameraPosition(vec3.fromValues(xyz[0], xyz[1], xyz[2]));
64
+ }
65
+ applyCameraPosition(cameraPosition) {
66
+ const targetDirection = vec3.normalize(vec3.create(), cameraPosition);
58
67
  const celestialNorth = vec3.fromValues(0.0, 0.0, 1.0);
59
68
  const northProjection = vec3.scale(vec3.create(), targetDirection, vec3.dot(celestialNorth, targetDirection));
60
69
  const cameraUp = vec3.subtract(vec3.create(), celestialNorth, northProjection);
@@ -65,9 +74,13 @@ class Camera {
65
74
  vec3.normalize(cameraUp, cameraUp);
66
75
  }
67
76
  let cameraMatrix = mat4.create();
68
- cameraMatrix = mat4.translate(cameraMatrix, cameraMatrix, vec3.fromValues(xyz[0], xyz[1], xyz[2]));
77
+ cameraMatrix = mat4.translate(cameraMatrix, cameraMatrix, cameraPosition);
69
78
  const focusPoint = [0.0, 0.0, 0.0];
70
- const cameraPos = [cameraMatrix[12], cameraMatrix[13], cameraMatrix[14]];
79
+ const cameraPos = [
80
+ cameraMatrix[12],
81
+ cameraMatrix[13],
82
+ cameraMatrix[14],
83
+ ];
71
84
  cameraMatrix = mat4.targetTo(cameraMatrix, cameraPos, focusPoint, cameraUp);
72
85
  this.R = mat4.clone(cameraMatrix);
73
86
  this.R[12] = 0;
@@ -79,6 +92,81 @@ class Camera {
79
92
  }
80
93
  this.vMatrix = viewMatrix;
81
94
  }
95
+ flyTo(raDeg, decDeg, durationMs = 1200) {
96
+ const targetSpherical = astroDegToSpherical(raDeg, decDeg);
97
+ const targetPositionValues = sphericalToCartesian(targetSpherical.phi, targetSpherical.theta, this.cam_pos[2]);
98
+ const targetPosition = vec3.fromValues(targetPositionValues[0], targetPositionValues[1], targetPositionValues[2]);
99
+ const currentPosition = this.getCameraPosition();
100
+ const startDirection = vec3.normalize(vec3.create(), vec3.fromValues(currentPosition[0], currentPosition[1], currentPosition[2]));
101
+ const targetDirection = vec3.normalize(vec3.create(), targetPosition);
102
+ this.flyToAnimation = {
103
+ startDirection,
104
+ targetDirection,
105
+ targetPosition,
106
+ startTime: performance.now(),
107
+ durationMs: Math.max(1, durationMs),
108
+ };
109
+ }
110
+ updateFlyTo(now) {
111
+ const animation = this.flyToAnimation;
112
+ if (!animation) {
113
+ return false;
114
+ }
115
+ const elapsed = now - animation.startTime;
116
+ const progress = Math.min(1, elapsed / animation.durationMs);
117
+ const easedProgress = progress < 0.5
118
+ ? 4 * progress * progress * progress
119
+ : 1 - Math.pow(-2 * progress + 2, 3) / 2;
120
+ const direction = this.slerpDirection(animation.startDirection, animation.targetDirection, easedProgress);
121
+ const radius = Math.abs(this.cam_pos[2]);
122
+ const cameraPosition = vec3.scale(vec3.create(), direction, radius);
123
+ this.applyCameraPosition(cameraPosition);
124
+ if (progress >= 1) {
125
+ this.applyCameraPosition(animation.targetPosition);
126
+ this.flyToAnimation = null;
127
+ }
128
+ return true;
129
+ }
130
+ slerpDirection(start, end, t) {
131
+ const dot = Math.max(-1, Math.min(1, vec3.dot(start, end)));
132
+ /*
133
+ * For almost identical directions, normalized linear interpolation is
134
+ * numerically more stable than the general SLERP formula.
135
+ */
136
+ if (dot > 0.999999) {
137
+ const result = vec3.lerp(vec3.create(), start, end, t);
138
+ return vec3.normalize(result, result);
139
+ }
140
+ /*
141
+ * The normal SLERP formula becomes singular for antipodal vectors because
142
+ * sin(pi) = 0. In that case choose a stable vector orthogonal to start and
143
+ * rotate through that great circle.
144
+ */
145
+ if (dot < -0.999999) {
146
+ const referenceAxis = Math.abs(start[0]) < 0.9
147
+ ? vec3.fromValues(1, 0, 0)
148
+ : vec3.fromValues(0, 1, 0);
149
+ const orthogonal = vec3.cross(vec3.create(), start, referenceAxis);
150
+ vec3.normalize(orthogonal, orthogonal);
151
+ const angle = Math.PI * t;
152
+ const result = vec3.create();
153
+ vec3.scale(result, start, Math.cos(angle));
154
+ vec3.scaleAndAdd(result, result, orthogonal, Math.sin(angle));
155
+ return vec3.normalize(result, result);
156
+ }
157
+ const angle = Math.acos(dot);
158
+ const sinAngle = Math.sin(angle);
159
+ const startWeight = Math.sin((1 - t) * angle) / sinAngle;
160
+ const endWeight = Math.sin(t * angle) / sinAngle;
161
+ const result = vec3.create();
162
+ result[0] = start[0] * startWeight + end[0] * endWeight;
163
+ result[1] = start[1] * startWeight + end[1] * endWeight;
164
+ result[2] = start[2] * startWeight + end[2] * endWeight;
165
+ return vec3.normalize(result, result);
166
+ }
167
+ cancelFlyTo() {
168
+ this.flyToAnimation = null;
169
+ }
82
170
  toggleInsideSphere() {
83
171
  // if (inside !== global.insideSphere) {
84
172
  // global.insideSphere = inside;
@@ -336,9 +424,15 @@ class Camera {
336
424
  clearRotationLock() {
337
425
  this.lockRotX = this.lockRotY = this.lockRotZ = false;
338
426
  }
339
- isRotationLockedX() { return this.lockRotX; }
340
- isRotationLockedY() { return this.lockRotY; }
341
- isRotationLockedZ() { return this.lockRotZ; }
427
+ isRotationLockedX() {
428
+ return this.lockRotX;
429
+ }
430
+ isRotationLockedY() {
431
+ return this.lockRotY;
432
+ }
433
+ isRotationLockedZ() {
434
+ return this.lockRotZ;
435
+ }
342
436
  }
343
437
  export default Camera;
344
438
  //# sourceMappingURL=Camera.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Camera.js","sourceRoot":"","sources":["../src/Camera.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Camera.js","sourceRoot":"","sources":["../src/Camera.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,14 @@ export interface SourceDetail {
5
5
  valueType?: string;
6
6
  unit?: string;
7
7
  }
8
+ export type SourceMediaKind = 'circle' | 'icon' | 'sprite' | 'image' | 'model';
9
+ export interface SourceMediaStyle {
10
+ kind: SourceMediaKind;
11
+ src?: string;
12
+ scale?: number;
13
+ rotationDeg?: number;
14
+ opacity?: number;
15
+ }
8
16
  export declare class Source {
9
17
  private _point;
10
18
  private _name?;
@@ -12,6 +20,7 @@ export declare class Source {
12
20
  private _h_pix;
13
21
  private _shapesize;
14
22
  private _brightnessFactor;
23
+ private _mediaStyle?;
15
24
  /**
16
25
  * @param in_point Point.js (Cartesian/RA-Dec wrapper)
17
26
  * @param in_details Optional array of key/value metadata
@@ -30,5 +39,7 @@ export declare class Source {
30
39
  * @param factor Must be in [-1..1]
31
40
  */
32
41
  set brightnessFactor(factor: number);
42
+ get mediaStyle(): SourceMediaStyle | undefined;
43
+ set mediaStyle(style: SourceMediaStyle | undefined);
33
44
  }
34
45
  //# sourceMappingURL=Source.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Source.d.ts","sourceRoot":"","sources":["../../src/model/Source.ts"],"names":[],"mappings":"AAeA,OAAO,EAAC,KAAK,EAAC,MAAM,YAAY,CAAC;AAEjC,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,MAAM;IACjB,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,KAAK,CAAC,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,MAAM,CAAU;IACxB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,iBAAiB,CAAS;IAElC;;;OAGG;gBACS,QAAQ,EAAE,KAAK,EAAE,UAAU,GAAE,GAAG,EAAO;IASnD,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS;IAO5D,IAAI,OAAO,IAAI,GAAG,EAAE,CAEnB;IACD,OAAO,CAAC,mBAAmB;IAS3B,IAAI,KAAK,IAAI,KAAK,CAEjB;IAED,IAAI,IAAI,IAAI,MAAM,GAAG,SAAS,CAE7B;IAED,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,IAAI,SAAS,IAAI,MAAM,CAEtB;IACD,IAAI,SAAS,CAAC,IAAI,EAAE,MAAM,EAEzB;IAED,IAAI,gBAAgB,IAAI,MAAM,CAE7B;IACD;;OAEG;IACH,IAAI,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAElC;CACF"}
1
+ {"version":3,"file":"Source.d.ts","sourceRoot":"","sources":["../../src/model/Source.ts"],"names":[],"mappings":"AAeA,OAAO,EAAC,KAAK,EAAC,MAAM,YAAY,CAAC;AAEjC,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC;AAE/E,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,eAAe,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,MAAM;IACjB,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,KAAK,CAAC,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,MAAM,CAAU;IACxB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,WAAW,CAAC,CAAmB;IAEvC;;;OAGG;gBACS,QAAQ,EAAE,KAAK,EAAE,UAAU,GAAE,GAAG,EAAO;IASnD,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS;IAO5D,IAAI,OAAO,IAAI,GAAG,EAAE,CAEnB;IACD,OAAO,CAAC,mBAAmB;IAS3B,IAAI,KAAK,IAAI,KAAK,CAEjB;IAED,IAAI,IAAI,IAAI,MAAM,GAAG,SAAS,CAE7B;IAED,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,IAAI,SAAS,IAAI,MAAM,CAEtB;IACD,IAAI,SAAS,CAAC,IAAI,EAAE,MAAM,EAEzB;IAED,IAAI,gBAAgB,IAAI,MAAM,CAE7B;IACD;;OAEG;IACH,IAAI,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAElC;IAED,IAAI,UAAU,IAAI,gBAAgB,GAAG,SAAS,CAE7C;IAED,IAAI,UAAU,CAAC,KAAK,EAAE,gBAAgB,GAAG,SAAS,EAEjD;CACF"}
@@ -18,6 +18,7 @@ export class Source {
18
18
  _h_pix;
19
19
  _shapesize;
20
20
  _brightnessFactor;
21
+ _mediaStyle;
21
22
  /**
22
23
  * @param in_point Point.js (Cartesian/RA-Dec wrapper)
23
24
  * @param in_details Optional array of key/value metadata
@@ -70,5 +71,11 @@ export class Source {
70
71
  set brightnessFactor(factor) {
71
72
  this._brightnessFactor = factor;
72
73
  }
74
+ get mediaStyle() {
75
+ return this._mediaStyle;
76
+ }
77
+ set mediaStyle(style) {
78
+ this._mediaStyle = style;
79
+ }
73
80
  }
74
81
  //# sourceMappingURL=Source.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Source.js","sourceRoot":"","sources":["../../src/model/Source.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,YAAY,CAAC;AAEb,OAAO,EAAW,IAAI,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,MAAM,MAAM,cAAc,CAAC;AAUlC,MAAM,OAAO,MAAM;IACT,MAAM,CAAQ;IACd,KAAK,CAAU;IACf,QAAQ,CAAQ;IAChB,MAAM,CAAU;IAChB,UAAU,CAAS;IACnB,iBAAiB,CAAS;IAElC;;;OAGG;IACH,YAAY,QAAe,EAAE,aAAoB,EAAE;QACjD,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,iBAAiB,GAAG,CAAC,EAAE,CAAC;QAE7B,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC7B,CAAC;IAED,gBAAgB,CAAC,KAAa;QAC5B,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YAC/C,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IACO,mBAAmB;QACzB,mCAAmC;QACnC,wEAAwE;QACxE,MAAM,OAAO,GAAY,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QAClE,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACnE,MAAM,GAAG,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC5C,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IACD,IAAI,SAAS,CAAC,IAAY;QACxB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IACzB,CAAC;IAED,IAAI,gBAAgB;QAClB,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAChC,CAAC;IACD;;OAEG;IACH,IAAI,gBAAgB,CAAC,MAAc;QACjC,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC;IAClC,CAAC;CACF"}
1
+ {"version":3,"file":"Source.js","sourceRoot":"","sources":["../../src/model/Source.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,YAAY,CAAC;AAEb,OAAO,EAAW,IAAI,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,MAAM,MAAM,cAAc,CAAC;AAoBlC,MAAM,OAAO,MAAM;IACT,MAAM,CAAQ;IACd,KAAK,CAAU;IACf,QAAQ,CAAQ;IAChB,MAAM,CAAU;IAChB,UAAU,CAAS;IACnB,iBAAiB,CAAS;IAC1B,WAAW,CAAoB;IAEvC;;;OAGG;IACH,YAAY,QAAe,EAAE,aAAoB,EAAE;QACjD,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,iBAAiB,GAAG,CAAC,EAAE,CAAC;QAE7B,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC7B,CAAC;IAED,gBAAgB,CAAC,KAAa;QAC5B,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YAC/C,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IACO,mBAAmB;QACzB,mCAAmC;QACnC,wEAAwE;QACxE,MAAM,OAAO,GAAY,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QAClE,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACnE,MAAM,GAAG,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC5C,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IACD,IAAI,SAAS,CAAC,IAAY;QACxB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IACzB,CAAC;IAED,IAAI,gBAAgB;QAClB,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAChC,CAAC;IACD;;OAEG;IACH,IAAI,gBAAgB,CAAC,MAAc;QACjC,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC;IAClC,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,IAAI,UAAU,CAAC,KAAmC;QAChD,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;IAC3B,CAAC;CACF"}
@@ -16,6 +16,16 @@ export type CataloguePickResult = {
16
16
  sources: Source[];
17
17
  pickedIndexes: number[];
18
18
  };
19
+ export type CatalogueMediaColumns = {
20
+ type?: string;
21
+ src?: string;
22
+ scale?: string;
23
+ rotation?: string;
24
+ opacity?: string;
25
+ };
26
+ export type CatalogueAddSourcesOptions = {
27
+ mediaColumns?: CatalogueMediaColumns;
28
+ };
19
29
  export declare class CatalogueGL {
20
30
  _kind: string;
21
31
  static ELEM_SIZE: number;
@@ -42,6 +52,9 @@ export declare class CatalogueGL {
42
52
  _providerUrl: string;
43
53
  _catalogueShaderProgram: CatalogueShaderProgram;
44
54
  private _visibleTilesManager;
55
+ private _mediaOverlayHost;
56
+ private _mediaElements;
57
+ private _svgMediaDataUrls;
45
58
  constructor(catalogueName: string, catalogueDescription: string, providerUrl: string, metadataManager: MetadataManager, webgl: WebGL2RenderingContext, visibleTilesManager: VisibleTilesManager);
46
59
  setIsVisible(visibility: boolean): void;
47
60
  get shapeColor(): string;
@@ -61,8 +74,17 @@ export declare class CatalogueGL {
61
74
  * @param in_data Rows of TAP results
62
75
  * @param columnsmeta TapMetadataList (unused here because `CatalogueProps` already holds indices)
63
76
  */
64
- addSources(in_data: any[][], columnsmeta: MetadataColumn[]): void;
77
+ addSources(in_data: any[][], columnsmeta: MetadataColumn[], options?: CatalogueAddSourcesOptions): void;
78
+ private getColumnIndex;
79
+ private readCell;
80
+ private extractMediaStyle;
65
81
  clearSources(): void;
82
+ private clearMediaOverlay;
83
+ private ensureMediaOverlayHost;
84
+ private ensureMediaElement;
85
+ private loadSvgMediaAsDataUrl;
86
+ private isSourceOnVisibleHemisphere;
87
+ private updateMediaOverlay;
66
88
  private sourceMatches;
67
89
  private findSourceIndex;
68
90
  extHighlightSource(source: Source, highlighted: boolean): void;
@@ -1 +1 @@
1
- {"version":3,"file":"CatalogueGL.d.ts","sourceRoot":"","sources":["../../../src/model/catalogues/CatalogueGL.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CatalogueGL.d.ts","sourceRoot":"","sources":["../../../src/model/catalogues/CatalogueGL.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,8 @@ import { CoordsType } from "../..//utils/CoordsType.js";
14
14
  import { colorHex2RGB } from "../../utils/Utils.js";
15
15
  import { CatalogueShaderProgram } from "../../shader/CatalogueShaderProgram.js";
16
16
  import { MetadataManager } from "../MetadataManager.js";
17
+ import { mat4, vec3, vec4 } from "gl-matrix";
18
+ import global from "../../Global.js";
17
19
  export class CatalogueGL {
18
20
  _kind = "CatalogueGL";
19
21
  static ELEM_SIZE = 6;
@@ -45,6 +47,9 @@ export class CatalogueGL {
45
47
  _providerUrl;
46
48
  _catalogueShaderProgram;
47
49
  _visibleTilesManager;
50
+ _mediaOverlayHost = null;
51
+ _mediaElements = [];
52
+ _svgMediaDataUrls = new Map();
48
53
  constructor(catalogueName, catalogueDescription, providerUrl, metadataManager, webgl, visibleTilesManager) {
49
54
  this._webgl = webgl;
50
55
  this._ready = false;
@@ -215,9 +220,10 @@ export class CatalogueGL {
215
220
  * @param in_data Rows of TAP results
216
221
  * @param columnsmeta TapMetadataList (unused here because `CatalogueProps` already holds indices)
217
222
  */
218
- addSources(in_data, columnsmeta) {
223
+ addSources(in_data, columnsmeta, options = {}) {
219
224
  this._ready = false;
220
225
  this._sources = [];
226
+ this.clearMediaOverlay();
221
227
  this._metadataManager = new MetadataManager(columnsmeta);
222
228
  // const raDataIndex = (this.catalogueProps.raColumn as any).index ?? (this.catalogueProps.raColumn as any)._index;
223
229
  // const decDataIndex = (this.catalogueProps.decColumn as any).index ?? (this.catalogueProps.decColumn as any)._index;
@@ -231,6 +237,10 @@ export class CatalogueGL {
231
237
  decDeg: in_data[j][decDataIndex],
232
238
  }, CoordsType.ASTRO);
233
239
  const source = new Source(point, in_data[j]);
240
+ const mediaStyle = this.extractMediaStyle(in_data[j], columnsmeta, options.mediaColumns);
241
+ if (mediaStyle) {
242
+ source.mediaStyle = mediaStyle;
243
+ }
234
244
  // Ensure optional fields exist
235
245
  source.shapeSize = source.shapeSize ?? CatalogueGL.STANDARD_SHAPE_SIZE;
236
246
  source.brightnessFactor = 3;
@@ -250,11 +260,222 @@ export class CatalogueGL {
250
260
  this._ready = true;
251
261
  this._bufferInitialised = false;
252
262
  }
263
+ getColumnIndex(columnsmeta, columnName) {
264
+ if (!columnName)
265
+ return -1;
266
+ return columnsmeta.find((column) => column.name === columnName)?.index ?? -1;
267
+ }
268
+ readCell(row, columnsmeta, columnName) {
269
+ const idx = this.getColumnIndex(columnsmeta, columnName);
270
+ return idx >= 0 ? row[idx] : undefined;
271
+ }
272
+ extractMediaStyle(row, columnsmeta, mediaColumns) {
273
+ if (!mediaColumns?.src)
274
+ return undefined;
275
+ const rawSrc = this.readCell(row, columnsmeta, mediaColumns.src);
276
+ const src = String(rawSrc ?? "").trim();
277
+ if (!src)
278
+ return undefined;
279
+ const rawKind = String(this.readCell(row, columnsmeta, mediaColumns.type) ?? "sprite").trim().toLowerCase();
280
+ const kind = rawKind === "model"
281
+ ? "model"
282
+ : rawKind === "image"
283
+ ? "image"
284
+ : rawKind === "icon"
285
+ ? "icon"
286
+ : rawKind === "circle"
287
+ ? "circle"
288
+ : "sprite";
289
+ if (kind === "circle" || kind === "model")
290
+ return undefined;
291
+ const scale = Number(this.readCell(row, columnsmeta, mediaColumns.scale));
292
+ const rotationDeg = Number(this.readCell(row, columnsmeta, mediaColumns.rotation));
293
+ const opacity = Number(this.readCell(row, columnsmeta, mediaColumns.opacity));
294
+ return {
295
+ kind,
296
+ src,
297
+ scale: Number.isFinite(scale) && scale > 0 ? scale : undefined,
298
+ rotationDeg: Number.isFinite(rotationDeg) ? rotationDeg : undefined,
299
+ opacity: Number.isFinite(opacity) ? Math.max(0, Math.min(1, opacity)) : undefined,
300
+ };
301
+ }
253
302
  clearSources() {
254
303
  this._sources = [];
255
304
  this.hoveredIndexes = [];
256
305
  this._healpixDensityMap.clear();
257
306
  this.vertexCataloguePosition = new Float32Array(0);
307
+ this.clearMediaOverlay();
308
+ }
309
+ clearMediaOverlay() {
310
+ this._mediaElements.forEach((el) => el.remove());
311
+ this._mediaElements = [];
312
+ if (this._mediaOverlayHost) {
313
+ this._mediaOverlayHost.remove();
314
+ this._mediaOverlayHost = null;
315
+ }
316
+ }
317
+ ensureMediaOverlayHost() {
318
+ const canvas = this._webgl?.canvas;
319
+ const parent = canvas?.parentElement;
320
+ if (!canvas || !parent)
321
+ return null;
322
+ const parentStyle = window.getComputedStyle(parent);
323
+ if (parentStyle.position === "static") {
324
+ parent.style.position = "relative";
325
+ }
326
+ if (!this._mediaOverlayHost) {
327
+ const host = document.createElement("div");
328
+ host.dataset.astroCatalogueMedia = "true";
329
+ host.style.position = "absolute";
330
+ host.style.left = `${canvas.offsetLeft}px`;
331
+ host.style.top = `${canvas.offsetTop}px`;
332
+ host.style.width = `${canvas.clientWidth}px`;
333
+ host.style.height = `${canvas.clientHeight}px`;
334
+ host.style.pointerEvents = "none";
335
+ host.style.overflow = "hidden";
336
+ host.style.zIndex = "4";
337
+ canvas.style.position = canvas.style.position || "relative";
338
+ canvas.style.zIndex = canvas.style.zIndex || "0";
339
+ parent.appendChild(host);
340
+ this._mediaOverlayHost = host;
341
+ }
342
+ else {
343
+ this._mediaOverlayHost.style.left = `${canvas.offsetLeft}px`;
344
+ this._mediaOverlayHost.style.top = `${canvas.offsetTop}px`;
345
+ this._mediaOverlayHost.style.width = `${canvas.clientWidth}px`;
346
+ this._mediaOverlayHost.style.height = `${canvas.clientHeight}px`;
347
+ }
348
+ return this._mediaOverlayHost;
349
+ }
350
+ ensureMediaElement(index, style) {
351
+ let img = this._mediaElements[index];
352
+ if (!img) {
353
+ img = document.createElement("img");
354
+ img.loading = "lazy";
355
+ img.decoding = "async";
356
+ img.style.position = "absolute";
357
+ img.style.objectFit = "contain";
358
+ img.style.pointerEvents = "none";
359
+ img.style.transformOrigin = "center center";
360
+ img.style.filter = "drop-shadow(0 1px 2px rgba(0, 0, 0, 0.55))";
361
+ img.style.willChange = "transform, left, top";
362
+ this._mediaElements[index] = img;
363
+ }
364
+ const src = String(style.src ?? "").trim();
365
+ const resolvedSrc = src ? new URL(src, document.baseURI).href : "";
366
+ if (resolvedSrc && img.getAttribute("src") !== resolvedSrc) {
367
+ img.removeAttribute("data-astro-media-src-index");
368
+ img.removeAttribute("data-astro-media-loaded");
369
+ img.onerror = null;
370
+ img.onload = null;
371
+ img.setAttribute("src", resolvedSrc);
372
+ if (/\.svg(?:[?#].*)?$/i.test(resolvedSrc)) {
373
+ void this.loadSvgMediaAsDataUrl(img, resolvedSrc);
374
+ }
375
+ }
376
+ return img;
377
+ }
378
+ async loadSvgMediaAsDataUrl(img, resolvedSrc) {
379
+ try {
380
+ let dataUrl = this._svgMediaDataUrls.get(resolvedSrc);
381
+ if (!dataUrl) {
382
+ const response = await fetch(resolvedSrc);
383
+ if (!response.ok)
384
+ return;
385
+ const svg = await response.text();
386
+ if (!/^\s*<svg[\s>]/i.test(svg))
387
+ return;
388
+ dataUrl = `data:image/svg+xml;charset=utf-8,${encodeURIComponent(svg)}`;
389
+ this._svgMediaDataUrls.set(resolvedSrc, dataUrl);
390
+ }
391
+ if (img.getAttribute("src") === resolvedSrc) {
392
+ img.setAttribute("src", dataUrl);
393
+ }
394
+ }
395
+ catch {
396
+ // Keep the direct image src; remote servers may already provide a valid MIME type.
397
+ }
398
+ }
399
+ isSourceOnVisibleHemisphere(source, in_mMatrix, vMatrix) {
400
+ if (global.insideSphere)
401
+ return true;
402
+ const invView = mat4.create();
403
+ if (!mat4.invert(invView, vMatrix))
404
+ return true;
405
+ const cameraPos = vec3.fromValues(invView[12], invView[13], invView[14]);
406
+ const worldPoint4 = vec4.fromValues(source.point.x, source.point.y, source.point.z, 1);
407
+ vec4.transformMat4(worldPoint4, worldPoint4, in_mMatrix);
408
+ const worldPoint = vec3.fromValues(worldPoint4[0], worldPoint4[1], worldPoint4[2]);
409
+ const normal = vec3.normalize(vec3.create(), worldPoint);
410
+ const toCamera = vec3.subtract(vec3.create(), cameraPos, worldPoint);
411
+ return vec3.dot(normal, toCamera) > 0;
412
+ }
413
+ updateMediaOverlay(in_mMatrix, vMatrix, pMatrix) {
414
+ const sourcesWithMedia = this._sources.filter((source) => !!source.mediaStyle?.src);
415
+ if (!sourcesWithMedia.length) {
416
+ this.clearMediaOverlay();
417
+ return;
418
+ }
419
+ const host = this.ensureMediaOverlayHost();
420
+ const canvas = this._webgl.canvas;
421
+ if (!host || !canvas.clientWidth || !canvas.clientHeight)
422
+ return;
423
+ const modelView = mat4.create();
424
+ const mvp = mat4.create();
425
+ mat4.multiply(modelView, vMatrix, in_mMatrix);
426
+ mat4.multiply(mvp, pMatrix, modelView);
427
+ const width = canvas.clientWidth;
428
+ const height = canvas.clientHeight;
429
+ for (let i = 0; i < this._sources.length; i++) {
430
+ const source = this._sources[i];
431
+ const style = source.mediaStyle;
432
+ const img = this._mediaElements[i];
433
+ if (!style?.src) {
434
+ if (img)
435
+ img.style.display = "none";
436
+ continue;
437
+ }
438
+ if (!this.isSourceOnVisibleHemisphere(source, in_mMatrix, vMatrix)) {
439
+ if (img)
440
+ img.style.display = "none";
441
+ continue;
442
+ }
443
+ const projected = vec4.fromValues(source.point.x, source.point.y, source.point.z, 1);
444
+ vec4.transformMat4(projected, projected, mvp);
445
+ if (!projected[3]) {
446
+ if (img)
447
+ img.style.display = "none";
448
+ continue;
449
+ }
450
+ const ndcX = projected[0] / projected[3];
451
+ const ndcY = projected[1] / projected[3];
452
+ const ndcZ = projected[2] / projected[3];
453
+ if (ndcX < -1.15 ||
454
+ ndcX > 1.15 ||
455
+ ndcY < -1.15 ||
456
+ ndcY > 1.15 ||
457
+ ndcZ < -1.15 ||
458
+ ndcZ > 1.15) {
459
+ if (img)
460
+ img.style.display = "none";
461
+ continue;
462
+ }
463
+ const mediaEl = this.ensureMediaElement(i, style);
464
+ if (!mediaEl.parentElement)
465
+ host.appendChild(mediaEl);
466
+ const px = (ndcX * 0.5 + 0.5) * width;
467
+ const py = (1 - (ndcY * 0.5 + 0.5)) * height;
468
+ const baseSize = source.shapeSize || CatalogueGL.STANDARD_SHAPE_SIZE;
469
+ const size = Math.max(8, baseSize * (style.scale ?? 2.4));
470
+ const rotation = style.rotationDeg ?? 0;
471
+ mediaEl.style.display = "block";
472
+ mediaEl.style.left = `${px - size / 2}px`;
473
+ mediaEl.style.top = `${py - size / 2}px`;
474
+ mediaEl.style.width = `${size}px`;
475
+ mediaEl.style.height = `${size}px`;
476
+ mediaEl.style.opacity = `${style.opacity ?? 1}`;
477
+ mediaEl.style.transform = `rotate(${rotation}deg)`;
478
+ }
258
479
  }
259
480
  sourceMatches(left, right) {
260
481
  if (left === right)
@@ -594,6 +815,7 @@ export class CatalogueGL {
594
815
  // draw
595
816
  const numItems = this.vertexCataloguePosition.length / CatalogueGL.ELEM_SIZE;
596
817
  this._webgl.drawArrays(this._webgl.POINTS, 0, numItems);
818
+ this.updateMediaOverlay(in_mMatrix, vMatrix, pMatrix);
597
819
  this._oldMouseCoords = in_mouseHelper.xyz;
598
820
  }
599
821
  }