astro-viewer 3.6.0 → 3.7.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/dist/64.astroviewer.cjs +37 -0
- package/dist/64.astroviewer.cjs.map +1 -0
- package/dist/64.astroviewer.js +41 -0
- package/dist/64.astroviewer.js.map +1 -0
- package/dist/64.astroviewer.min.js +2 -0
- package/dist/64.astroviewer.min.js.map +1 -0
- package/dist/911.astroviewer.cjs +4047 -0
- package/dist/911.astroviewer.cjs.map +1 -0
- package/dist/911.astroviewer.js +735 -0
- package/dist/911.astroviewer.js.map +1 -0
- package/dist/911.astroviewer.min.js +2 -0
- package/dist/911.astroviewer.min.js.map +1 -0
- package/dist/astroviewer.cjs +2704 -510
- package/dist/astroviewer.cjs.map +1 -1
- package/dist/astroviewer.js +2861 -512
- package/dist/astroviewer.js.map +1 -1
- package/dist/astroviewer.min.js +1 -1
- package/dist/astroviewer.min.js.map +1 -1
- package/lib-esm/AstroSphere.d.ts +1 -1
- package/lib-esm/AstroSphere.d.ts.map +1 -1
- package/lib-esm/AstroSphere.js +15 -25
- package/lib-esm/AstroSphere.js.map +1 -1
- package/lib-esm/AstroViewer.d.ts +25 -23
- package/lib-esm/AstroViewer.d.ts.map +1 -1
- package/lib-esm/AstroViewer.js +97 -67
- package/lib-esm/AstroViewer.js.map +1 -1
- package/lib-esm/model/hips/AllSky.d.ts +7 -3
- package/lib-esm/model/hips/AllSky.d.ts.map +1 -1
- package/lib-esm/model/hips/AllSky.js +93 -28
- package/lib-esm/model/hips/AllSky.js.map +1 -1
- package/lib-esm/model/hips/AncestorTile.d.ts +7 -4
- package/lib-esm/model/hips/AncestorTile.d.ts.map +1 -1
- package/lib-esm/model/hips/AncestorTile.js +91 -52
- package/lib-esm/model/hips/AncestorTile.js.map +1 -1
- package/lib-esm/model/hips/FitsTileLoader.d.ts +9 -0
- package/lib-esm/model/hips/FitsTileLoader.d.ts.map +1 -0
- package/lib-esm/model/hips/FitsTileLoader.js +65 -0
- package/lib-esm/model/hips/FitsTileLoader.js.map +1 -0
- package/lib-esm/model/hips/HiPS.d.ts +9 -5
- package/lib-esm/model/hips/HiPS.d.ts.map +1 -1
- package/lib-esm/model/hips/HiPS.js +120 -72
- package/lib-esm/model/hips/HiPS.js.map +1 -1
- package/lib-esm/model/hips/HiPSCoverage.d.ts +15 -0
- package/lib-esm/model/hips/HiPSCoverage.d.ts.map +1 -0
- package/lib-esm/model/hips/HiPSCoverage.js +148 -0
- package/lib-esm/model/hips/HiPSCoverage.js.map +1 -0
- package/lib-esm/model/hips/Tile.d.ts +8 -4
- package/lib-esm/model/hips/Tile.d.ts.map +1 -1
- package/lib-esm/model/hips/Tile.js +111 -55
- package/lib-esm/model/hips/Tile.js.map +1 -1
- package/lib-esm/model/hips/TileBuffer.d.ts +13 -4
- package/lib-esm/model/hips/TileBuffer.d.ts.map +1 -1
- package/lib-esm/model/hips/TileBuffer.js +46 -11
- package/lib-esm/model/hips/TileBuffer.js.map +1 -1
- package/lib-esm/model/hips/VisibleTilesManager.d.ts +5 -5
- package/lib-esm/model/hips/VisibleTilesManager.d.ts.map +1 -1
- package/lib-esm/model/hips/VisibleTilesManager.js +6 -20
- package/lib-esm/model/hips/VisibleTilesManager.js.map +1 -1
- package/lib-esm/shader/HiPSShaderProgram.d.ts +9 -2
- package/lib-esm/shader/HiPSShaderProgram.d.ts.map +1 -1
- package/lib-esm/shader/HiPSShaderProgram.js +91 -53
- package/lib-esm/shader/HiPSShaderProgram.js.map +1 -1
- package/lib-esm/shader/ShaderManager.d.ts +2 -0
- package/lib-esm/shader/ShaderManager.d.ts.map +1 -1
- package/lib-esm/shader/ShaderManager.js +193 -94
- package/lib-esm/shader/ShaderManager.js.map +1 -1
- package/package.json +3 -3
|
@@ -8,15 +8,15 @@
|
|
|
8
8
|
*
|
|
9
9
|
* See LICENSE.md, LICENSE-AGPL.md, and LICENSE-COMMERCIAL.md for details.
|
|
10
10
|
*/
|
|
11
|
-
|
|
11
|
+
"use strict";
|
|
12
12
|
/**
|
|
13
13
|
* @author Fabrizio Giordano (Fab77)
|
|
14
14
|
*/
|
|
15
|
-
import { AbstractSkyEntity } from
|
|
16
|
-
import { fovHelper } from
|
|
17
|
-
import ColorMaps from
|
|
18
|
-
import AncestorTile from
|
|
19
|
-
import AllSky from
|
|
15
|
+
import { AbstractSkyEntity } from "../AbstractSkyEntity.js";
|
|
16
|
+
import { fovHelper } from "./FoVHelper.js";
|
|
17
|
+
import ColorMaps from "../ColorMaps.js";
|
|
18
|
+
import AncestorTile from "./AncestorTile.js";
|
|
19
|
+
import AllSky from "./AllSky.js";
|
|
20
20
|
export class HiPS extends AbstractSkyEntity {
|
|
21
21
|
_ancestorTiles;
|
|
22
22
|
_allSkyTile;
|
|
@@ -29,30 +29,47 @@ export class HiPS extends AbstractSkyEntity {
|
|
|
29
29
|
_allSky = true;
|
|
30
30
|
samplerIdx = 0;
|
|
31
31
|
colorMapIdx = 0;
|
|
32
|
-
colorMap = ColorMaps[
|
|
32
|
+
colorMap = ColorMaps["native"];
|
|
33
33
|
_healpixGrid;
|
|
34
34
|
// exposed read-only helpers
|
|
35
|
-
get maxOrder() {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
get
|
|
39
|
-
|
|
40
|
-
|
|
35
|
+
get maxOrder() {
|
|
36
|
+
return this._maxorder;
|
|
37
|
+
}
|
|
38
|
+
get minOrder() {
|
|
39
|
+
return this._minorder;
|
|
40
|
+
}
|
|
41
|
+
get baseURL() {
|
|
42
|
+
return this._baseurl;
|
|
43
|
+
}
|
|
44
|
+
get format() {
|
|
45
|
+
return this._format;
|
|
46
|
+
}
|
|
47
|
+
get propertiesRawText() {
|
|
48
|
+
return this._descriptor.propertiesRawText;
|
|
49
|
+
}
|
|
50
|
+
get properties() {
|
|
51
|
+
return this._descriptor.properties;
|
|
52
|
+
}
|
|
41
53
|
constructor(radius, position, xrad, yrad, descriptor, webgl, healpixGrid) {
|
|
42
54
|
super(radius, position, xrad, yrad, descriptor.surveyName, webgl, descriptor.isGalactic);
|
|
43
55
|
this._descriptor = descriptor;
|
|
44
56
|
this.initGL(webgl);
|
|
45
57
|
this._healpixGrid = healpixGrid;
|
|
46
|
-
this.
|
|
47
|
-
// DEBUG logs kept from JS (optional)
|
|
48
|
-
// eslint-disable-next-line no-console
|
|
49
|
-
console.log('HiPS frame ' + descriptor.hipsFrame);
|
|
50
|
-
// eslint-disable-next-line no-console
|
|
51
|
-
console.log('HiPS minOrder ' + descriptor.minOrder);
|
|
52
|
-
this._format = descriptor.imgFormats[0];
|
|
58
|
+
this._format = this.selectDefaultFormat(descriptor.imgFormats);
|
|
53
59
|
this._baseurl = descriptor.url;
|
|
54
60
|
this._maxorder = descriptor.maxOrder;
|
|
55
61
|
this._minorder = descriptor.minOrder;
|
|
62
|
+
if (this.isGalacticHips) {
|
|
63
|
+
this._healpixGrid.visibleTilesManager.tileBuffer.addGalHiPS(this);
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
this._healpixGrid.visibleTilesManager.tileBuffer.addHiPS(this);
|
|
67
|
+
}
|
|
68
|
+
// DEBUG logs kept from JS (optional)
|
|
69
|
+
// eslint-disable-next-line no-console
|
|
70
|
+
console.log("HiPS frame " + descriptor.hipsFrame);
|
|
71
|
+
// eslint-disable-next-line no-console
|
|
72
|
+
console.log("HiPS minOrder " + descriptor.minOrder);
|
|
56
73
|
this.initShaders();
|
|
57
74
|
// pick initial order from a starting FoV
|
|
58
75
|
const fov = 180;
|
|
@@ -62,39 +79,52 @@ export class HiPS extends AbstractSkyEntity {
|
|
|
62
79
|
this._allSkyTile = null;
|
|
63
80
|
// auto-detect all-sky: original code forces true
|
|
64
81
|
this._allSky = true;
|
|
82
|
+
this.initBaseTiles();
|
|
83
|
+
}
|
|
84
|
+
initBaseTiles() {
|
|
85
|
+
this._ancestorTiles = [];
|
|
86
|
+
this._allSkyTile = null;
|
|
65
87
|
if (this._allSky) {
|
|
66
88
|
this._allSkyTile = new AllSky(this, this._webgl, this._healpixGrid.visibleTilesManager.tileBuffer, super.hipsShaderProgram);
|
|
89
|
+
return;
|
|
67
90
|
}
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
this._ancestorTiles.push(new AncestorTile(t, 0, this, this._healpixGrid.visibleTilesManager.tileBuffer, super.hipsShaderProgram, this._webgl));
|
|
71
|
-
}
|
|
91
|
+
for (let t = 0; t < 12; t++) {
|
|
92
|
+
this._ancestorTiles.push(new AncestorTile(t, 0, this, this._healpixGrid.visibleTilesManager.tileBuffer, super.hipsShaderProgram, this._webgl));
|
|
72
93
|
}
|
|
73
94
|
}
|
|
74
95
|
getProperty(key) {
|
|
75
96
|
return this._descriptor.getProperty(key);
|
|
76
97
|
}
|
|
77
98
|
changeFormat(format) {
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
if (this.
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
99
|
+
const normalizedFormat = format.toLowerCase();
|
|
100
|
+
if (!this._descriptor.imgFormats.includes(normalizedFormat)) {
|
|
101
|
+
throw new Error(`HiPS format "${format}" is not supported. ` +
|
|
102
|
+
`Available formats: ${this._descriptor.imgFormats.join(", ")}`);
|
|
103
|
+
}
|
|
104
|
+
if (normalizedFormat === this._format.toLowerCase()) {
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
const tileBuffer = this._healpixGrid.visibleTilesManager.tileBuffer;
|
|
108
|
+
/*
|
|
109
|
+
* Remove Tile instances created using the previous format.
|
|
110
|
+
*
|
|
111
|
+
* TileBuffer invalidates by HiPS identity/base URL rather than by the
|
|
112
|
+
* current format, so both active and cached resources are discarded.
|
|
113
|
+
*/
|
|
114
|
+
tileBuffer.invalidateHiPS(this);
|
|
115
|
+
/*
|
|
116
|
+
* Change format before recreating AllSky/AncestorTile because their
|
|
117
|
+
* constructors read hips.format.
|
|
118
|
+
*/
|
|
119
|
+
this._format = normalizedFormat;
|
|
120
|
+
/*
|
|
121
|
+
* AllSky and AncestorTile also keep the format they were constructed
|
|
122
|
+
* with, so they must be recreated.
|
|
123
|
+
*/
|
|
124
|
+
this.initBaseTiles();
|
|
125
|
+
}
|
|
126
|
+
get availableFormats() {
|
|
127
|
+
return this._descriptor.imgFormats;
|
|
98
128
|
}
|
|
99
129
|
/**
|
|
100
130
|
* Shader colormap switcher
|
|
@@ -107,60 +137,60 @@ export class HiPS extends AbstractSkyEntity {
|
|
|
107
137
|
* 6 -> cubehelix
|
|
108
138
|
*/
|
|
109
139
|
changeColorMap(colorMap) {
|
|
110
|
-
console.log(
|
|
140
|
+
console.log("HiPS.changeColorMap -> shaderProgram", super.hipsShaderProgram.shaderProgram);
|
|
111
141
|
this.colorMap = colorMap;
|
|
112
142
|
switch (colorMap.name) {
|
|
113
|
-
case
|
|
143
|
+
case "grayscale":
|
|
114
144
|
this.colorMapIdx = 1;
|
|
115
145
|
// hipsShaderProgram.setGrayscaleShader()
|
|
116
|
-
this.colorMap = ColorMaps[
|
|
146
|
+
this.colorMap = ColorMaps["grayscale"];
|
|
117
147
|
super.hipsShaderProgram.setGrayscaleShader();
|
|
118
148
|
break;
|
|
119
|
-
case
|
|
149
|
+
case "planck":
|
|
120
150
|
this.colorMapIdx = 2;
|
|
121
|
-
this.colorMap = ColorMaps[
|
|
151
|
+
this.colorMap = ColorMaps["planck"];
|
|
122
152
|
// hipsShaderProgram.setColorMapShader()
|
|
123
153
|
super.hipsShaderProgram.setColorMapShader();
|
|
124
154
|
break;
|
|
125
|
-
case
|
|
155
|
+
case "cmb":
|
|
126
156
|
this.colorMapIdx = 3;
|
|
127
|
-
this.colorMap = ColorMaps[
|
|
157
|
+
this.colorMap = ColorMaps["cmb"];
|
|
128
158
|
// hipsShaderProgram.setColorMapShader()
|
|
129
159
|
super.hipsShaderProgram.setColorMapShader();
|
|
130
160
|
break;
|
|
131
|
-
case
|
|
161
|
+
case "rainbow":
|
|
132
162
|
this.colorMapIdx = 4;
|
|
133
|
-
this.colorMap = ColorMaps[
|
|
163
|
+
this.colorMap = ColorMaps["rainbow"];
|
|
134
164
|
// hipsShaderProgram.setColorMapShader()
|
|
135
165
|
super.hipsShaderProgram.setColorMapShader();
|
|
136
166
|
break;
|
|
137
|
-
case
|
|
167
|
+
case "eosb":
|
|
138
168
|
this.colorMapIdx = 5;
|
|
139
|
-
this.colorMap = ColorMaps[
|
|
169
|
+
this.colorMap = ColorMaps["eosb"];
|
|
140
170
|
super.hipsShaderProgram.setColorMapShader();
|
|
141
171
|
// hipsShaderProgram.setColorMapShader()
|
|
142
172
|
break;
|
|
143
|
-
case
|
|
173
|
+
case "cubehelix":
|
|
144
174
|
this.colorMapIdx = 6;
|
|
145
|
-
this.colorMap = ColorMaps[
|
|
175
|
+
this.colorMap = ColorMaps["cubehelix"];
|
|
146
176
|
super.hipsShaderProgram.setColorMapShader();
|
|
147
177
|
// hipsShaderProgram.setColorMapShader()
|
|
148
178
|
break;
|
|
149
|
-
case
|
|
179
|
+
case "hot":
|
|
150
180
|
this.colorMapIdx = 7;
|
|
151
|
-
this.colorMap = ColorMaps[
|
|
181
|
+
this.colorMap = ColorMaps["hot"];
|
|
152
182
|
super.hipsShaderProgram.setColorMapShader();
|
|
153
183
|
// hipsShaderProgram.setColorMapShader()
|
|
154
184
|
break;
|
|
155
|
-
case
|
|
185
|
+
case "gray":
|
|
156
186
|
this.colorMapIdx = 8;
|
|
157
|
-
this.colorMap = ColorMaps[
|
|
187
|
+
this.colorMap = ColorMaps["gray"];
|
|
158
188
|
super.hipsShaderProgram.setColorMapShader();
|
|
159
189
|
// hipsShaderProgram.setColorMapShader()
|
|
160
190
|
break;
|
|
161
|
-
case
|
|
191
|
+
case "native":
|
|
162
192
|
this.colorMapIdx = 0;
|
|
163
|
-
this.colorMap = ColorMaps[
|
|
193
|
+
this.colorMap = ColorMaps["native"];
|
|
164
194
|
super.hipsShaderProgram.setNativeShader();
|
|
165
195
|
break;
|
|
166
196
|
default:
|
|
@@ -175,6 +205,30 @@ export class HiPS extends AbstractSkyEntity {
|
|
|
175
205
|
// this.shaderProgram = super.hipsShaderProgram.shaderProgram
|
|
176
206
|
// this.shaderProgram = hipsShaderProgram.shaderProgram
|
|
177
207
|
}
|
|
208
|
+
// private selectDefaultFormat(formats: string[]): string {
|
|
209
|
+
// if (formats.includes("fits")) return "fits";
|
|
210
|
+
// if (formats.includes("png")) return "png";
|
|
211
|
+
// if (formats.includes("jpg")) return "jpg";
|
|
212
|
+
// if (formats.length > 0) {
|
|
213
|
+
// return formats[0];
|
|
214
|
+
// }
|
|
215
|
+
// throw new Error("HiPS descriptor does not define a tile format");
|
|
216
|
+
// }
|
|
217
|
+
selectDefaultFormat(formats) {
|
|
218
|
+
if (formats.includes("png"))
|
|
219
|
+
return "png";
|
|
220
|
+
if (formats.includes("jpg"))
|
|
221
|
+
return "jpg";
|
|
222
|
+
if (formats.includes("fits"))
|
|
223
|
+
return "fits";
|
|
224
|
+
if (formats.length > 0) {
|
|
225
|
+
return formats[0];
|
|
226
|
+
}
|
|
227
|
+
throw new Error("HiPS descriptor does not define a tile format");
|
|
228
|
+
}
|
|
229
|
+
get dataRange() {
|
|
230
|
+
return this._descriptor.dataRange;
|
|
231
|
+
}
|
|
178
232
|
getCurrentHealpixOrder() {
|
|
179
233
|
return this._visibleorder;
|
|
180
234
|
}
|
|
@@ -184,7 +238,7 @@ export class HiPS extends AbstractSkyEntity {
|
|
|
184
238
|
? this._healpixGrid.visibleTilesManager.galVisibleTilesByOrder
|
|
185
239
|
: this._healpixGrid.visibleTilesManager.visibleTilesByOrder;
|
|
186
240
|
return {
|
|
187
|
-
activeBaseLayer:
|
|
241
|
+
activeBaseLayer: "hips",
|
|
188
242
|
hipsName: this._descriptor.surveyName,
|
|
189
243
|
hipsUrl: this._baseurl,
|
|
190
244
|
isGalactic: this.isGalacticHips,
|
|
@@ -216,16 +270,10 @@ export class HiPS extends AbstractSkyEntity {
|
|
|
216
270
|
super.hipsShaderProgram.setRuntimeColorMap(this.colorMap);
|
|
217
271
|
if (this._allSky && this._allSkyTile) {
|
|
218
272
|
if (this.isGalacticHips) {
|
|
219
|
-
this._allSkyTile.draw(this._healpixGrid.visibleTilesManager.galVisibleTilesByOrder.order, this._healpixGrid.visibleTilesManager.galAncestorsMap,
|
|
220
|
-
// visibleTilesManager.galVisibleTilesByOrder.order,
|
|
221
|
-
// visibleTilesManager.galAncestorsMap,
|
|
222
|
-
pMatrix, vMatrix, mMatrix, this.colorMapIdx);
|
|
273
|
+
this._allSkyTile.draw(this._healpixGrid.visibleTilesManager.galVisibleTilesByOrder.order, this._healpixGrid.visibleTilesManager.galAncestorsMap, pMatrix, vMatrix, mMatrix, this.colorMapIdx);
|
|
223
274
|
}
|
|
224
275
|
else {
|
|
225
|
-
this._allSkyTile.draw(this._healpixGrid.visibleTilesManager.visibleTilesByOrder.order, this._healpixGrid.visibleTilesManager.ancestorsMap,
|
|
226
|
-
// visibleTilesManager.visibleTilesByOrder.order,
|
|
227
|
-
// visibleTilesManager.ancestorsMap,
|
|
228
|
-
pMatrix, vMatrix, mMatrix, this.colorMapIdx);
|
|
276
|
+
this._allSkyTile.draw(this._healpixGrid.visibleTilesManager.visibleTilesByOrder.order, this._healpixGrid.visibleTilesManager.ancestorsMap, pMatrix, vMatrix, mMatrix, this.colorMapIdx);
|
|
229
277
|
}
|
|
230
278
|
return;
|
|
231
279
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HiPS.js","sourceRoot":"","sources":["../../../src/model/hips/HiPS.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,YAAY,
|
|
1
|
+
{"version":3,"file":"HiPS.js","sourceRoot":"","sources":["../../../src/model/hips/HiPS.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export declare class HiPSCoverage {
|
|
2
|
+
private _maxOrder;
|
|
3
|
+
private _intervals;
|
|
4
|
+
private _loaded;
|
|
5
|
+
get loaded(): boolean;
|
|
6
|
+
get maxOrder(): number;
|
|
7
|
+
get intervalCount(): number;
|
|
8
|
+
clear(): void;
|
|
9
|
+
load(baseUrl: string): Promise<void>;
|
|
10
|
+
intersectsTile(order: number, pixel: number): boolean;
|
|
11
|
+
private intersectsInterval;
|
|
12
|
+
private static decodeUniq;
|
|
13
|
+
private static mergeIntervals;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=HiPSCoverage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HiPSCoverage.d.ts","sourceRoot":"","sources":["../../../src/model/hips/HiPSCoverage.ts"],"names":[],"mappings":"AAkBA,qBAAa,YAAY;IACvB,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,UAAU,CAA0B;IAC5C,OAAO,CAAC,OAAO,CAAS;IAExB,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED,KAAK,IAAI,IAAI;IAMP,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmE1C,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;IAqCrD,OAAO,CAAC,kBAAkB;IAwB1B,OAAO,CAAC,MAAM,CAAC,UAAU;IAkBzB,OAAO,CAAC,MAAM,CAAC,cAAc;CAwB9B"}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* AstroViewer
|
|
3
|
+
* Copyright (C) Fabrizio Giordano
|
|
4
|
+
* SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-AstroViewer-Commercial
|
|
5
|
+
*
|
|
6
|
+
* AstroViewer is dual-licensed under the GNU Affero General Public License
|
|
7
|
+
* version 3 and a separate commercial license.
|
|
8
|
+
*
|
|
9
|
+
* See LICENSE.md, LICENSE-AGPL.md, and LICENSE-COMMERCIAL.md for details.
|
|
10
|
+
*/
|
|
11
|
+
import { BinaryTableHDU, FITSParser } from "jsfitsio";
|
|
12
|
+
export class HiPSCoverage {
|
|
13
|
+
_maxOrder = 0;
|
|
14
|
+
_intervals = [];
|
|
15
|
+
_loaded = false;
|
|
16
|
+
get loaded() {
|
|
17
|
+
return this._loaded;
|
|
18
|
+
}
|
|
19
|
+
get maxOrder() {
|
|
20
|
+
return this._maxOrder;
|
|
21
|
+
}
|
|
22
|
+
get intervalCount() {
|
|
23
|
+
return this._intervals.length;
|
|
24
|
+
}
|
|
25
|
+
clear() {
|
|
26
|
+
this._maxOrder = 0;
|
|
27
|
+
this._intervals = [];
|
|
28
|
+
this._loaded = false;
|
|
29
|
+
}
|
|
30
|
+
async load(baseUrl) {
|
|
31
|
+
this.clear();
|
|
32
|
+
const normalizedBaseUrl = baseUrl.endsWith("/") ? baseUrl : `${baseUrl}/`;
|
|
33
|
+
const fits = await FITSParser.loadFITSFile(`${normalizedBaseUrl}Moc.fits`);
|
|
34
|
+
if (!fits) {
|
|
35
|
+
throw new Error("Unable to load HiPS Moc.fits");
|
|
36
|
+
}
|
|
37
|
+
const mocHDU = fits.hdus.find((hdu) => hdu instanceof BinaryTableHDU);
|
|
38
|
+
if (!(mocHDU instanceof BinaryTableHDU)) {
|
|
39
|
+
throw new Error("HiPS Moc.fits does not contain a BINTABLE HDU.");
|
|
40
|
+
}
|
|
41
|
+
const mocOrderItem = mocHDU.header.findById("MOCORDER");
|
|
42
|
+
if (!mocOrderItem) {
|
|
43
|
+
throw new Error("HiPS Moc.fits does not define MOCORDER.");
|
|
44
|
+
}
|
|
45
|
+
const maxOrder = Number(mocOrderItem.value);
|
|
46
|
+
if (!Number.isInteger(maxOrder) || maxOrder < 0) {
|
|
47
|
+
throw new Error(`Invalid MOCORDER value: ${mocOrderItem.value}`);
|
|
48
|
+
}
|
|
49
|
+
this._maxOrder = maxOrder;
|
|
50
|
+
const intervals = [];
|
|
51
|
+
for (let row = 0; row < mocHDU.rowCount; row++) {
|
|
52
|
+
const rawUniq = mocHDU.getCell(row, "UNIQ");
|
|
53
|
+
if (typeof rawUniq !== "number" ||
|
|
54
|
+
!Number.isInteger(rawUniq) ||
|
|
55
|
+
rawUniq < 4) {
|
|
56
|
+
throw new Error(`Invalid MOC UNIQ value at row ${row}: ${String(rawUniq)}`);
|
|
57
|
+
}
|
|
58
|
+
const { order, pixel } = HiPSCoverage.decodeUniq(rawUniq);
|
|
59
|
+
if (order > this._maxOrder) {
|
|
60
|
+
throw new Error(`MOC cell order ${order} exceeds MOCORDER ${this._maxOrder}.`);
|
|
61
|
+
}
|
|
62
|
+
const scale = 4 ** (this._maxOrder - order);
|
|
63
|
+
intervals.push({
|
|
64
|
+
first: pixel * scale,
|
|
65
|
+
last: (pixel + 1) * scale - 1,
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
this._intervals = HiPSCoverage.mergeIntervals(intervals);
|
|
69
|
+
this._loaded = true;
|
|
70
|
+
}
|
|
71
|
+
intersectsTile(order, pixel) {
|
|
72
|
+
if (!this._loaded) {
|
|
73
|
+
return true;
|
|
74
|
+
}
|
|
75
|
+
if (!Number.isInteger(order) ||
|
|
76
|
+
order < 0 ||
|
|
77
|
+
!Number.isInteger(pixel) ||
|
|
78
|
+
pixel < 0) {
|
|
79
|
+
return false;
|
|
80
|
+
}
|
|
81
|
+
let first;
|
|
82
|
+
let last;
|
|
83
|
+
if (order <= this._maxOrder) {
|
|
84
|
+
const scale = 4 ** (this._maxOrder - order);
|
|
85
|
+
first = pixel * scale;
|
|
86
|
+
last = (pixel + 1) * scale - 1;
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
/*
|
|
90
|
+
* At orders finer than the MOC resolution, reduce the tile
|
|
91
|
+
* to its ancestor at MOCORDER.
|
|
92
|
+
*/
|
|
93
|
+
const shift = 2 * (order - this._maxOrder);
|
|
94
|
+
const ancestor = Math.floor(pixel / 2 ** shift);
|
|
95
|
+
first = ancestor;
|
|
96
|
+
last = ancestor;
|
|
97
|
+
}
|
|
98
|
+
return this.intersectsInterval(first, last);
|
|
99
|
+
}
|
|
100
|
+
intersectsInterval(first, last) {
|
|
101
|
+
let low = 0;
|
|
102
|
+
let high = this._intervals.length - 1;
|
|
103
|
+
while (low <= high) {
|
|
104
|
+
const middle = Math.floor((low + high) / 2);
|
|
105
|
+
const interval = this._intervals[middle];
|
|
106
|
+
if (interval.last < first) {
|
|
107
|
+
low = middle + 1;
|
|
108
|
+
continue;
|
|
109
|
+
}
|
|
110
|
+
if (interval.first > last) {
|
|
111
|
+
high = middle - 1;
|
|
112
|
+
continue;
|
|
113
|
+
}
|
|
114
|
+
return true;
|
|
115
|
+
}
|
|
116
|
+
return false;
|
|
117
|
+
}
|
|
118
|
+
static decodeUniq(uniq) {
|
|
119
|
+
let order = 0;
|
|
120
|
+
while (4 ** (order + 2) <= uniq) {
|
|
121
|
+
order++;
|
|
122
|
+
}
|
|
123
|
+
const base = 4 ** (order + 1);
|
|
124
|
+
return {
|
|
125
|
+
order,
|
|
126
|
+
pixel: uniq - base,
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
static mergeIntervals(intervals) {
|
|
130
|
+
if (intervals.length === 0) {
|
|
131
|
+
return [];
|
|
132
|
+
}
|
|
133
|
+
intervals.sort((a, b) => a.first - b.first);
|
|
134
|
+
const merged = [{ ...intervals[0] }];
|
|
135
|
+
for (let i = 1; i < intervals.length; i++) {
|
|
136
|
+
const current = intervals[i];
|
|
137
|
+
const previous = merged[merged.length - 1];
|
|
138
|
+
if (current.first <= previous.last + 1) {
|
|
139
|
+
previous.last = Math.max(previous.last, current.last);
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
merged.push({ ...current });
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
return merged;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=HiPSCoverage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HiPSCoverage.js","sourceRoot":"","sources":["../../../src/model/hips/HiPSCoverage.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { TileBuffer } from
|
|
2
|
-
import { HiPS } from
|
|
3
|
-
import { VisibleTilesManager } from
|
|
4
|
-
import { HiPSShaderProgram } from
|
|
1
|
+
import { TileBuffer } from "./TileBuffer.js";
|
|
2
|
+
import { HiPS } from "./HiPS.js";
|
|
3
|
+
import { VisibleTilesManager } from "./VisibleTilesManager.js";
|
|
4
|
+
import { HiPSShaderProgram } from "../../shader/HiPSShaderProgram.js";
|
|
5
5
|
type Mat4 = Float32Array;
|
|
6
6
|
export default class Tile {
|
|
7
7
|
private _hips;
|
|
@@ -18,6 +18,7 @@ export default class Tile {
|
|
|
18
18
|
private _texture?;
|
|
19
19
|
private _texurl;
|
|
20
20
|
private _hipsShaderIndex;
|
|
21
|
+
private _fitsTile?;
|
|
21
22
|
private _cacheTime0?;
|
|
22
23
|
private _inView;
|
|
23
24
|
private _amIStillInFoV_requsetID;
|
|
@@ -37,11 +38,14 @@ export default class Tile {
|
|
|
37
38
|
resetCacheTime0(): void;
|
|
38
39
|
setCacheTime0(): void;
|
|
39
40
|
private initImage;
|
|
41
|
+
private loadImage;
|
|
42
|
+
private loadFits;
|
|
40
43
|
private imageLoaded;
|
|
41
44
|
private textureLoaded;
|
|
42
45
|
private initModelBuffer;
|
|
43
46
|
private computeVertexIndices;
|
|
44
47
|
private setupPositionAndTexture4Quadrant2;
|
|
48
|
+
private getFitsDataRange;
|
|
45
49
|
get inView(): boolean;
|
|
46
50
|
private moveToCache;
|
|
47
51
|
amIStillInFoV(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tile.d.ts","sourceRoot":"","sources":["../../../src/model/hips/Tile.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,
|
|
1
|
+
{"version":3,"file":"Tile.d.ts","sourceRoot":"","sources":["../../../src/model/hips/Tile.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAsBtE,KAAK,IAAI,GAAG,YAAY,CAAC;AAMzB,MAAM,CAAC,OAAO,OAAO,IAAI;IACvB,OAAO,CAAC,KAAK,CAAO;IACpB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,MAAM,CAAS;IAEvB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,eAAe,CAAU;IAEjC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,CAAe;IAChC,OAAO,CAAC,OAAO,CAAM;IAErB,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,SAAS,CAAC,CAAe;IAEjC,OAAO,CAAC,WAAW,CAAC,CAAS;IAC7B,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,wBAAwB,CAAS;IAGzC,OAAO,CAAC,cAAc,CAAsB;IAC5C,OAAO,CAAC,oBAAoB,CAAqB;IACjD,OAAO,CAAC,aAAa,CAAgD;IACrE,OAAO,CAAC,iBAAiB,CAAC,CAAc;IAExC,OAAO,CAAC,WAAW,CAAa;IAEzB,OAAO,SAAO;IACrB,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,mBAAmB,CAAsB;gBAI/C,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,sBAAsB,EAC7B,kBAAkB,EAAE,mBAAmB;IAwBzC,gBAAgB,IAAI,IAAI;IAIxB,aAAa,IAAI,OAAO;IAIxB,SAAS,IAAI,OAAO;IAIpB,IAAI,UAAU,IAAI,MAAM,GAAG,SAAS,CAEnC;IAED,eAAe,IAAI,IAAI;IAIvB,aAAa,IAAI,IAAI;IAIrB,OAAO,CAAC,SAAS;IAyBjB,OAAO,CAAC,SAAS;YAeH,QAAQ;IAatB,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,aAAa;IAqDrB,OAAO,CAAC,eAAe;IA6EvB,OAAO,CAAC,oBAAoB;IAgB5B,OAAO,CAAC,iCAAiC;IAsEzC,OAAO,CAAC,gBAAgB;IAmCxB,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,OAAO,CAAC,WAAW;IAOnB,aAAa,IAAI,IAAI;IAkFrB,IAAI,CACF,YAAY,EAAE,MAAM,EACpB,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EACtC,OAAO,EAAE,IAAI,EACb,OAAO,EAAE,IAAI,EACb,OAAO,EAAE,IAAI,EACb,WAAW,EAAE,MAAM,EACnB,iBAAiB,EAAE,iBAAiB,GACnC,IAAI;IAgGP,OAAO,CAAC,YAAY;CAoCrB"}
|