astro-viewer 1.3.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/README.md +373 -0
- package/dist/astroviewer.cjs +13941 -0
- package/dist/astroviewer.cjs.map +1 -0
- package/dist/astroviewer.js +2 -0
- package/dist/astroviewer.js.map +1 -0
- package/dist/astroviewer.min.js +2 -0
- package/dist/astroviewer.min.js.map +1 -0
- package/lib-esm/AstroSphere.d.ts +114 -0
- package/lib-esm/AstroSphere.d.ts.map +1 -0
- package/lib-esm/AstroSphere.js +679 -0
- package/lib-esm/AstroSphere.js.map +1 -0
- package/lib-esm/AstroViewer.d.ts +81 -0
- package/lib-esm/AstroViewer.d.ts.map +1 -0
- package/lib-esm/AstroViewer.js +348 -0
- package/lib-esm/AstroViewer.js.map +1 -0
- package/lib-esm/Camera.d.ts +74 -0
- package/lib-esm/Camera.d.ts.map +1 -0
- package/lib-esm/Camera.js +334 -0
- package/lib-esm/Camera.js.map +1 -0
- package/lib-esm/Config.d.ts +20 -0
- package/lib-esm/Config.d.ts.map +1 -0
- package/lib-esm/Config.js +32 -0
- package/lib-esm/Config.js.map +1 -0
- package/lib-esm/Global.d.ts +27 -0
- package/lib-esm/Global.d.ts.map +1 -0
- package/lib-esm/Global.js +52 -0
- package/lib-esm/Global.js.map +1 -0
- package/lib-esm/index.d.ts +17 -0
- package/lib-esm/index.d.ts.map +1 -0
- package/lib-esm/index.js +16 -0
- package/lib-esm/index.js.map +1 -0
- package/lib-esm/model/AbstractSkyEntity.d.ts +55 -0
- package/lib-esm/model/AbstractSkyEntity.d.ts.map +1 -0
- package/lib-esm/model/AbstractSkyEntity.js +153 -0
- package/lib-esm/model/AbstractSkyEntity.js.map +1 -0
- package/lib-esm/model/AstroGL.d.ts +11 -0
- package/lib-esm/model/AstroGL.d.ts.map +1 -0
- package/lib-esm/model/AstroGL.js +2 -0
- package/lib-esm/model/AstroGL.js.map +1 -0
- package/lib-esm/model/ColorMaps.d.ts +17 -0
- package/lib-esm/model/ColorMaps.d.ts.map +1 -0
- package/lib-esm/model/ColorMaps.js +1288 -0
- package/lib-esm/model/ColorMaps.js.map +1 -0
- package/lib-esm/model/FoV.d.ts +63 -0
- package/lib-esm/model/FoV.d.ts.map +1 -0
- package/lib-esm/model/FoV.js +275 -0
- package/lib-esm/model/FoV.js.map +1 -0
- package/lib-esm/model/MetadataColumn.d.ts +50 -0
- package/lib-esm/model/MetadataColumn.d.ts.map +1 -0
- package/lib-esm/model/MetadataColumn.js +95 -0
- package/lib-esm/model/MetadataColumn.js.map +1 -0
- package/lib-esm/model/MetadataManager.d.ts +43 -0
- package/lib-esm/model/MetadataManager.d.ts.map +1 -0
- package/lib-esm/model/MetadataManager.js +117 -0
- package/lib-esm/model/MetadataManager.js.map +1 -0
- package/lib-esm/model/Point.d.ts +53 -0
- package/lib-esm/model/Point.d.ts.map +1 -0
- package/lib-esm/model/Point.js +133 -0
- package/lib-esm/model/Point.js.map +1 -0
- package/lib-esm/model/Point2D.d.ts +9 -0
- package/lib-esm/model/Point2D.d.ts.map +1 -0
- package/lib-esm/model/Point2D.js +16 -0
- package/lib-esm/model/Point2D.js.map +1 -0
- package/lib-esm/model/Source.d.ts +34 -0
- package/lib-esm/model/Source.d.ts.map +1 -0
- package/lib-esm/model/Source.js +63 -0
- package/lib-esm/model/Source.js.map +1 -0
- package/lib-esm/model/catalogues/CatalogueGL.d.ts +91 -0
- package/lib-esm/model/catalogues/CatalogueGL.d.ts.map +1 -0
- package/lib-esm/model/catalogues/CatalogueGL.js +614 -0
- package/lib-esm/model/catalogues/CatalogueGL.js.map +1 -0
- package/lib-esm/model/catalogues/CatalogueProps.d.ts +2 -0
- package/lib-esm/model/catalogues/CatalogueProps.d.ts.map +1 -0
- package/lib-esm/model/catalogues/CatalogueProps.js +156 -0
- package/lib-esm/model/catalogues/CatalogueProps.js.map +1 -0
- package/lib-esm/model/footprints/Footprint.d.ts +44 -0
- package/lib-esm/model/footprints/Footprint.d.ts.map +1 -0
- package/lib-esm/model/footprints/Footprint.js +104 -0
- package/lib-esm/model/footprints/Footprint.js.map +1 -0
- package/lib-esm/model/footprints/FootprintProps.d.ts +2 -0
- package/lib-esm/model/footprints/FootprintProps.d.ts.map +1 -0
- package/lib-esm/model/footprints/FootprintProps.js +87 -0
- package/lib-esm/model/footprints/FootprintProps.js.map +1 -0
- package/lib-esm/model/footprints/FootprintSetGL.d.ts +106 -0
- package/lib-esm/model/footprints/FootprintSetGL.d.ts.map +1 -0
- package/lib-esm/model/footprints/FootprintSetGL.js +592 -0
- package/lib-esm/model/footprints/FootprintSetGL.js.map +1 -0
- package/lib-esm/model/grid/EquatorialGrid.d.ts +49 -0
- package/lib-esm/model/grid/EquatorialGrid.d.ts.map +1 -0
- package/lib-esm/model/grid/EquatorialGrid.js +302 -0
- package/lib-esm/model/grid/EquatorialGrid.js.map +1 -0
- package/lib-esm/model/grid/GridTextHelper.d.ts +26 -0
- package/lib-esm/model/grid/GridTextHelper.d.ts.map +1 -0
- package/lib-esm/model/grid/GridTextHelper.js +92 -0
- package/lib-esm/model/grid/GridTextHelper.js.map +1 -0
- package/lib-esm/model/grid/HealpixGrid.d.ts +49 -0
- package/lib-esm/model/grid/HealpixGrid.d.ts.map +1 -0
- package/lib-esm/model/grid/HealpixGrid.js +306 -0
- package/lib-esm/model/grid/HealpixGrid.js.map +1 -0
- package/lib-esm/model/hips/AllSky.d.ts +40 -0
- package/lib-esm/model/hips/AllSky.d.ts.map +1 -0
- package/lib-esm/model/hips/AllSky.js +232 -0
- package/lib-esm/model/hips/AllSky.js.map +1 -0
- package/lib-esm/model/hips/AncestorTile.d.ts +38 -0
- package/lib-esm/model/hips/AncestorTile.d.ts.map +1 -0
- package/lib-esm/model/hips/AncestorTile.js +248 -0
- package/lib-esm/model/hips/AncestorTile.js.map +1 -0
- package/lib-esm/model/hips/FoVHelper.d.ts +11 -0
- package/lib-esm/model/hips/FoVHelper.d.ts.map +1 -0
- package/lib-esm/model/hips/FoVHelper.js +107 -0
- package/lib-esm/model/hips/FoVHelper.js.map +1 -0
- package/lib-esm/model/hips/HiPS.d.ts +47 -0
- package/lib-esm/model/hips/HiPS.d.ts.map +1 -0
- package/lib-esm/model/hips/HiPS.js +222 -0
- package/lib-esm/model/hips/HiPS.js.map +1 -0
- package/lib-esm/model/hips/HiPSDescriptor.d.ts +37 -0
- package/lib-esm/model/hips/HiPSDescriptor.d.ts.map +1 -0
- package/lib-esm/model/hips/HiPSDescriptor.js +132 -0
- package/lib-esm/model/hips/HiPSDescriptor.js.map +1 -0
- package/lib-esm/model/hips/Tile.d.ts +51 -0
- package/lib-esm/model/hips/Tile.d.ts.map +1 -0
- package/lib-esm/model/hips/Tile.js +355 -0
- package/lib-esm/model/hips/Tile.js.map +1 -0
- package/lib-esm/model/hips/TileBuffer.d.ts +39 -0
- package/lib-esm/model/hips/TileBuffer.d.ts.map +1 -0
- package/lib-esm/model/hips/TileBuffer.js +148 -0
- package/lib-esm/model/hips/TileBuffer.js.map +1 -0
- package/lib-esm/model/hips/VisibleTilesManager.d.ts +35 -0
- package/lib-esm/model/hips/VisibleTilesManager.d.ts.map +1 -0
- package/lib-esm/model/hips/VisibleTilesManager.js +160 -0
- package/lib-esm/model/hips/VisibleTilesManager.js.map +1 -0
- package/lib-esm/model/tap/TapMetadata.d.ts +31 -0
- package/lib-esm/model/tap/TapMetadata.d.ts.map +1 -0
- package/lib-esm/model/tap/TapMetadata.js +55 -0
- package/lib-esm/model/tap/TapMetadata.js.map +1 -0
- package/lib-esm/model/tap/TapMetadataList.d.ts +23 -0
- package/lib-esm/model/tap/TapMetadataList.d.ts.map +1 -0
- package/lib-esm/model/tap/TapMetadataList.js +58 -0
- package/lib-esm/model/tap/TapMetadataList.js.map +1 -0
- package/lib-esm/model/tap/TapRepo.d.ts +27 -0
- package/lib-esm/model/tap/TapRepo.d.ts.map +1 -0
- package/lib-esm/model/tap/TapRepo.js +51 -0
- package/lib-esm/model/tap/TapRepo.js.map +1 -0
- package/lib-esm/services/SesameService.d.ts +14 -0
- package/lib-esm/services/SesameService.d.ts.map +1 -0
- package/lib-esm/services/SesameService.js +54 -0
- package/lib-esm/services/SesameService.js.map +1 -0
- package/lib-esm/services/helpers.d.ts +5 -0
- package/lib-esm/services/helpers.d.ts.map +1 -0
- package/lib-esm/services/helpers.js +16 -0
- package/lib-esm/services/helpers.js.map +1 -0
- package/lib-esm/services/hipsNodeService.d.ts +7 -0
- package/lib-esm/services/hipsNodeService.d.ts.map +1 -0
- package/lib-esm/services/hipsNodeService.js +65 -0
- package/lib-esm/services/hipsNodeService.js.map +1 -0
- package/lib-esm/services/parse-hipslist.d.ts +3 -0
- package/lib-esm/services/parse-hipslist.d.ts.map +1 -0
- package/lib-esm/services/parse-hipslist.js +25 -0
- package/lib-esm/services/parse-hipslist.js.map +1 -0
- package/lib-esm/services/queryCatalogueByFoV.d.ts +2 -0
- package/lib-esm/services/queryCatalogueByFoV.d.ts.map +1 -0
- package/lib-esm/services/queryCatalogueByFoV.js +56 -0
- package/lib-esm/services/queryCatalogueByFoV.js.map +1 -0
- package/lib-esm/services/queryFootprintSetByFov.d.ts +2 -0
- package/lib-esm/services/queryFootprintSetByFov.d.ts.map +1 -0
- package/lib-esm/services/queryFootprintSetByFov.js +128 -0
- package/lib-esm/services/queryFootprintSetByFov.js.map +1 -0
- package/lib-esm/services/tapRepoService.d.ts +2 -0
- package/lib-esm/services/tapRepoService.d.ts.map +1 -0
- package/lib-esm/services/tapRepoService.js +190 -0
- package/lib-esm/services/tapRepoService.js.map +1 -0
- package/lib-esm/services/types.d.ts +13 -0
- package/lib-esm/services/types.d.ts.map +1 -0
- package/lib-esm/services/types.js +2 -0
- package/lib-esm/services/types.js.map +1 -0
- package/lib-esm/shader/CatalogueShaderProgram.d.ts +35 -0
- package/lib-esm/shader/CatalogueShaderProgram.d.ts.map +1 -0
- package/lib-esm/shader/CatalogueShaderProgram.js +94 -0
- package/lib-esm/shader/CatalogueShaderProgram.js.map +1 -0
- package/lib-esm/shader/FootprintShaderProgram.d.ts +31 -0
- package/lib-esm/shader/FootprintShaderProgram.d.ts.map +1 -0
- package/lib-esm/shader/FootprintShaderProgram.js +86 -0
- package/lib-esm/shader/FootprintShaderProgram.js.map +1 -0
- package/lib-esm/shader/GridShaderManager.d.ts +6 -0
- package/lib-esm/shader/GridShaderManager.d.ts.map +1 -0
- package/lib-esm/shader/GridShaderManager.js +29 -0
- package/lib-esm/shader/GridShaderManager.js.map +1 -0
- package/lib-esm/shader/HiPSShaderProgram.d.ts +54 -0
- package/lib-esm/shader/HiPSShaderProgram.d.ts.map +1 -0
- package/lib-esm/shader/HiPSShaderProgram.js +257 -0
- package/lib-esm/shader/HiPSShaderProgram.js.map +1 -0
- package/lib-esm/shader/ShaderManager.d.ts +12 -0
- package/lib-esm/shader/ShaderManager.d.ts.map +1 -0
- package/lib-esm/shader/ShaderManager.js +344 -0
- package/lib-esm/shader/ShaderManager.js.map +1 -0
- package/lib-esm/shader/ShaderManagerMutliHiPS.d.ts +12 -0
- package/lib-esm/shader/ShaderManagerMutliHiPS.d.ts.map +1 -0
- package/lib-esm/shader/ShaderManagerMutliHiPS.js +750 -0
- package/lib-esm/shader/ShaderManagerMutliHiPS.js.map +1 -0
- package/lib-esm/utils/CoordsType.d.ts +10 -0
- package/lib-esm/utils/CoordsType.d.ts.map +1 -0
- package/lib-esm/utils/CoordsType.js +12 -0
- package/lib-esm/utils/CoordsType.js.map +1 -0
- package/lib-esm/utils/FoVUtils.d.ts +46 -0
- package/lib-esm/utils/FoVUtils.d.ts.map +1 -0
- package/lib-esm/utils/FoVUtils.js +217 -0
- package/lib-esm/utils/FoVUtils.js.map +1 -0
- package/lib-esm/utils/GeomUtils.d.ts +36 -0
- package/lib-esm/utils/GeomUtils.d.ts.map +1 -0
- package/lib-esm/utils/GeomUtils.js +267 -0
- package/lib-esm/utils/GeomUtils.js.map +1 -0
- package/lib-esm/utils/MouseHelper.d.ts +36 -0
- package/lib-esm/utils/MouseHelper.d.ts.map +1 -0
- package/lib-esm/utils/MouseHelper.js +94 -0
- package/lib-esm/utils/MouseHelper.js.map +1 -0
- package/lib-esm/utils/PerspectiveMatrixManager.d.ts +11 -0
- package/lib-esm/utils/PerspectiveMatrixManager.d.ts.map +1 -0
- package/lib-esm/utils/PerspectiveMatrixManager.js +37 -0
- package/lib-esm/utils/PerspectiveMatrixManager.js.map +1 -0
- package/lib-esm/utils/RayPickingUtils.d.ts +30 -0
- package/lib-esm/utils/RayPickingUtils.d.ts.map +1 -0
- package/lib-esm/utils/RayPickingUtils.js +112 -0
- package/lib-esm/utils/RayPickingUtils.js.map +1 -0
- package/lib-esm/utils/STCSParser.d.ts +16 -0
- package/lib-esm/utils/STCSParser.d.ts.map +1 -0
- package/lib-esm/utils/STCSParser.js +96 -0
- package/lib-esm/utils/STCSParser.js.map +1 -0
- package/lib-esm/utils/ShaderUtility.d.ts +2 -0
- package/lib-esm/utils/ShaderUtility.d.ts.map +1 -0
- package/lib-esm/utils/ShaderUtility.js +23 -0
- package/lib-esm/utils/ShaderUtility.js.map +1 -0
- package/lib-esm/utils/Utils.d.ts +32 -0
- package/lib-esm/utils/Utils.d.ts.map +1 -0
- package/lib-esm/utils/Utils.js +77 -0
- package/lib-esm/utils/Utils.js.map +1 -0
- package/package.json +82 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GeomUtils.js","sourceRoot":"","sources":["../../src/utils/GeomUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @author Fabrizio Giordano (Fab)
|
|
3
|
+
*/
|
|
4
|
+
import { ReadonlyVec3 } from "gl-matrix";
|
|
5
|
+
import { type SphericalCoords, type AstroCoords, type HMS, type DMS } from "./Utils.js";
|
|
6
|
+
type XYZ = [number, number, number];
|
|
7
|
+
declare class MouseHelper {
|
|
8
|
+
private _xyz;
|
|
9
|
+
private _raDecDeg;
|
|
10
|
+
private _phiThetaDeg;
|
|
11
|
+
raHMS?: HMS;
|
|
12
|
+
decDMS?: DMS;
|
|
13
|
+
/**
|
|
14
|
+
* @param in_xyz [x, y, z]
|
|
15
|
+
* @param in_raDecDeg { ra, dec } in degrees (ICRS/J2000)
|
|
16
|
+
* @param in_phiThetaDeg { phi, theta } in degrees (spherical)
|
|
17
|
+
*/
|
|
18
|
+
constructor(in_xyz?: XYZ | null, in_raDecDeg?: AstroCoords | null, in_phiThetaDeg?: SphericalCoords | null);
|
|
19
|
+
/** (Formerly `computeNpix256`) Uses global.nsideForSelection. */
|
|
20
|
+
computeNpix(): number | null;
|
|
21
|
+
/** Update helper state from a world-space 3D point on the unit sphere. */
|
|
22
|
+
update(mousePoint: ReadonlyVec3 | XYZ): void;
|
|
23
|
+
clear(): void;
|
|
24
|
+
get xyz(): XYZ | null;
|
|
25
|
+
get x(): number | null;
|
|
26
|
+
get y(): number | null;
|
|
27
|
+
get z(): number | null;
|
|
28
|
+
get ra(): number | null;
|
|
29
|
+
get dec(): number | null;
|
|
30
|
+
get phi(): number | null;
|
|
31
|
+
get theta(): number | null;
|
|
32
|
+
get raDecDeg(): AstroCoords | null;
|
|
33
|
+
get phiThetaDeg(): SphericalCoords | null;
|
|
34
|
+
}
|
|
35
|
+
export default MouseHelper;
|
|
36
|
+
//# sourceMappingURL=MouseHelper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MouseHelper.d.ts","sourceRoot":"","sources":["../../src/utils/MouseHelper.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAQ,YAAY,EAAE,MAAM,WAAW,CAAC;AAG/C,OAAO,EAKL,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,GAAG,EACR,KAAK,GAAG,EACT,MAAM,YAAY,CAAC;AAEpB,KAAK,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAMpC,cAAM,WAAW;IACf,OAAO,CAAC,IAAI,CAAoB;IAChC,OAAO,CAAC,SAAS,CAA4B;IAC7C,OAAO,CAAC,YAAY,CAAgC;IAEpD,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,MAAM,CAAC,EAAE,GAAG,CAAC;IAEb;;;;OAIG;gBAED,MAAM,CAAC,EAAE,GAAG,GAAG,IAAI,EACnB,WAAW,CAAC,EAAE,WAAW,GAAG,IAAI,EAChC,cAAc,CAAC,EAAE,eAAe,GAAG,IAAI;IAYzC,iEAAiE;IACjE,WAAW,IAAI,MAAM,GAAG,IAAI;IAQ5B,0EAA0E;IAC1E,MAAM,CAAC,UAAU,EAAE,YAAY,GAAG,GAAG,GAAG,IAAI;IAY5C,KAAK,IAAI,IAAI;IASb,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,CAEpB;IACD,IAAI,CAAC,IAAI,MAAM,GAAG,IAAI,CAErB;IACD,IAAI,CAAC,IAAI,MAAM,GAAG,IAAI,CAErB;IACD,IAAI,CAAC,IAAI,MAAM,GAAG,IAAI,CAErB;IAED,IAAI,EAAE,IAAI,MAAM,GAAG,IAAI,CAEtB;IACD,IAAI,GAAG,IAAI,MAAM,GAAG,IAAI,CAEvB;IAED,IAAI,GAAG,IAAI,MAAM,GAAG,IAAI,CAEvB;IACD,IAAI,KAAK,IAAI,MAAM,GAAG,IAAI,CAEzB;IAED,IAAI,QAAQ,IAAI,WAAW,GAAG,IAAI,CAEjC;IACD,IAAI,WAAW,IAAI,eAAe,GAAG,IAAI,CAExC;CACF;AAED,eAAe,WAAW,CAAC"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @author Fabrizio Giordano (Fab)
|
|
3
|
+
*/
|
|
4
|
+
import { vec3 } from "gl-matrix";
|
|
5
|
+
import { Vec3, Pointing } from "healpixjs";
|
|
6
|
+
import global from "../Global.js";
|
|
7
|
+
import { cartesianToSpherical, sphericalToAstroDeg, raDegToHMS, decDegToDMS, } from "./Utils.js";
|
|
8
|
+
function toVec3(p) {
|
|
9
|
+
return Array.isArray(p) ? vec3.fromValues(p[0], p[1], p[2]) : p;
|
|
10
|
+
}
|
|
11
|
+
class MouseHelper {
|
|
12
|
+
_xyz = null;
|
|
13
|
+
_raDecDeg = null;
|
|
14
|
+
_phiThetaDeg = null;
|
|
15
|
+
raHMS;
|
|
16
|
+
decDMS;
|
|
17
|
+
/**
|
|
18
|
+
* @param in_xyz [x, y, z]
|
|
19
|
+
* @param in_raDecDeg { ra, dec } in degrees (ICRS/J2000)
|
|
20
|
+
* @param in_phiThetaDeg { phi, theta } in degrees (spherical)
|
|
21
|
+
*/
|
|
22
|
+
constructor(in_xyz, in_raDecDeg, in_phiThetaDeg) {
|
|
23
|
+
if (in_xyz != null)
|
|
24
|
+
this._xyz = in_xyz;
|
|
25
|
+
if (in_raDecDeg != null)
|
|
26
|
+
this._raDecDeg = in_raDecDeg;
|
|
27
|
+
if (in_phiThetaDeg != null)
|
|
28
|
+
this._phiThetaDeg = in_phiThetaDeg;
|
|
29
|
+
if (this._raDecDeg) {
|
|
30
|
+
this.raHMS = raDegToHMS(this._raDecDeg.ra);
|
|
31
|
+
this.decDMS = decDegToDMS(this._raDecDeg.dec);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
/** (Formerly `computeNpix256`) Uses global.nsideForSelection. */
|
|
35
|
+
computeNpix() {
|
|
36
|
+
if (!this._xyz)
|
|
37
|
+
return null;
|
|
38
|
+
const hp = global.getHealpix(global.nsideForSelection);
|
|
39
|
+
const v = new Vec3(this._xyz[0], this._xyz[1], this._xyz[2]);
|
|
40
|
+
const ptg = new Pointing(v, false);
|
|
41
|
+
return hp.ang2pix(ptg, false);
|
|
42
|
+
}
|
|
43
|
+
/** Update helper state from a world-space 3D point on the unit sphere. */
|
|
44
|
+
update(mousePoint) {
|
|
45
|
+
const mp = toVec3(mousePoint);
|
|
46
|
+
const sph = cartesianToSpherical(mp);
|
|
47
|
+
const radec = sphericalToAstroDeg(sph.phi, sph.theta);
|
|
48
|
+
this._xyz = [mp[0], mp[1], mp[2]];
|
|
49
|
+
this._phiThetaDeg = sph;
|
|
50
|
+
this._raDecDeg = radec;
|
|
51
|
+
this.raHMS = raDegToHMS(radec.ra);
|
|
52
|
+
this.decDMS = decDegToDMS(radec.dec);
|
|
53
|
+
}
|
|
54
|
+
clear() {
|
|
55
|
+
this._xyz = null;
|
|
56
|
+
this._raDecDeg = null;
|
|
57
|
+
this._phiThetaDeg = null;
|
|
58
|
+
this.raHMS = undefined;
|
|
59
|
+
this.decDMS = undefined;
|
|
60
|
+
}
|
|
61
|
+
// --- getters ---
|
|
62
|
+
get xyz() {
|
|
63
|
+
return this._xyz;
|
|
64
|
+
}
|
|
65
|
+
get x() {
|
|
66
|
+
return this._xyz ? this._xyz[0] : null;
|
|
67
|
+
}
|
|
68
|
+
get y() {
|
|
69
|
+
return this._xyz ? this._xyz[1] : null;
|
|
70
|
+
}
|
|
71
|
+
get z() {
|
|
72
|
+
return this._xyz ? this._xyz[2] : null;
|
|
73
|
+
}
|
|
74
|
+
get ra() {
|
|
75
|
+
return this._raDecDeg ? this._raDecDeg.ra : null;
|
|
76
|
+
}
|
|
77
|
+
get dec() {
|
|
78
|
+
return this._raDecDeg ? this._raDecDeg.dec : null;
|
|
79
|
+
}
|
|
80
|
+
get phi() {
|
|
81
|
+
return this._phiThetaDeg ? this._phiThetaDeg.phi : null;
|
|
82
|
+
}
|
|
83
|
+
get theta() {
|
|
84
|
+
return this._phiThetaDeg ? this._phiThetaDeg.theta : null;
|
|
85
|
+
}
|
|
86
|
+
get raDecDeg() {
|
|
87
|
+
return this._raDecDeg;
|
|
88
|
+
}
|
|
89
|
+
get phiThetaDeg() {
|
|
90
|
+
return this._phiThetaDeg;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
export default MouseHelper;
|
|
94
|
+
//# sourceMappingURL=MouseHelper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MouseHelper.js","sourceRoot":"","sources":["../../src/utils/MouseHelper.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { mat4, ReadonlyMat4 } from "gl-matrix";
|
|
2
|
+
import Camera from "../Camera.js";
|
|
3
|
+
export declare class PerspectiveMatrixManager {
|
|
4
|
+
private _pMatrix;
|
|
5
|
+
private _aspectRatio;
|
|
6
|
+
constructor(canvas: HTMLCanvasElement, camera: Camera, fovDeg: number, nearPlane: number | undefined, insideSphere: boolean);
|
|
7
|
+
get pMatrix(): ReadonlyMat4;
|
|
8
|
+
set pMatrix(pMatrix: Float32Array);
|
|
9
|
+
computePerspectiveMatrix(canvas: HTMLCanvasElement, camera: Camera, fovDeg: number, nearPlane: number | undefined, insideSphere: boolean): mat4;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=PerspectiveMatrixManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PerspectiveMatrixManager.d.ts","sourceRoot":"","sources":["../../src/utils/PerspectiveMatrixManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,MAAM,MAAM,cAAc,CAAC;AAElC,qBAAa,wBAAwB;IACnC,OAAO,CAAC,QAAQ,CAAc;IAC9B,OAAO,CAAC,YAAY,CAAK;gBAEZ,MAAM,EAAE,iBAAiB,EACpC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,YAAM,EACvB,YAAY,EAAE,OAAO;IAIvB,IAAI,OAAO,IAAI,YAAY,CAE1B;IACD,IAAI,OAAO,CAAC,OAAO,EAAC,YAAY,EAE/B;IAED,wBAAwB,CACtB,MAAM,EAAE,iBAAiB,EACzB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,YAAM,EACvB,YAAY,EAAE,OAAO,GACpB,IAAI;CAyBR"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { mat4 } from "gl-matrix";
|
|
2
|
+
export class PerspectiveMatrixManager {
|
|
3
|
+
_pMatrix;
|
|
4
|
+
_aspectRatio = 1;
|
|
5
|
+
constructor(canvas, camera, fovDeg, nearPlane = 0.1, insideSphere) {
|
|
6
|
+
this._pMatrix = this.computePerspectiveMatrix(canvas, camera, fovDeg, nearPlane, insideSphere);
|
|
7
|
+
}
|
|
8
|
+
get pMatrix() {
|
|
9
|
+
return this._pMatrix;
|
|
10
|
+
}
|
|
11
|
+
set pMatrix(pMatrix) {
|
|
12
|
+
this._pMatrix = pMatrix;
|
|
13
|
+
}
|
|
14
|
+
computePerspectiveMatrix(canvas, camera, fovDeg, nearPlane = 0.1, insideSphere) {
|
|
15
|
+
this._aspectRatio = canvas.width / canvas.height;
|
|
16
|
+
const p = mat4.create();
|
|
17
|
+
let farPlane;
|
|
18
|
+
if (insideSphere) {
|
|
19
|
+
// Inside the sphere: cap slightly beyond radius
|
|
20
|
+
farPlane = 1.1;
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
const camMat = camera.getCameraMatrix();
|
|
24
|
+
const distCamera = -Number(camMat[14]); // camera z translation
|
|
25
|
+
const r = 1; // HiPS sphere radius (inject real value if available)
|
|
26
|
+
// Guard against negative due to rounding/logic
|
|
27
|
+
const c2 = Math.sqrt(Math.max(distCamera ** 2 - r ** 2, 0));
|
|
28
|
+
const beta = Math.atan2(c2, r);
|
|
29
|
+
const cf = c2 * Math.sin(beta);
|
|
30
|
+
farPlane = cf > 0 ? cf : r;
|
|
31
|
+
}
|
|
32
|
+
mat4.perspective(p, (fovDeg * Math.PI) / 180, this._aspectRatio, nearPlane, farPlane);
|
|
33
|
+
this._pMatrix = p;
|
|
34
|
+
return p;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=PerspectiveMatrixManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PerspectiveMatrixManager.js","sourceRoot":"","sources":["../../src/utils/PerspectiveMatrixManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAgB,MAAM,WAAW,CAAC;AAG/C,MAAM,OAAO,wBAAwB;IAC3B,QAAQ,CAAc;IACtB,YAAY,GAAG,CAAC,CAAC;IAEzB,YAAa,MAAyB,EACpC,MAAc,EACd,MAAc,EACd,YAAoB,GAAG,EACvB,YAAqB;QACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,CAAC,CAAA;IAChG,CAAC;IAEH,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IACD,IAAI,OAAO,CAAC,OAAoB;QAC9B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,CAAC;IAED,wBAAwB,CACtB,MAAyB,EACzB,MAAc,EACd,MAAc,EACd,YAAoB,GAAG,EACvB,YAAqB;QAErB,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;QAEjD,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACxB,IAAI,QAAgB,CAAC;QAErB,IAAI,YAAY,EAAE,CAAC;YACjB,gDAAgD;YAChD,QAAQ,GAAG,GAAG,CAAC;QACjB,CAAC;aAAM,CAAC;YACN,MAAM,MAAM,GAAG,MAAM,CAAC,eAAe,EAAS,CAAC;YAC/C,MAAM,UAAU,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,uBAAuB;YAC/D,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,sDAAsD;YAEnE,+CAA+C;YAC/C,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC5D,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YAC/B,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC/B,QAAQ,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7B,CAAC;QAED,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,IAAI,CAAC,YAAY,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QACtF,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClB,OAAO,CAAC,CAAC;IACX,CAAC;CACF"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { vec3, ReadonlyVec3, ReadonlyMat4 } from "gl-matrix";
|
|
2
|
+
import { HealpixGrid } from "../model/grid/HealpixGrid.js";
|
|
3
|
+
import Camera from "../Camera.js";
|
|
4
|
+
declare class RayPickingUtils {
|
|
5
|
+
private static lastNearestVisibleObjectIdx;
|
|
6
|
+
/** Get index of the last object found under the mouse (if any). */
|
|
7
|
+
static getNearestVisibleObjectIdx(): number;
|
|
8
|
+
/**
|
|
9
|
+
* Builds a world-space ray from mouse coords.
|
|
10
|
+
* @param mouseX ClientX (page pixels)
|
|
11
|
+
* @param mouseY ClientY (page pixels)
|
|
12
|
+
* @param pMatrix Projection matrix
|
|
13
|
+
* @returns World-space direction (normalized) as a vec3
|
|
14
|
+
*/
|
|
15
|
+
static getRayFromMouse(mouseX: number, mouseY: number, pMatrix: ReadonlyMat4, webgl: WebGL2RenderingContext, vMatrix: ReadonlyMat4): vec3;
|
|
16
|
+
/** a*b (4x4 * vec4) → vec4 (in `out`) */
|
|
17
|
+
private static mat4MultiplyVec4;
|
|
18
|
+
/**
|
|
19
|
+
* Ray–sphere intersection (world space).
|
|
20
|
+
* @returns distance `t` along the ray to the first hit, or `-1` if no hit.
|
|
21
|
+
*/
|
|
22
|
+
static raySphere(rayOrigWorld: ReadonlyVec3, rayDirectionWorld: ReadonlyVec3, healpixGridSingleton: HealpixGrid): number;
|
|
23
|
+
/**
|
|
24
|
+
* Compute intersection with a single model (defaults to the Healpix grid).
|
|
25
|
+
* @returns model-space intersection point (vec3) if hit, otherwise empty array; and the picked model.
|
|
26
|
+
*/
|
|
27
|
+
static getIntersectionPointWithSingleModel(mouseX: number, mouseY: number, healpixGrid: HealpixGrid, webgl: WebGL2RenderingContext, camera: Camera, pMatrix: ReadonlyMat4): number[];
|
|
28
|
+
}
|
|
29
|
+
export default RayPickingUtils;
|
|
30
|
+
//# sourceMappingURL=RayPickingUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RayPickingUtils.d.ts","sourceRoot":"","sources":["../../src/utils/RayPickingUtils.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,IAAI,EAAQ,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,MAAM,MAAM,cAAc,CAAC;AAIlC,cAAM,eAAe;IACnB,OAAO,CAAC,MAAM,CAAC,2BAA2B,CAAM;IAEhD,mEAAmE;IACnE,MAAM,CAAC,0BAA0B,IAAI,MAAM;IAI3C;;;;;;OAMG;IACH,MAAM,CAAC,eAAe,CACpB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,YAAY,EACrB,KAAK,EAAE,sBAAsB,EAC7B,OAAO,EAAE,YAAY,GACpB,IAAI;IAkCP,yCAAyC;IACzC,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAa/B;;;OAGG;IACH,MAAM,CAAC,SAAS,CACd,YAAY,EAAE,YAAY,EAC1B,iBAAiB,EAAE,YAAY,EAC/B,oBAAoB,EAAE,WAAW,GAAG,MAAM;IAiC5C;;;OAGG;IACH,MAAM,CAAC,mCAAmC,CACxC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAC9B,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE,sBAAsB,EAC7B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,YAAY,GAAG,MAAM,EAAE;CA4BnC;AAED,eAAe,eAAe,CAAC"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @author Fabrizio Giordano (Fab)
|
|
3
|
+
*/
|
|
4
|
+
"use strict";
|
|
5
|
+
import { vec3, mat4 } from "gl-matrix";
|
|
6
|
+
class RayPickingUtils {
|
|
7
|
+
static lastNearestVisibleObjectIdx = -1;
|
|
8
|
+
/** Get index of the last object found under the mouse (if any). */
|
|
9
|
+
static getNearestVisibleObjectIdx() {
|
|
10
|
+
return this.lastNearestVisibleObjectIdx;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Builds a world-space ray from mouse coords.
|
|
14
|
+
* @param mouseX ClientX (page pixels)
|
|
15
|
+
* @param mouseY ClientY (page pixels)
|
|
16
|
+
* @param pMatrix Projection matrix
|
|
17
|
+
* @returns World-space direction (normalized) as a vec3
|
|
18
|
+
*/
|
|
19
|
+
static getRayFromMouse(mouseX, mouseY, pMatrix, webgl, vMatrix) {
|
|
20
|
+
const gl = webgl;
|
|
21
|
+
const canvas = gl.canvas;
|
|
22
|
+
const rect = canvas.getBoundingClientRect();
|
|
23
|
+
// mouseX / mouseY are already local to the canvas (CSS pixels)
|
|
24
|
+
const canvasMX = mouseX;
|
|
25
|
+
const canvasMY = mouseY;
|
|
26
|
+
// Use rect.width / rect.height (CSS) for NDC
|
|
27
|
+
const x = (2.0 * canvasMX) / rect.width - 1.0;
|
|
28
|
+
const y = 1.0 - (2.0 * canvasMY) / rect.height;
|
|
29
|
+
const z = -1.0;
|
|
30
|
+
const rayClip = [x, y, z, 1.0];
|
|
31
|
+
const pInv = mat4.create();
|
|
32
|
+
mat4.invert(pInv, pMatrix);
|
|
33
|
+
const rayEye4 = [0, 0, 0, 0];
|
|
34
|
+
RayPickingUtils.mat4MultiplyVec4(pInv, rayClip, rayEye4);
|
|
35
|
+
// direction in eye space
|
|
36
|
+
const rayEye = [rayEye4[0], rayEye4[1], -1.0, 0.0];
|
|
37
|
+
const vInv = mat4.create();
|
|
38
|
+
mat4.invert(vInv, vMatrix);
|
|
39
|
+
const rayWorld4 = [0, 0, 0, 0];
|
|
40
|
+
RayPickingUtils.mat4MultiplyVec4(vInv, rayEye, rayWorld4);
|
|
41
|
+
const rayWorld = vec3.fromValues(rayWorld4[0], rayWorld4[1], rayWorld4[2]);
|
|
42
|
+
vec3.normalize(rayWorld, rayWorld);
|
|
43
|
+
return rayWorld;
|
|
44
|
+
}
|
|
45
|
+
/** a*b (4x4 * vec4) → vec4 (in `out`) */
|
|
46
|
+
static mat4MultiplyVec4(a, b, out) {
|
|
47
|
+
const d = b[0], e = b[1], g = b[2], w = b[3];
|
|
48
|
+
out[0] = a[0] * d + a[4] * e + a[8] * g + a[12] * w;
|
|
49
|
+
out[1] = a[1] * d + a[5] * e + a[9] * g + a[13] * w;
|
|
50
|
+
out[2] = a[2] * d + a[6] * e + a[10] * g + a[14] * w;
|
|
51
|
+
out[3] = a[3] * d + a[7] * e + a[11] * g + a[15] * w;
|
|
52
|
+
return out;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Ray–sphere intersection (world space).
|
|
56
|
+
* @returns distance `t` along the ray to the first hit, or `-1` if no hit.
|
|
57
|
+
*/
|
|
58
|
+
static raySphere(rayOrigWorld, rayDirectionWorld, healpixGridSingleton) {
|
|
59
|
+
let intersectionDistance = -1;
|
|
60
|
+
const L = vec3.create();
|
|
61
|
+
vec3.subtract(L, rayOrigWorld, healpixGridSingleton.center);
|
|
62
|
+
const b = vec3.dot(rayDirectionWorld, L);
|
|
63
|
+
const c = vec3.dot(L, L) - healpixGridSingleton.radius * healpixGridSingleton.radius;
|
|
64
|
+
const disc = b * b - c;
|
|
65
|
+
if (disc > 0.0) {
|
|
66
|
+
const s = Math.sqrt(disc);
|
|
67
|
+
const ta = -b + s;
|
|
68
|
+
const tb = -b - s;
|
|
69
|
+
if (ta < 0.0 && tb < 0.0) {
|
|
70
|
+
// behind camera
|
|
71
|
+
}
|
|
72
|
+
else if (tb < 0.0) {
|
|
73
|
+
intersectionDistance = ta;
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
intersectionDistance = Math.min(ta, tb);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
else if (disc === 0.0) {
|
|
80
|
+
const t = -b; // tangent
|
|
81
|
+
if (t >= 0.0) {
|
|
82
|
+
intersectionDistance = t;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return intersectionDistance;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Compute intersection with a single model (defaults to the Healpix grid).
|
|
89
|
+
* @returns model-space intersection point (vec3) if hit, otherwise empty array; and the picked model.
|
|
90
|
+
*/
|
|
91
|
+
static getIntersectionPointWithSingleModel(mouseX, mouseY, healpixGrid, webgl, camera, pMatrix) {
|
|
92
|
+
const vMatrix = camera.getCameraMatrix();
|
|
93
|
+
const rayWorld = RayPickingUtils.getRayFromMouse(mouseX, mouseY, pMatrix, webgl, vMatrix);
|
|
94
|
+
const t = RayPickingUtils.raySphere(camera.getCameraPosition(), rayWorld, healpixGrid);
|
|
95
|
+
let intersectionModelPoint = [];
|
|
96
|
+
if (t >= 0) {
|
|
97
|
+
// world intersection
|
|
98
|
+
const worldHit = vec3.create();
|
|
99
|
+
vec3.scale(worldHit, rayWorld, t);
|
|
100
|
+
vec3.add(worldHit, camera.getCameraPosition(), worldHit);
|
|
101
|
+
// world → model
|
|
102
|
+
const worldHit4 = [worldHit[0], worldHit[1], worldHit[2], 1.0];
|
|
103
|
+
const modelHit4 = [0, 0, 0, 0];
|
|
104
|
+
// RayPickingUtils.mat4MultiplyVec4(healpixGridSingleton.getModelMatrixInverse(), worldHit4, modelHit4);
|
|
105
|
+
RayPickingUtils.mat4MultiplyVec4(healpixGrid.getModelMatrixInverse(), worldHit4, modelHit4);
|
|
106
|
+
intersectionModelPoint = [modelHit4[0], modelHit4[1], modelHit4[2]];
|
|
107
|
+
}
|
|
108
|
+
return intersectionModelPoint;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
export default RayPickingUtils;
|
|
112
|
+
//# sourceMappingURL=RayPickingUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RayPickingUtils.js","sourceRoot":"","sources":["../../src/utils/RayPickingUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @author Fabrizio Giordano (Fab77)
|
|
3
|
+
*/
|
|
4
|
+
import { Point } from "../model/Point.js";
|
|
5
|
+
export interface STCSParseResult {
|
|
6
|
+
totpoints: number;
|
|
7
|
+
polygons: Point[][];
|
|
8
|
+
}
|
|
9
|
+
declare class STCSParser {
|
|
10
|
+
static parseSTCS(stcs: string): STCSParseResult;
|
|
11
|
+
static cleanStcs(stcs: string): string;
|
|
12
|
+
static parsePolygon(stcs: string): STCSParseResult;
|
|
13
|
+
static parseCircle(stcs: string): STCSParseResult;
|
|
14
|
+
}
|
|
15
|
+
export default STCSParser;
|
|
16
|
+
//# sourceMappingURL=STCSParser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"STCSParser.d.ts","sourceRoot":"","sources":["../../src/utils/STCSParser.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAC,KAAK,EAAC,MAAM,mBAAmB,CAAC;AAIxC,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC;CACrB;AAED,cAAM,UAAU;IACd,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe;IAgB/C,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAqBtC,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe;IAuClD,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe;CAkClD;AAED,eAAe,UAAU,CAAC"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @author Fabrizio Giordano (Fab77)
|
|
3
|
+
*/
|
|
4
|
+
import { Point } from "../model/Point.js";
|
|
5
|
+
import { CoordsType } from "./CoordsType.js";
|
|
6
|
+
import global from "../Global.js";
|
|
7
|
+
class STCSParser {
|
|
8
|
+
static parseSTCS(stcs) {
|
|
9
|
+
const stcsParsed = STCSParser.cleanStcs(stcs);
|
|
10
|
+
let totPoints = 0;
|
|
11
|
+
const polygons = [];
|
|
12
|
+
if (stcsParsed.includes("POLYGON")) {
|
|
13
|
+
return STCSParser.parsePolygon(stcsParsed);
|
|
14
|
+
}
|
|
15
|
+
else if (stcsParsed.includes("CIRCLE")) {
|
|
16
|
+
return STCSParser.parseCircle(stcsParsed);
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
console.warn("STCS not recognised");
|
|
20
|
+
}
|
|
21
|
+
return { totpoints: totPoints, polygons };
|
|
22
|
+
}
|
|
23
|
+
static cleanStcs(stcs) {
|
|
24
|
+
// Uppercase once
|
|
25
|
+
let s = stcs.toUpperCase();
|
|
26
|
+
// Remove tokens
|
|
27
|
+
s = s
|
|
28
|
+
.replace(/'ICRS'/g, '')
|
|
29
|
+
.replace(/\bICRS\b/g, '')
|
|
30
|
+
.replace(/\bJ2000\b/g, '')
|
|
31
|
+
.replace(/\bUNION\b/g, '')
|
|
32
|
+
.replace(/\bTOPOCENTER\b/g, '');
|
|
33
|
+
// Remove parentheses
|
|
34
|
+
s = s.replace(/[()]/g, '');
|
|
35
|
+
// Collapse extra spaces and trim
|
|
36
|
+
s = s.replace(/ {2,}/g, ' ').trim();
|
|
37
|
+
return s;
|
|
38
|
+
}
|
|
39
|
+
static parsePolygon(stcs) {
|
|
40
|
+
let totPoints = 0;
|
|
41
|
+
const polygons = [];
|
|
42
|
+
const MAX_DECIMALS = global.MAX_DECIMALS ?? 12;
|
|
43
|
+
const polys = stcs.split("POLYGON ");
|
|
44
|
+
for (let i = 1; i < polys.length; i++) {
|
|
45
|
+
const currPoly = [];
|
|
46
|
+
const points = polys[i].trim().split(" ");
|
|
47
|
+
// If first point is repeated as last, remove the duplicate
|
|
48
|
+
const p0 = Number(parseFloat(points[0]).toFixed(MAX_DECIMALS));
|
|
49
|
+
const p1 = Number(parseFloat(points[1]).toFixed(MAX_DECIMALS));
|
|
50
|
+
const plast0 = Number(parseFloat(points[points.length - 2]).toFixed(MAX_DECIMALS));
|
|
51
|
+
const plast1 = Number(parseFloat(points[points.length - 1]).toFixed(MAX_DECIMALS));
|
|
52
|
+
if (p0 === plast0 && p1 === plast1) {
|
|
53
|
+
points.splice(points.length - 2, 2);
|
|
54
|
+
}
|
|
55
|
+
if (points.length > 2) {
|
|
56
|
+
for (let p = 0; p < points.length - 1; p += 2) {
|
|
57
|
+
const raDeg = Number(parseFloat(points[p]).toFixed(MAX_DECIMALS));
|
|
58
|
+
const decDeg = Number(parseFloat(points[p + 1]).toFixed(MAX_DECIMALS));
|
|
59
|
+
const point = new Point({ raDeg, decDeg }, CoordsType.ASTRO);
|
|
60
|
+
currPoly.push(point);
|
|
61
|
+
totPoints += 1;
|
|
62
|
+
}
|
|
63
|
+
polygons.push(currPoly);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return { totpoints: totPoints, polygons };
|
|
67
|
+
}
|
|
68
|
+
// Example format: "CIRCLE ICRS 8.739685 4.38147 0.027833"
|
|
69
|
+
static parseCircle(stcs) {
|
|
70
|
+
let totPoints = 0;
|
|
71
|
+
const polygons = [];
|
|
72
|
+
const polys = stcs.split("CIRCLE ");
|
|
73
|
+
for (let i = 1; i < polys.length; i++) {
|
|
74
|
+
const currPoly = [];
|
|
75
|
+
const tokens = polys[i].trim().split(" ");
|
|
76
|
+
const ra = Number(tokens[0]);
|
|
77
|
+
const dec = Number(tokens[1]);
|
|
78
|
+
const radius = Number(tokens[2]);
|
|
79
|
+
const POINTS_PER_QUADRANT = 6;
|
|
80
|
+
const npoints = POINTS_PER_QUADRANT * 4;
|
|
81
|
+
const alpha = (2 * Math.PI) / npoints;
|
|
82
|
+
// Generate points around the circle
|
|
83
|
+
for (let p = npoints; p > 0; p--) {
|
|
84
|
+
const curra = radius * Math.cos(p * alpha) + ra;
|
|
85
|
+
const curdec = radius * Math.sin(p * alpha) + dec;
|
|
86
|
+
const point = new Point({ raDeg: curra, decDeg: curdec }, CoordsType.ASTRO);
|
|
87
|
+
currPoly.push(point);
|
|
88
|
+
totPoints += 1;
|
|
89
|
+
}
|
|
90
|
+
polygons.push(currPoly);
|
|
91
|
+
}
|
|
92
|
+
return { totpoints: totPoints, polygons };
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
export default STCSParser;
|
|
96
|
+
//# sourceMappingURL=STCSParser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"STCSParser.js","sourceRoot":"","sources":["../../src/utils/STCSParser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ShaderUtility.d.ts","sourceRoot":"","sources":["../../src/utils/ShaderUtility.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
// import global from "../Global.js";
|
|
2
|
+
// // import ShaderManager from "../shader/ShaderManager.js";
|
|
3
|
+
export {};
|
|
4
|
+
// // type GL = WebGLRenderingContext | WebGL2RenderingContext;
|
|
5
|
+
// class ShaderUtility {
|
|
6
|
+
// private lastUsedProgram: WebGLProgram | null = null;
|
|
7
|
+
// /** Bind a WebGL program only if it's not already bound. */
|
|
8
|
+
// // useProgram(program: WebGLProgram, webgl: WebGL2RenderingContext): void {
|
|
9
|
+
// useProgram(program: WebGLProgram): void {
|
|
10
|
+
// const gl = global.gl;
|
|
11
|
+
// // const gl = webgl;
|
|
12
|
+
// if (!gl) {
|
|
13
|
+
// throw new Error("WebGL context is not initialized.");
|
|
14
|
+
// }
|
|
15
|
+
// if (this.lastUsedProgram !== program) {
|
|
16
|
+
// gl.useProgram(program);
|
|
17
|
+
// this.lastUsedProgram = program;
|
|
18
|
+
// }
|
|
19
|
+
// }
|
|
20
|
+
// }
|
|
21
|
+
// export const shaderUtility = new ShaderUtility();
|
|
22
|
+
// export default ShaderUtility;
|
|
23
|
+
//# sourceMappingURL=ShaderUtility.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ShaderUtility.js","sourceRoot":"","sources":["../../src/utils/ShaderUtility.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,6DAA6D;;AAE7D,+DAA+D;AAE/D,wBAAwB;AACxB,yDAAyD;AAEzD,gEAAgE;AAChE,gFAAgF;AAChF,8CAA8C;AAC9C,4BAA4B;AAC5B,2BAA2B;AAC3B,iBAAiB;AACjB,8DAA8D;AAC9D,QAAQ;AACR,8CAA8C;AAC9C,gCAAgC;AAChC,wCAAwC;AACxC,QAAQ;AACR,MAAM;AACN,IAAI;AAEJ,oDAAoD;AACpD,gCAAgC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @author Fabrizio Giordano (Fab)
|
|
3
|
+
*/
|
|
4
|
+
import { vec3 } from "gl-matrix";
|
|
5
|
+
export interface SphericalCoords {
|
|
6
|
+
phi: number;
|
|
7
|
+
theta: number;
|
|
8
|
+
}
|
|
9
|
+
export interface AstroCoords {
|
|
10
|
+
ra: number;
|
|
11
|
+
dec: number;
|
|
12
|
+
}
|
|
13
|
+
export interface HMS {
|
|
14
|
+
h: number;
|
|
15
|
+
m: number;
|
|
16
|
+
s: number;
|
|
17
|
+
}
|
|
18
|
+
export interface DMS {
|
|
19
|
+
d: number;
|
|
20
|
+
m: number;
|
|
21
|
+
s: number;
|
|
22
|
+
}
|
|
23
|
+
export declare function cartesianToSpherical(xyz: vec3): SphericalCoords;
|
|
24
|
+
export declare function colorHex2RGB(hexColor: string): [number, number, number];
|
|
25
|
+
export declare function degToRad(degrees: number): number;
|
|
26
|
+
export declare function radToDeg(radians: number): number;
|
|
27
|
+
export declare function sphericalToAstroDeg(phiDeg: number, thetaDeg: number): AstroCoords;
|
|
28
|
+
export declare function sphericalToCartesian(phiDeg: number, thetaDeg: number, r?: number): [number, number, number];
|
|
29
|
+
export declare function astroDegToSpherical(raDeg: number, decDeg: number): SphericalCoords;
|
|
30
|
+
export declare function raDegToHMS(raDeg: number): HMS;
|
|
31
|
+
export declare function decDegToDMS(decDeg: number): DMS;
|
|
32
|
+
//# sourceMappingURL=Utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Utils.d.ts","sourceRoot":"","sources":["../../src/utils/Utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,GAAG;IAClB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,MAAM,WAAW,GAAG;IAClB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAGD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,IAAI,GAAG,eAAe,CAe/D;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAcvE;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,WAAW,CAOjF;AAED,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,CAAC,GAAE,MAAU,GACZ,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAK1B;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,eAAe,CAOlF;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAK7C;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,CAa/C"}
|