astro-viewer 3.10.0 → 3.12.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.
Files changed (75) hide show
  1. package/README.md +66 -4
  2. package/dist/astroviewer.cjs +911 -154
  3. package/dist/astroviewer.cjs.map +1 -1
  4. package/dist/astroviewer.js +911 -154
  5. package/dist/astroviewer.js.map +1 -1
  6. package/dist/astroviewer.min.js +1 -1
  7. package/dist/astroviewer.min.js.map +1 -1
  8. package/lib-esm/AstroSphere.d.ts +37 -2
  9. package/lib-esm/AstroSphere.d.ts.map +1 -1
  10. package/lib-esm/AstroSphere.js +249 -70
  11. package/lib-esm/AstroSphere.js.map +1 -1
  12. package/lib-esm/AstroViewer.d.ts +15 -1
  13. package/lib-esm/AstroViewer.d.ts.map +1 -1
  14. package/lib-esm/AstroViewer.js +41 -4
  15. package/lib-esm/AstroViewer.js.map +1 -1
  16. package/lib-esm/Camera.d.ts +14 -0
  17. package/lib-esm/Camera.d.ts.map +1 -1
  18. package/lib-esm/Camera.js +118 -8
  19. package/lib-esm/Camera.js.map +1 -1
  20. package/lib-esm/index.d.ts +1 -0
  21. package/lib-esm/index.d.ts.map +1 -1
  22. package/lib-esm/index.js +1 -0
  23. package/lib-esm/index.js.map +1 -1
  24. package/lib-esm/model/Source.d.ts +11 -0
  25. package/lib-esm/model/Source.d.ts.map +1 -1
  26. package/lib-esm/model/Source.js +8 -1
  27. package/lib-esm/model/Source.js.map +1 -1
  28. package/lib-esm/model/catalogues/CatalogueGL.d.ts +36 -5
  29. package/lib-esm/model/catalogues/CatalogueGL.d.ts.map +1 -1
  30. package/lib-esm/model/catalogues/CatalogueGL.js +329 -57
  31. package/lib-esm/model/catalogues/CatalogueGL.js.map +1 -1
  32. package/lib-esm/model/earth/XYZMap.d.ts +4 -1
  33. package/lib-esm/model/earth/XYZMap.d.ts.map +1 -1
  34. package/lib-esm/model/earth/XYZMap.js +35 -2
  35. package/lib-esm/model/earth/XYZMap.js.map +1 -1
  36. package/lib-esm/model/footprints/FootprintSetGL.d.ts +1 -0
  37. package/lib-esm/model/footprints/FootprintSetGL.d.ts.map +1 -1
  38. package/lib-esm/model/footprints/FootprintSetGL.js +13 -3
  39. package/lib-esm/model/footprints/FootprintSetGL.js.map +1 -1
  40. package/lib-esm/model/grid/EquatorialGrid.d.ts +1 -0
  41. package/lib-esm/model/grid/EquatorialGrid.d.ts.map +1 -1
  42. package/lib-esm/model/grid/EquatorialGrid.js +3 -0
  43. package/lib-esm/model/grid/EquatorialGrid.js.map +1 -1
  44. package/lib-esm/model/grid/HealpixGrid.d.ts +1 -0
  45. package/lib-esm/model/grid/HealpixGrid.d.ts.map +1 -1
  46. package/lib-esm/model/grid/HealpixGrid.js +3 -0
  47. package/lib-esm/model/grid/HealpixGrid.js.map +1 -1
  48. package/lib-esm/model/grid/LonLatGrid.d.ts +1 -0
  49. package/lib-esm/model/grid/LonLatGrid.d.ts.map +1 -1
  50. package/lib-esm/model/grid/LonLatGrid.js +3 -0
  51. package/lib-esm/model/grid/LonLatGrid.js.map +1 -1
  52. package/lib-esm/model/meships/MeshHiPS.d.ts +4 -0
  53. package/lib-esm/model/meships/MeshHiPS.d.ts.map +1 -1
  54. package/lib-esm/model/meships/MeshHiPS.js +11 -1
  55. package/lib-esm/model/meships/MeshHiPS.js.map +1 -1
  56. package/lib-esm/model/terra/TerraPointSetGL.d.ts +1 -0
  57. package/lib-esm/model/terra/TerraPointSetGL.d.ts.map +1 -1
  58. package/lib-esm/model/terra/TerraPointSetGL.js +39 -1
  59. package/lib-esm/model/terra/TerraPointSetGL.js.map +1 -1
  60. package/lib-esm/shader/CatalogueShaderProgram.d.ts +4 -0
  61. package/lib-esm/shader/CatalogueShaderProgram.d.ts.map +1 -1
  62. package/lib-esm/shader/CatalogueShaderProgram.js +6 -0
  63. package/lib-esm/shader/CatalogueShaderProgram.js.map +1 -1
  64. package/lib-esm/shader/ShaderManager.d.ts.map +1 -1
  65. package/lib-esm/shader/ShaderManager.js +7 -4
  66. package/lib-esm/shader/ShaderManager.js.map +1 -1
  67. package/lib-esm/shader/XYZShaderProgram.d.ts +3 -0
  68. package/lib-esm/shader/XYZShaderProgram.d.ts.map +1 -1
  69. package/lib-esm/shader/XYZShaderProgram.js +11 -3
  70. package/lib-esm/shader/XYZShaderProgram.js.map +1 -1
  71. package/lib-esm/utils/Utils.d.ts +12 -0
  72. package/lib-esm/utils/Utils.d.ts.map +1 -1
  73. package/lib-esm/utils/Utils.js +26 -0
  74. package/lib-esm/utils/Utils.js.map +1 -1
  75. package/package.json +2 -2
@@ -11,14 +11,17 @@
11
11
  import { Source } from "../Source.js";
12
12
  import { Point } from "../Point.js";
13
13
  import { CoordsType } from "../..//utils/CoordsType.js";
14
- import { colorHex2RGB } from "../../utils/Utils.js";
14
+ import { colorHex2RGB, interactionColorsFromHex } 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 { Pointing, Vec3 } from "astrospatial-core/healpix";
19
+ import global from "../../Global.js";
17
20
  export class CatalogueGL {
18
21
  _kind = "CatalogueGL";
19
22
  static ELEM_SIZE = 6;
20
23
  static BYTES_X_ELEM = new Float32Array().BYTES_PER_ELEMENT;
21
- static STANDARD_SHAPE_SIZE = 10.0;
24
+ static STANDARD_SHAPE_SIZE = 16.0;
22
25
  static STANDARD_SHAPE_HUE = 3.0;
23
26
  _ready;
24
27
  _name;
@@ -45,6 +48,9 @@ export class CatalogueGL {
45
48
  _providerUrl;
46
49
  _catalogueShaderProgram;
47
50
  _visibleTilesManager;
51
+ _mediaOverlayHost = null;
52
+ _mediaElements = [];
53
+ _svgMediaDataUrls = new Map();
48
54
  constructor(catalogueName, catalogueDescription, providerUrl, metadataManager, webgl, visibleTilesManager) {
49
55
  this._webgl = webgl;
50
56
  this._ready = false;
@@ -215,9 +221,10 @@ export class CatalogueGL {
215
221
  * @param in_data Rows of TAP results
216
222
  * @param columnsmeta TapMetadataList (unused here because `CatalogueProps` already holds indices)
217
223
  */
218
- addSources(in_data, columnsmeta) {
224
+ addSources(in_data, columnsmeta, options = {}) {
219
225
  this._ready = false;
220
226
  this._sources = [];
227
+ this.clearMediaOverlay();
221
228
  this._metadataManager = new MetadataManager(columnsmeta);
222
229
  // const raDataIndex = (this.catalogueProps.raColumn as any).index ?? (this.catalogueProps.raColumn as any)._index;
223
230
  // const decDataIndex = (this.catalogueProps.decColumn as any).index ?? (this.catalogueProps.decColumn as any)._index;
@@ -231,6 +238,10 @@ export class CatalogueGL {
231
238
  decDeg: in_data[j][decDataIndex],
232
239
  }, CoordsType.ASTRO);
233
240
  const source = new Source(point, in_data[j]);
241
+ const mediaStyle = this.extractMediaStyle(in_data[j], columnsmeta, options.mediaColumns);
242
+ if (mediaStyle) {
243
+ source.mediaStyle = mediaStyle;
244
+ }
234
245
  // Ensure optional fields exist
235
246
  source.shapeSize = source.shapeSize ?? CatalogueGL.STANDARD_SHAPE_SIZE;
236
247
  source.brightnessFactor = 3;
@@ -250,11 +261,226 @@ export class CatalogueGL {
250
261
  this._ready = true;
251
262
  this._bufferInitialised = false;
252
263
  }
264
+ getColumnIndex(columnsmeta, columnName) {
265
+ if (!columnName)
266
+ return -1;
267
+ return (columnsmeta.find((column) => column.name === columnName)?.index ?? -1);
268
+ }
269
+ readCell(row, columnsmeta, columnName) {
270
+ const idx = this.getColumnIndex(columnsmeta, columnName);
271
+ return idx >= 0 ? row[idx] : undefined;
272
+ }
273
+ extractMediaStyle(row, columnsmeta, mediaColumns) {
274
+ if (!mediaColumns?.src)
275
+ return undefined;
276
+ const rawSrc = this.readCell(row, columnsmeta, mediaColumns.src);
277
+ const src = String(rawSrc ?? "").trim();
278
+ if (!src)
279
+ return undefined;
280
+ const rawKind = String(this.readCell(row, columnsmeta, mediaColumns.type) ?? "sprite")
281
+ .trim()
282
+ .toLowerCase();
283
+ const kind = rawKind === "model"
284
+ ? "model"
285
+ : rawKind === "image"
286
+ ? "image"
287
+ : rawKind === "icon"
288
+ ? "icon"
289
+ : rawKind === "circle"
290
+ ? "circle"
291
+ : "sprite";
292
+ if (kind === "circle" || kind === "model")
293
+ return undefined;
294
+ const scale = Number(this.readCell(row, columnsmeta, mediaColumns.scale));
295
+ const rotationDeg = Number(this.readCell(row, columnsmeta, mediaColumns.rotation));
296
+ const opacity = Number(this.readCell(row, columnsmeta, mediaColumns.opacity));
297
+ return {
298
+ kind,
299
+ src,
300
+ scale: Number.isFinite(scale) && scale > 0 ? scale : undefined,
301
+ rotationDeg: Number.isFinite(rotationDeg) ? rotationDeg : undefined,
302
+ opacity: Number.isFinite(opacity)
303
+ ? Math.max(0, Math.min(1, opacity))
304
+ : undefined,
305
+ };
306
+ }
253
307
  clearSources() {
254
308
  this._sources = [];
255
309
  this.hoveredIndexes = [];
256
310
  this._healpixDensityMap.clear();
257
311
  this.vertexCataloguePosition = new Float32Array(0);
312
+ this.clearMediaOverlay();
313
+ }
314
+ clearMediaOverlay() {
315
+ this._mediaElements.forEach((el) => el.remove());
316
+ this._mediaElements = [];
317
+ if (this._mediaOverlayHost) {
318
+ this._mediaOverlayHost.remove();
319
+ this._mediaOverlayHost = null;
320
+ }
321
+ }
322
+ ensureMediaOverlayHost() {
323
+ const canvas = this._webgl?.canvas;
324
+ const parent = canvas?.parentElement;
325
+ if (!canvas || !parent)
326
+ return null;
327
+ const parentStyle = window.getComputedStyle(parent);
328
+ if (parentStyle.position === "static") {
329
+ parent.style.position = "relative";
330
+ }
331
+ if (!this._mediaOverlayHost) {
332
+ const host = document.createElement("div");
333
+ host.dataset.astroCatalogueMedia = "true";
334
+ host.style.position = "absolute";
335
+ host.style.left = `${canvas.offsetLeft}px`;
336
+ host.style.top = `${canvas.offsetTop}px`;
337
+ host.style.width = `${canvas.clientWidth}px`;
338
+ host.style.height = `${canvas.clientHeight}px`;
339
+ host.style.pointerEvents = "none";
340
+ host.style.overflow = "hidden";
341
+ host.style.zIndex = "4";
342
+ canvas.style.position = canvas.style.position || "relative";
343
+ canvas.style.zIndex = canvas.style.zIndex || "0";
344
+ parent.appendChild(host);
345
+ this._mediaOverlayHost = host;
346
+ }
347
+ else {
348
+ this._mediaOverlayHost.style.left = `${canvas.offsetLeft}px`;
349
+ this._mediaOverlayHost.style.top = `${canvas.offsetTop}px`;
350
+ this._mediaOverlayHost.style.width = `${canvas.clientWidth}px`;
351
+ this._mediaOverlayHost.style.height = `${canvas.clientHeight}px`;
352
+ }
353
+ return this._mediaOverlayHost;
354
+ }
355
+ ensureMediaElement(index, style) {
356
+ let img = this._mediaElements[index];
357
+ if (!img) {
358
+ img = document.createElement("img");
359
+ img.loading = "lazy";
360
+ img.decoding = "async";
361
+ img.style.position = "absolute";
362
+ img.style.objectFit = "contain";
363
+ img.style.pointerEvents = "none";
364
+ img.style.transformOrigin = "center center";
365
+ img.style.filter = "drop-shadow(0 1px 2px rgba(0, 0, 0, 0.55))";
366
+ img.style.willChange = "transform, left, top";
367
+ this._mediaElements[index] = img;
368
+ }
369
+ const src = String(style.src ?? "").trim();
370
+ const resolvedSrc = src ? new URL(src, document.baseURI).href : "";
371
+ if (resolvedSrc && img.getAttribute("src") !== resolvedSrc) {
372
+ img.removeAttribute("data-astro-media-src-index");
373
+ img.removeAttribute("data-astro-media-loaded");
374
+ img.onerror = null;
375
+ img.onload = null;
376
+ img.setAttribute("src", resolvedSrc);
377
+ if (/\.svg(?:[?#].*)?$/i.test(resolvedSrc)) {
378
+ void this.loadSvgMediaAsDataUrl(img, resolvedSrc);
379
+ }
380
+ }
381
+ return img;
382
+ }
383
+ async loadSvgMediaAsDataUrl(img, resolvedSrc) {
384
+ try {
385
+ let dataUrl = this._svgMediaDataUrls.get(resolvedSrc);
386
+ if (!dataUrl) {
387
+ const response = await fetch(resolvedSrc);
388
+ if (!response.ok)
389
+ return;
390
+ const svg = await response.text();
391
+ if (!/^\s*<svg[\s>]/i.test(svg))
392
+ return;
393
+ dataUrl = `data:image/svg+xml;charset=utf-8,${encodeURIComponent(svg)}`;
394
+ this._svgMediaDataUrls.set(resolvedSrc, dataUrl);
395
+ }
396
+ if (img.getAttribute("src") === resolvedSrc) {
397
+ img.setAttribute("src", dataUrl);
398
+ }
399
+ }
400
+ catch {
401
+ // Keep the direct image src; remote servers may already provide a valid MIME type.
402
+ }
403
+ }
404
+ isSourceOnVisibleHemisphere(source, in_mMatrix, vMatrix) {
405
+ if (global.insideSphere)
406
+ return true;
407
+ const invView = mat4.create();
408
+ if (!mat4.invert(invView, vMatrix))
409
+ return true;
410
+ const cameraPos = vec3.fromValues(invView[12], invView[13], invView[14]);
411
+ const worldPoint4 = vec4.fromValues(source.point.x, source.point.y, source.point.z, 1);
412
+ vec4.transformMat4(worldPoint4, worldPoint4, in_mMatrix);
413
+ const worldPoint = vec3.fromValues(worldPoint4[0], worldPoint4[1], worldPoint4[2]);
414
+ const normal = vec3.normalize(vec3.create(), worldPoint);
415
+ const toCamera = vec3.subtract(vec3.create(), cameraPos, worldPoint);
416
+ return vec3.dot(normal, toCamera) > 0;
417
+ }
418
+ updateMediaOverlay(in_mMatrix, vMatrix, pMatrix) {
419
+ const sourcesWithMedia = this._sources.filter((source) => !!source.mediaStyle?.src);
420
+ if (!sourcesWithMedia.length) {
421
+ this.clearMediaOverlay();
422
+ return;
423
+ }
424
+ const host = this.ensureMediaOverlayHost();
425
+ const canvas = this._webgl.canvas;
426
+ if (!host || !canvas.clientWidth || !canvas.clientHeight)
427
+ return;
428
+ const modelView = mat4.create();
429
+ const mvp = mat4.create();
430
+ mat4.multiply(modelView, vMatrix, in_mMatrix);
431
+ mat4.multiply(mvp, pMatrix, modelView);
432
+ const width = canvas.clientWidth;
433
+ const height = canvas.clientHeight;
434
+ for (let i = 0; i < this._sources.length; i++) {
435
+ const source = this._sources[i];
436
+ const style = source.mediaStyle;
437
+ const img = this._mediaElements[i];
438
+ if (!style?.src) {
439
+ if (img)
440
+ img.style.display = "none";
441
+ continue;
442
+ }
443
+ if (!this.isSourceOnVisibleHemisphere(source, in_mMatrix, vMatrix)) {
444
+ if (img)
445
+ img.style.display = "none";
446
+ continue;
447
+ }
448
+ const projected = vec4.fromValues(source.point.x, source.point.y, source.point.z, 1);
449
+ vec4.transformMat4(projected, projected, mvp);
450
+ if (!projected[3]) {
451
+ if (img)
452
+ img.style.display = "none";
453
+ continue;
454
+ }
455
+ const ndcX = projected[0] / projected[3];
456
+ const ndcY = projected[1] / projected[3];
457
+ const ndcZ = projected[2] / projected[3];
458
+ if (ndcX < -1.15 ||
459
+ ndcX > 1.15 ||
460
+ ndcY < -1.15 ||
461
+ ndcY > 1.15 ||
462
+ ndcZ < -1.15 ||
463
+ ndcZ > 1.15) {
464
+ if (img)
465
+ img.style.display = "none";
466
+ continue;
467
+ }
468
+ const mediaEl = this.ensureMediaElement(i, style);
469
+ if (!mediaEl.parentElement)
470
+ host.appendChild(mediaEl);
471
+ const px = (ndcX * 0.5 + 0.5) * width;
472
+ const py = (1 - (ndcY * 0.5 + 0.5)) * height;
473
+ const baseSize = source.shapeSize || CatalogueGL.STANDARD_SHAPE_SIZE;
474
+ const size = Math.max(8, baseSize * (style.scale ?? 2.4));
475
+ const rotation = style.rotationDeg ?? 0;
476
+ mediaEl.style.display = "block";
477
+ mediaEl.style.left = `${px - size / 2}px`;
478
+ mediaEl.style.top = `${py - size / 2}px`;
479
+ mediaEl.style.width = `${size}px`;
480
+ mediaEl.style.height = `${size}px`;
481
+ mediaEl.style.opacity = `${style.opacity ?? 1}`;
482
+ mediaEl.style.transform = `rotate(${rotation}deg)`;
483
+ }
258
484
  }
259
485
  sourceMatches(left, right) {
260
486
  if (left === right)
@@ -366,33 +592,46 @@ export class CatalogueGL {
366
592
  this._webgl.bufferData(this._webgl.ARRAY_BUFFER, this.vertexCataloguePosition, this._webgl.STATIC_DRAW);
367
593
  this._bufferInitialised = true;
368
594
  }
369
- getSelectionRadius() {
370
- const order = this._visibleTilesManager.getVisibleOrder();
371
- switch (order) {
372
- case 0:
373
- case 1:
374
- case 2:
375
- // return 0.005;
376
- return 0.01;
377
- case 3:
378
- // return 0.001;
379
- case 4:
380
- // return 0.0009;
381
- case 5:
382
- // return 0.0005;
383
- return 0.005;
384
- case 6:
385
- // return 0.0001;
386
- case 7:
387
- // return 0.00009;
388
- case 8:
389
- // return 0.00005;
390
- return 0.001;
391
- case 9:
392
- return 0.0005;
393
- default:
394
- return 0.0001;
595
+ static MIN_HIT_RADIUS_PX = 6;
596
+ static HIT_PADDING_PX = 3;
597
+ static CANDIDATE_RADIUS_PX = 16;
598
+ getCanvas() {
599
+ return this._webgl.canvas;
600
+ }
601
+ getHitRadiusPx(source) {
602
+ const markerSize = source.shapeSize ?? CatalogueGL.STANDARD_SHAPE_SIZE;
603
+ return Math.max(CatalogueGL.MIN_HIT_RADIUS_PX, markerSize / 2 + CatalogueGL.HIT_PADDING_PX);
604
+ }
605
+ getCandidateSearchRadiusRad(pMatrix) {
606
+ const canvas = this._webgl.canvas;
607
+ const width = Math.max(1, canvas.clientWidth);
608
+ const height = Math.max(1, canvas.clientHeight);
609
+ // pMatrix[0] and pMatrix[5] are the perspective scale factors for X/Y.
610
+ // Convert a small screen-space radius to a conservative angular radius.
611
+ const fovXRad = 2 * Math.atan(1 / Math.abs(pMatrix[0]));
612
+ const fovYRad = 2 * Math.atan(1 / Math.abs(pMatrix[5]));
613
+ const radPerPixel = Math.max(fovXRad / width, fovYRad / height);
614
+ return CatalogueGL.CANDIDATE_RADIUS_PX * radPerPixel;
615
+ }
616
+ projectPointToScreen(point, mvp, width, height) {
617
+ const projected = vec4.fromValues(point.x, point.y, point.z, 1);
618
+ vec4.transformMat4(projected, projected, mvp);
619
+ if (projected[3] <= 0)
620
+ return null;
621
+ const ndcX = projected[0] / projected[3];
622
+ const ndcY = projected[1] / projected[3];
623
+ return [(ndcX * 0.5 + 0.5) * width, (1 - (ndcY * 0.5 + 0.5)) * height];
624
+ }
625
+ clearSelection() {
626
+ for (const idx of this.selectedIndexes) {
627
+ const base = idx * CatalogueGL.ELEM_SIZE;
628
+ if (base + 4 >= this.vertexCataloguePosition.length)
629
+ continue;
630
+ this.vertexCataloguePosition[base + 3] = 0.0;
631
+ this.vertexCataloguePosition[base + 4] =
632
+ this._sources[idx]?.shapeSize ?? CatalogueGL.STANDARD_SHAPE_SIZE;
395
633
  }
634
+ this.selectedIndexes = [];
396
635
  }
397
636
  setSelectedIndexes(selectedIndex) {
398
637
  selectedIndex.forEach((idx) => {
@@ -419,8 +658,8 @@ export class CatalogueGL {
419
658
  * Run click-picking and update selection with the nearest candidate in current pixel.
420
659
  * Returns the selected source or null if no source was hit.
421
660
  */
422
- getSourcesFromPointer(in_mouseHelper) {
423
- const pickedIndexes = this.checkClicking(in_mouseHelper);
661
+ getSourcesFromPointer(in_mouseHelper, in_mMatrix, vMatrix, pMatrix) {
662
+ const pickedIndexes = this.checkClicking(in_mouseHelper, in_mMatrix, vMatrix, pMatrix);
424
663
  if (!pickedIndexes.length) {
425
664
  return {
426
665
  sources: [],
@@ -439,8 +678,8 @@ export class CatalogueGL {
439
678
  * Run click-picking and update selection with the nearest candidate in current pixel.
440
679
  * Returns the selected source or null if no source was hit.
441
680
  */
442
- selectPrimarySourceFromClick(in_mouseHelper) {
443
- const picked = this.getSourcesFromPointer(in_mouseHelper);
681
+ selectPrimarySourceFromClick(in_mouseHelper, in_mMatrix, vMatrix, pMatrix) {
682
+ const picked = this.getSourcesFromPointer(in_mouseHelper, in_mMatrix, vMatrix, pMatrix);
444
683
  const clickedIndexes = picked?.pickedIndexes ?? [];
445
684
  // if (!clickedIndexes.length) {
446
685
  // this.setSelectedIndexes([]);
@@ -476,42 +715,65 @@ export class CatalogueGL {
476
715
  const idx = this.hoveredIndexes[0];
477
716
  return this._sources[idx] ?? null;
478
717
  }
479
- findNearestSourceIndex(in_mouseHelper) {
480
- if (in_mouseHelper.x == null ||
481
- in_mouseHelper.y == null ||
482
- in_mouseHelper.z == null) {
718
+ findNearestSourceIndex(in_mouseHelper, in_mMatrix, vMatrix, pMatrix) {
719
+ if (in_mouseHelper.xyz == null)
483
720
  return null;
721
+ const healpix = global.getHealpix(global.selectionOrder);
722
+ const mouseVec = new Vec3(...in_mouseHelper.xyz);
723
+ const mousePointing = new Pointing(mouseVec, false);
724
+ const searchRadiusRad = this.getCandidateSearchRadiusRad(pMatrix);
725
+ const rangeSet = healpix.queryDiscInclusive(mousePointing, searchRadiusRad, 4);
726
+ const pixels = rangeSet.r;
727
+ const candidateIndexes = new Set();
728
+ for (const pixel of pixels) {
729
+ const indexes = this._healpixDensityMap.get(pixel);
730
+ if (!indexes)
731
+ continue;
732
+ indexes.forEach((idx) => candidateIndexes.add(idx));
484
733
  }
485
- const mousePix = in_mouseHelper.computeNpix();
486
- if (mousePix == null)
734
+ if (!candidateIndexes.size)
735
+ return null;
736
+ const canvas = this._webgl.canvas;
737
+ const width = canvas.clientWidth;
738
+ const height = canvas.clientHeight;
739
+ if (!width || !height)
487
740
  return null;
488
- const candidates = this._healpixDensityMap.get(mousePix);
489
- if (!candidates?.length)
741
+ const modelView = mat4.create();
742
+ const mvp = mat4.create();
743
+ mat4.multiply(modelView, vMatrix, in_mMatrix);
744
+ mat4.multiply(mvp, pMatrix, modelView);
745
+ const mousePoint = new Point({
746
+ x: in_mouseHelper.xyz[0],
747
+ y: in_mouseHelper.xyz[1],
748
+ z: in_mouseHelper.xyz[2],
749
+ }, CoordsType.CARTESIAN);
750
+ const mouseScreen = this.projectPointToScreen(mousePoint, mvp, width, height);
751
+ if (!mouseScreen)
490
752
  return null;
491
- const selR = this.getSelectionRadius();
492
753
  let nearestIndex = null;
493
- let nearestDistance = Number.POSITIVE_INFINITY;
494
- for (const sourceIdx of candidates) {
754
+ let nearestDistancePx = Number.POSITIVE_INFINITY;
755
+ for (const sourceIdx of candidateIndexes) {
495
756
  const source = this._sources[sourceIdx];
496
757
  if (!source)
497
758
  continue;
498
- const dx = source.point.x - in_mouseHelper.x;
499
- const dy = source.point.y - in_mouseHelper.y;
500
- const dz = source.point.z - in_mouseHelper.z;
501
- const dist = Math.sqrt(dx * dx + dy * dy + dz * dz);
502
- if (dist <= selR && dist < nearestDistance) {
503
- nearestDistance = dist;
759
+ const sourceScreen = this.projectPointToScreen(source.point, mvp, width, height);
760
+ if (!sourceScreen)
761
+ continue;
762
+ const distancePx = Math.hypot(sourceScreen[0] - mouseScreen[0], sourceScreen[1] - mouseScreen[1]);
763
+ if (distancePx <= this.getHitRadiusPx(source) &&
764
+ distancePx < nearestDistancePx) {
765
+ nearestDistancePx = distancePx;
504
766
  nearestIndex = sourceIdx;
505
767
  }
506
768
  }
507
769
  return nearestIndex;
508
770
  }
509
- checkClicking(in_mouseHelper) {
510
- const nearestIndex = this.findNearestSourceIndex(in_mouseHelper);
771
+ checkClicking(in_mouseHelper, in_mMatrix, vMatrix, pMatrix) {
772
+ const nearestIndex = this.findNearestSourceIndex(in_mouseHelper, in_mMatrix, vMatrix, pMatrix);
511
773
  return nearestIndex == null ? [] : [nearestIndex];
512
774
  }
513
- checkHovering(in_mouseHelper) {
514
- const nearestIndex = this.findNearestSourceIndex(in_mouseHelper);
775
+ checkHovering(in_mouseHelper, in_mMatrix, vMatrix, pMatrix) {
776
+ const nearestIndex = this.findNearestSourceIndex(in_mouseHelper, in_mMatrix, vMatrix, pMatrix);
515
777
  return nearestIndex == null ? [] : [nearestIndex];
516
778
  }
517
779
  /**
@@ -547,6 +809,13 @@ export class CatalogueGL {
547
809
  if (this._catalogueShaderProgram.locations.color) {
548
810
  this._webgl.uniform4f(this._catalogueShaderProgram.locations.color, rgb[0], rgb[1], rgb[2], 1.0);
549
811
  }
812
+ const interactionColors = interactionColorsFromHex(this._shapeColor);
813
+ if (this._catalogueShaderProgram.locations.hoverColor) {
814
+ this._webgl.uniform4f(this._catalogueShaderProgram.locations.hoverColor, ...interactionColors.hover, 1.0);
815
+ }
816
+ if (this._catalogueShaderProgram.locations.selectedColor) {
817
+ this._webgl.uniform4f(this._catalogueShaderProgram.locations.selectedColor, ...interactionColors.selected, 1.0);
818
+ }
550
819
  // selected flags
551
820
  for (let s = 0; s < this.selectedIndexes.length; s++) {
552
821
  const idx = this.selectedIndexes[s];
@@ -557,7 +826,8 @@ export class CatalogueGL {
557
826
  // clear old hovered
558
827
  for (let k = 0; k < this.hoveredIndexes.length; k++) {
559
828
  const base = this.hoveredIndexes[k] * CatalogueGL.ELEM_SIZE;
560
- // if (this.vertexCataloguePosition[base + 3] == 2.0) continue; // selected, skip hover
829
+ if (this.selectedIndexes.includes(this.hoveredIndexes[k]))
830
+ continue;
561
831
  this.vertexCataloguePosition[base + 3] = 0.0; // not hovered
562
832
  this.vertexCataloguePosition[base + 4] =
563
833
  this._sources[this.hoveredIndexes[k]].shapeSize; // size
@@ -571,7 +841,7 @@ export class CatalogueGL {
571
841
  // this.vertexCataloguePosition[base + 3] = 0.0; // not hovered
572
842
  // this.vertexCataloguePosition[base + 4] = this._sources[this.hoveredIndexes[k]].shapeSize; // size
573
843
  // }
574
- this.hoveredIndexes = this.checkHovering(in_mouseHelper);
844
+ this.hoveredIndexes = this.checkHovering(in_mouseHelper, in_mMatrix, vMatrix, pMatrix);
575
845
  // // new hovered
576
846
  // for (let i = 0; i < this.hoveredIndexes.length; i++) {
577
847
  // const idx = this.hoveredIndexes[i];
@@ -585,7 +855,8 @@ export class CatalogueGL {
585
855
  for (let i = 0; i < this.hoveredIndexes.length; i++) {
586
856
  const idx = this.hoveredIndexes[i];
587
857
  const base = idx * CatalogueGL.ELEM_SIZE;
588
- // if (this.vertexCataloguePosition[base + 3] == 2.0) continue; // selected, skip hover
858
+ if (this.selectedIndexes.includes(idx))
859
+ continue;
589
860
  this.vertexCataloguePosition[base + 3] = 1.0; // hovered
590
861
  this.vertexCataloguePosition[base + 4] = this._sources[idx].shapeSize; // size
591
862
  }
@@ -594,6 +865,7 @@ export class CatalogueGL {
594
865
  // draw
595
866
  const numItems = this.vertexCataloguePosition.length / CatalogueGL.ELEM_SIZE;
596
867
  this._webgl.drawArrays(this._webgl.POINTS, 0, numItems);
868
+ this.updateMediaOverlay(in_mMatrix, vMatrix, pMatrix);
597
869
  this._oldMouseCoords = in_mouseHelper.xyz;
598
870
  }
599
871
  }
@@ -1 +1 @@
1
- {"version":3,"file":"CatalogueGL.js","sourceRoot":"","sources":["../../../src/model/catalogues/CatalogueGL.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CatalogueGL.js","sourceRoot":"","sources":["../../../src/model/catalogues/CatalogueGL.ts"],"names":[],"mappings":"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"}