From c6b978b8cf18524a3b3f507903acce68b2dfc607 Mon Sep 17 00:00:00 2001 From: Zemledelec Date: Wed, 2 Aug 2023 18:10:55 +0400 Subject: [PATCH] #698 fixed tests --- jest.config.js | 8 +- package-lock.json | 103 +++++++++++++++++- package.json | 3 +- src/og/Extent.ts | 9 +- src/og/Globe.js | 6 - src/og/LonLat.ts | 43 ++++---- src/og/Object3d.js | 4 +- src/og/Popup.js | 2 +- src/og/astro/earth.js | 6 +- src/og/astro/orbit.js | 4 +- src/og/astro/rotation.js | 6 +- src/og/bv/Box.js | 2 +- src/og/bv/Sphere.js | 2 +- src/og/camera/Camera.js | 10 +- src/og/camera/Frustum.js | 2 +- src/og/camera/PlanetCamera.js | 12 +- src/og/control/EarthCoordinates.js | 2 +- src/og/control/EarthNavigation.js | 6 +- src/og/control/KeyboardNavigation.js | 4 +- src/og/control/MouseNavigation.js | 10 +- src/og/control/MouseWheelZoomControl.js | 4 +- src/og/control/ScaleControl.js | 4 +- src/og/control/Sun.js | 4 +- src/og/control/TouchNavigation.js | 10 +- .../control/drawing/LineStringDrawingScene.js | 4 +- src/og/control/drawing/PolygonDrawingScene.js | 6 +- .../elevationProfile/ElevationProfile.js | 2 +- src/og/control/ruler/RulerScene.js | 2 +- src/og/control/selection/SelectionScene.js | 4 +- src/og/control/timeline/timelineUtils.js | 2 +- src/og/control/visibleExtent/Segment.js | 8 +- src/og/ellipsoid/Ellipsoid.ts | 3 +- src/og/ellipsoid/index.js | 4 +- src/og/ellipsoid/{wgs84.js => wgs84.ts} | 2 +- src/og/entity/BaseBillboard.js | 2 +- src/og/entity/Entity.js | 8 +- src/og/entity/EntityCollection.js | 2 +- src/og/entity/GeoObject.js | 2 +- src/og/entity/Geometry.js | 6 +- src/og/entity/GeometryHandler.js | 2 +- src/og/entity/Label.js | 2 +- src/og/entity/PointCloud.js | 4 +- src/og/entity/Polyline.js | 6 +- src/og/entity/Ray.js | 2 +- src/og/entity/Strip.js | 2 +- src/og/index.ts | 2 +- src/og/layer/BaseGeoImage.js | 6 +- src/og/layer/GeoImage.js | 2 +- src/og/layer/GeoTexture2d.js | 2 +- src/og/layer/KML.js | 4 +- src/og/layer/Layer.js | 8 +- src/og/layer/Vector.js | 8 +- src/og/layer/WMS.js | 6 +- src/og/layer/XYZ.js | 2 +- src/og/light/LightSource.js | 2 +- src/og/{math.js => math.ts} | 93 ++++++++-------- src/og/math/Line3.js | 4 +- src/og/math/Plane.js | 4 +- src/og/math/Quat.ts | 5 +- src/og/math/Ray.js | 4 +- src/og/math/Vec2.js | 2 +- src/og/math/Vec4.ts | 4 +- src/og/math/coder.js | 4 +- src/og/math/{index.js => index.ts} | 10 +- src/og/quadTree/EPSG4326QuadTreeStrategy.js | 2 +- src/og/quadTree/EarthQuadTreeStrategy.js | 4 +- src/og/quadTree/EntityCollectionNode.js | 8 +- src/og/quadTree/MarsQuadTreeStrategy.js | 2 +- src/og/quadTree/Node.js | 10 +- src/og/quadTree/Wgs84QuadTreeStrategy.js | 2 +- src/og/renderer/Renderer.js | 4 +- src/og/renderer/RendererEvents.js | 2 +- src/og/scene/Planet.js | 10 +- src/og/segment/Segment.js | 8 +- src/og/segment/SegmentLonLat.js | 8 +- src/og/terrain/BilTerrain.js | 4 +- src/og/terrain/GlobusTerrain.js | 8 +- src/og/terrain/MapboxTerrain.js | 6 +- src/og/ui/Slider.js | 2 +- src/og/utils/GeoImageCreator.js | 2 +- src/og/utils/shared.js | 8 +- tests/LonLat.test.js | 1 - tests/ellipsoid/Ellipsoid.test.js | 2 +- tests/math.test.js | 2 +- 84 files changed, 348 insertions(+), 260 deletions(-) rename src/og/ellipsoid/{wgs84.js => wgs84.ts} (80%) rename src/og/{math.js => math.ts} (78%) rename src/og/math/{index.js => index.ts} (62%) diff --git a/jest.config.js b/jest.config.js index aac016bd..4896f7b0 100644 --- a/jest.config.js +++ b/jest.config.js @@ -5,5 +5,11 @@ module.exports = { coverageProvider: "v8", setupFiles: ["jest-canvas-mock"], testEnvironment: "jsdom", - setupFilesAfterEnv: ["./tests/setupTests.js"] + setupFilesAfterEnv: ["./tests/setupTests.js"], + moduleFileExtensions: ["ts", "js"], + preset: 'ts-jest/presets/js-with-ts', + testRegex: [ + "\\.test\\.js$", + "\\.test\\.ts$", + ] }; diff --git a/package-lock.json b/package-lock.json index f63d2acd..3c29e280 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,7 +15,7 @@ "@babel/preset-env": "^7.21.5", "@rollup/plugin-json": "^6.0.0", "@rollup/plugin-terser": "^0.4.1", - "@types/jest": "^29.5.1", + "@types/jest": "^29.5.3", "@typescript-eslint/eslint-plugin": "^6.2.1", "@typescript-eslint/parser": "^6.2.1", "clean-jsdoc-theme": "^4.2.7", @@ -30,6 +30,7 @@ "prettier": "^2.8.8", "rollup": "^3.21.3", "rollup-plugin-postcss": "^4.0.2", + "ts-jest": "^29.1.1", "typescript": "^5.1.6" } }, @@ -2880,9 +2881,9 @@ } }, "node_modules/@types/jest": { - "version": "29.5.1", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.1.tgz", - "integrity": "sha512-tEuVcHrpaixS36w7hpsfLBLpjtMRJUE09/MHXn923LOVojDwyC14cWcfc0rDs0VEfUyYmt/+iX1kxxp+gZMcaQ==", + "version": "29.5.3", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.3.tgz", + "integrity": "sha512-1Nq7YrO/vJE/FYnqYyw0FS8LdrjExSgIiHyKg7xPpn+yi8Q4huZryKnkJatN1ZRH89Kw2v33/8ZMB7DuZeSLlA==", "dev": true, "dependencies": { "expect": "^29.0.0", @@ -3760,6 +3761,18 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, + "node_modules/bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "dev": true, + "dependencies": { + "fast-json-stable-stringify": "2.x" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/bser": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", @@ -9055,6 +9068,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, "node_modules/makeerror": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", @@ -11849,6 +11868,82 @@ "typescript": ">=4.2.0" } }, + "node_modules/ts-jest": { + "version": "29.1.1", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.1.tgz", + "integrity": "sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==", + "dev": true, + "dependencies": { + "bs-logger": "0.x", + "fast-json-stable-stringify": "2.x", + "jest-util": "^29.0.0", + "json5": "^2.2.3", + "lodash.memoize": "4.x", + "make-error": "1.x", + "semver": "^7.5.3", + "yargs-parser": "^21.0.1" + }, + "bin": { + "ts-jest": "cli.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": ">=7.0.0-beta.0 <8", + "@jest/types": "^29.0.0", + "babel-jest": "^29.0.0", + "jest": "^29.0.0", + "typescript": ">=4.3 <6" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@jest/types": { + "optional": true + }, + "babel-jest": { + "optional": true + }, + "esbuild": { + "optional": true + } + } + }, + "node_modules/ts-jest/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ts-jest/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ts-jest/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/tslib": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", diff --git a/package.json b/package.json index bad3d7fb..6c7cb26d 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "@babel/preset-env": "^7.21.5", "@rollup/plugin-json": "^6.0.0", "@rollup/plugin-terser": "^0.4.1", - "@types/jest": "^29.5.1", + "@types/jest": "^29.5.3", "@typescript-eslint/eslint-plugin": "^6.2.1", "@typescript-eslint/parser": "^6.2.1", "clean-jsdoc-theme": "^4.2.7", @@ -57,6 +57,7 @@ "prettier": "^2.8.8", "rollup": "^3.21.3", "rollup-plugin-postcss": "^4.0.2", + "ts-jest": "^29.1.1", "typescript": "^5.1.6" }, "lint-staged": { diff --git a/src/og/Extent.ts b/src/og/Extent.ts index c156060a..bdba9710 100644 --- a/src/og/Extent.ts +++ b/src/og/Extent.ts @@ -1,13 +1,10 @@ "use strict"; +import * as math from "./math"; import * as mercator from "./mercator"; import {Ellipsoid} from "./ellipsoid/Ellipsoid"; import {LonLat} from "./LonLat"; -//@ts-ignore -import * as math from "./math.js"; - - /** * Represents geographical coordinates extent. * @class @@ -26,7 +23,7 @@ export class Extent { /** * Creates extent instance from values in array. * @static - * @param {Array.} arr - South west and north east longitude and latidudes packed in array. (exactly 4 entries) + * @param {Array.} arr - South west and north-east longitude and latitudes packed in array. (exactly 4 entries) * @return {Extent} Extent object. */ static createFromArray(arr: [number, number, number, number]): Extent { @@ -76,7 +73,7 @@ export class Extent { } /** - * Creates extent by meractor grid tile coordinates. + * Creates extent by merсator grid tile coordinates. * @static * @param {number} x - * @param {number} y - diff --git a/src/og/Globe.js b/src/og/Globe.js index aa86bc09..7c03b637 100644 --- a/src/og/Globe.js +++ b/src/og/Globe.js @@ -1,9 +1,4 @@ // #StandWithUkraine - -/** - * @module og/Globe - */ - "use strict"; import { CompassButton } from "./control/CompassButton.js"; @@ -14,7 +9,6 @@ import { ScaleControl } from "./control/ScaleControl.js"; import { Sun } from "./control/Sun.js"; import { TouchNavigation } from "./control/TouchNavigation.js"; import { ZoomControl } from "./control/ZoomControl.js"; -import { Vec3 } from "./math/Vec3.js"; import { Renderer } from "./renderer/Renderer.js"; import { Planet } from "./scene/Planet.js"; import { EmptyTerrain } from "./terrain/EmptyTerrain.js"; diff --git a/src/og/LonLat.ts b/src/og/LonLat.ts index b98a168a..18bb3eea 100644 --- a/src/og/LonLat.ts +++ b/src/og/LonLat.ts @@ -16,34 +16,37 @@ const INV_PI_BY_180_HALF_PI = INV_PI_BY_180 * HALF_PI; * @param {number} [height] - Height over the surface. */ export class LonLat { - + /** + * Longitude. + * @public + * @type {number} + */ public lon: number = 0; + + /** + * Latitude. + * @public + * @type {number} + */ public lat: number = 0; + + /** + * Height. + * @public + * @type {number} + */ public height: number = 0; constructor(lon: number = 0, lat: number = 0, height: number = 0) { - /** - * Longitude. - * @public - * @type {number} - */ this.lon = lon; - - /** - * Latitude. - * @public - * @type {number} - */ this.lat = lat; - - /** - * Height. - * @public - * @type {number} - */ this.height = height; } + /** + * Check zero coordinates + * @returns {boolean} - + */ public isZero(): boolean { return this.lon === 0.0 && this.lat === 0.0 && this.height === 0.0; } @@ -74,7 +77,7 @@ export class LonLat { } /** - * Create array from lonlat + * Create array from lonlat * @param lonLat * @returns {number[]} */ @@ -83,7 +86,7 @@ export class LonLat { } /** - * Create array from lonlat + * Create array from lonlat * @returns {number[]} */ public toArray(): [number, number, number] { diff --git a/src/og/Object3d.js b/src/og/Object3d.js index 5eaf909f..01faa9b6 100644 --- a/src/og/Object3d.js +++ b/src/og/Object3d.js @@ -2,8 +2,8 @@ 'use strict'; import { htmlColorToFloat32Array } from './utils/shared.js'; -import { Vec3 } from './math/Vec3.js'; -import { MAX, MIN } from './math.js'; +import { Vec3 } from './math/Vec3'; +import { MAX, MIN } from './math'; import { transformLeftToRightCoordinateSystem, objParser } from "./utils/objParser.js"; function getColor(color) { diff --git a/src/og/Popup.js b/src/og/Popup.js index d2c0fbf2..03af26cb 100644 --- a/src/og/Popup.js +++ b/src/og/Popup.js @@ -1,6 +1,6 @@ "use strict"; -import { Vec3 } from "./math/Vec3.js"; +import { Vec3 } from "./math/Vec3"; import { createLonLat, stringTemplate } from "./utils/shared.js"; import { View } from './ui/View.js'; import { CLOSE_ICON } from './ui/icons.js'; diff --git a/src/og/astro/earth.js b/src/og/astro/earth.js index 9ca5dbb4..aaccb557 100644 --- a/src/og/astro/earth.js +++ b/src/og/astro/earth.js @@ -1,8 +1,8 @@ "use strict"; -import * as math from "../math.js"; -import { Quat } from "../math/Quat.js"; -import { Vec3 } from "../math/Vec3.js"; +import * as math from "../math"; +import { Quat } from "../math/Quat"; +import { Vec3 } from "../math/Vec3"; import * as astro from "./astro.js"; import * as jd from "./jd.js"; diff --git a/src/og/astro/orbit.js b/src/og/astro/orbit.js index cff57925..f61850f2 100644 --- a/src/og/astro/orbit.js +++ b/src/og/astro/orbit.js @@ -1,7 +1,7 @@ "use strict"; -import * as math from "../math.js"; -import { Mat3 } from "../math/Mat3.js"; +import * as math from "../math"; +import { Mat3 } from "../math/Mat3"; export function getEccentricAnomaly(M, ecc) { if (ecc == 0.0) { diff --git a/src/og/astro/rotation.js b/src/og/astro/rotation.js index 0f48269a..a168f4b5 100644 --- a/src/og/astro/rotation.js +++ b/src/og/astro/rotation.js @@ -1,8 +1,8 @@ "use strict"; -import { PI_TWO } from "../math.js"; -import { Mat3 } from "../math/Mat3.js"; -import { Vec3 } from "../math/Vec3.js"; +import { PI_TWO } from "../math"; +import { Mat3 } from "../math/Mat3"; +import { Vec3 } from "../math/Vec3"; export function getRotationMatrix(rightAscension, declination, res) { let xAxis = new Vec3(), diff --git a/src/og/bv/Box.js b/src/og/bv/Box.js index 71ee702e..8be891b1 100644 --- a/src/og/bv/Box.js +++ b/src/og/bv/Box.js @@ -1,6 +1,6 @@ "use strict"; -import { Vec3 } from "../math/Vec3.js"; +import { Vec3 } from "../math/Vec3"; /** * Bounding box class. diff --git a/src/og/bv/Sphere.js b/src/og/bv/Sphere.js index 0f7ecf53..5bd8307a 100644 --- a/src/og/bv/Sphere.js +++ b/src/og/bv/Sphere.js @@ -1,6 +1,6 @@ "use strict"; -import { Vec3 } from "../math/Vec3.js"; +import { Vec3 } from "../math/Vec3"; /** * Bounding sphere class. diff --git a/src/og/camera/Camera.js b/src/og/camera/Camera.js index 47cd9032..8ae7c3ba 100644 --- a/src/og/camera/Camera.js +++ b/src/og/camera/Camera.js @@ -1,12 +1,12 @@ "use strict"; import { Events } from "../Events.js"; -import * as math from "../math.js"; -import { Mat3 } from "../math/Mat3.js"; -import { Mat4 } from "../math/Mat4.js"; +import * as math from "../math"; +import { Mat3 } from "../math/Mat3"; +import { Mat4 } from "../math/Mat4"; import { Vec2 } from "../math/Vec2.js"; -import { Vec3 } from "../math/Vec3.js"; -import { Vec4 } from "../math/Vec4.js"; +import { Vec3 } from "../math/Vec3"; +import { Vec4 } from "../math/Vec4"; import { Frustum } from "./Frustum.js"; /** diff --git a/src/og/camera/Frustum.js b/src/og/camera/Frustum.js index e6c5084d..84a5940f 100644 --- a/src/og/camera/Frustum.js +++ b/src/og/camera/Frustum.js @@ -1,6 +1,6 @@ "use strict"; -import { Mat4 } from "../math/Mat4.js"; +import { Mat4 } from "../math/Mat4"; function planeNormalize(plane) { var t = 1.0 / Math.sqrt(plane[0] * plane[0] + plane[1] * plane[1] + plane[2] * plane[2]); diff --git a/src/og/camera/PlanetCamera.js b/src/og/camera/PlanetCamera.js index eaa0e766..39567763 100644 --- a/src/og/camera/PlanetCamera.js +++ b/src/og/camera/PlanetCamera.js @@ -1,13 +1,13 @@ "use strict"; import { Key } from "../Lock.js"; -import { LonLat } from "../LonLat.js"; -import * as math from "../math.js"; -import { Mat4 } from "../math/Mat4.js"; -import { Quat } from "../math/Quat.js"; +import { LonLat } from "../LonLat"; +import * as math from "../math"; +import { Mat4 } from "../math/Mat4"; +import { Quat } from "../math/Quat"; import { Ray } from "../math/Ray.js"; -import { Vec3 } from "../math/Vec3.js"; -import * as mercator from "../mercator.js"; +import { Vec3 } from "../math/Vec3"; +import * as mercator from "../mercator"; import { Camera } from "./Camera.js"; import { Ellipsoid } from "../ellipsoid/index.js"; diff --git a/src/og/control/EarthCoordinates.js b/src/og/control/EarthCoordinates.js index b6a6d8fc..ccd70fbc 100644 --- a/src/og/control/EarthCoordinates.js +++ b/src/og/control/EarthCoordinates.js @@ -1,6 +1,6 @@ 'use strict'; -import { LonLat } from '../LonLat.js'; +import { LonLat } from '../LonLat'; import { throttle } from '../utils/shared.js'; import * as units from '../utils/units.js'; import { heightMode } from '../utils/units.js'; diff --git a/src/og/control/EarthNavigation.js b/src/og/control/EarthNavigation.js index 93ff7d9d..be257086 100644 --- a/src/og/control/EarthNavigation.js +++ b/src/og/control/EarthNavigation.js @@ -1,10 +1,10 @@ "use strict"; import { Sphere } from "../bv/Sphere.js"; -import { LonLat } from "../LonLat.js"; -import { Quat } from "../math/Quat.js"; +import { LonLat } from "../LonLat"; +import { Quat } from "../math/Quat"; import { Ray } from "../math/Ray.js"; -import { Vec3 } from "../math/Vec3.js"; +import { Vec3 } from "../math/Vec3"; import { Control } from "./Control.js"; class Touch { diff --git a/src/og/control/KeyboardNavigation.js b/src/og/control/KeyboardNavigation.js index c31b5028..c553c74a 100644 --- a/src/og/control/KeyboardNavigation.js +++ b/src/og/control/KeyboardNavigation.js @@ -1,8 +1,8 @@ "use strict"; import { input } from "../input/input.js"; -import * as math from "../math.js"; -import { Vec3 } from "../math/Vec3.js"; +import * as math from "../math"; +import { Vec3 } from "../math/Vec3"; import { Control } from "./Control.js"; /** diff --git a/src/og/control/MouseNavigation.js b/src/og/control/MouseNavigation.js index 7132d6ca..87d110e1 100644 --- a/src/og/control/MouseNavigation.js +++ b/src/og/control/MouseNavigation.js @@ -3,12 +3,12 @@ import { Sphere } from "../bv/Sphere.js"; import { input } from "../input/input.js"; import { Key } from "../Lock.js"; -import { LonLat } from "../LonLat.js"; -import * as math from "../math.js"; -import { Mat4 } from "../math/Mat4.js"; -import { Quat } from "../math/Quat.js"; +import { LonLat } from "../LonLat"; +import * as math from "../math"; +import { Mat4 } from "../math/Mat4"; +import { Quat } from "../math/Quat"; import { Ray } from "../math/Ray.js"; -import { Vec3 } from "../math/Vec3.js"; +import { Vec3 } from "../math/Vec3"; import { Control } from "./Control.js"; /** diff --git a/src/og/control/MouseWheelZoomControl.js b/src/og/control/MouseWheelZoomControl.js index d12b3c30..3936412e 100644 --- a/src/og/control/MouseWheelZoomControl.js +++ b/src/og/control/MouseWheelZoomControl.js @@ -2,8 +2,8 @@ import { Sphere } from "../bv/Sphere.js"; import { Key } from "../Lock.js"; -import { Quat } from "../math/Quat.js"; -import { Vec3 } from "../math/Vec3.js"; +import { Quat } from "../math/Quat"; +import { Vec3 } from "../math/Vec3"; import { Control } from "./Control.js"; import { MouseNavigation } from "./MouseNavigation.js"; diff --git a/src/og/control/ScaleControl.js b/src/og/control/ScaleControl.js index 2378f3ad..2c28aef9 100644 --- a/src/og/control/ScaleControl.js +++ b/src/og/control/ScaleControl.js @@ -1,7 +1,7 @@ "use strict"; -import { RADIANS } from "../math.js"; -import { Vec3 } from "../math/Vec3.js"; +import { RADIANS } from "../math"; +import { Vec3 } from "../math/Vec3"; import { binarySearch, parseHTML } from "../utils/shared.js"; import { Control } from "./Control.js"; diff --git a/src/og/control/Sun.js b/src/og/control/Sun.js index d7f205c1..9ba8599d 100644 --- a/src/og/control/Sun.js +++ b/src/og/control/Sun.js @@ -2,8 +2,8 @@ import { getSunPosition } from "../astro/earth.js"; import { LightSource } from "../light/LightSource.js"; -import { Quat } from "../math/Quat.js"; -import { Vec3 } from "../math/Vec3.js"; +import { Quat } from "../math/Quat"; +import { Vec3 } from "../math/Vec3"; import { Control } from "./Control.js"; /** diff --git a/src/og/control/TouchNavigation.js b/src/og/control/TouchNavigation.js index 0ea04048..581bb922 100644 --- a/src/og/control/TouchNavigation.js +++ b/src/og/control/TouchNavigation.js @@ -2,13 +2,13 @@ import { Sphere } from "../bv/Sphere.js"; import { Key } from "../Lock.js"; -import { LonLat } from "../LonLat.js"; -import { Quat } from "../math/Quat.js"; +import { LonLat } from "../LonLat"; +import { Quat } from "../math/Quat"; import { Ray } from "../math/Ray.js"; -import { Vec3 } from "../math/Vec3.js"; +import { Vec3 } from "../math/Vec3"; import { Control } from "./Control.js"; -import { Vec2 } from "../math/index.js"; -import { math } from "../index.js"; +import { Vec2 } from "../math/Vec2.js"; +import { math } from "../index"; class Touch { constructor() { diff --git a/src/og/control/drawing/LineStringDrawingScene.js b/src/og/control/drawing/LineStringDrawingScene.js index b81e71f8..e677dea7 100644 --- a/src/og/control/drawing/LineStringDrawingScene.js +++ b/src/og/control/drawing/LineStringDrawingScene.js @@ -7,8 +7,8 @@ import { PolygonDrawingScene } from "./PolygonDrawingScene.js"; import { Entity } from "../../entity/Entity.js"; -import { Line3, Vec2, Vec3 } from "../../math/index.js"; -import * as math from "../../math.js"; +import { Line3, Vec2, Vec3 } from "../../math/index"; +import * as math from "../../math"; import { GeometryType } from "../../entity/Geometry.js"; class LineStringDrawingScene extends PolygonDrawingScene { diff --git a/src/og/control/drawing/PolygonDrawingScene.js b/src/og/control/drawing/PolygonDrawingScene.js index f00b7b87..22e43284 100644 --- a/src/og/control/drawing/PolygonDrawingScene.js +++ b/src/og/control/drawing/PolygonDrawingScene.js @@ -1,15 +1,15 @@ 'use strict'; -import * as math from "../../math.js"; +import * as math from "../../math"; import { Entity } from '../../entity/Entity.js'; import { Events } from '../../Events.js'; import { Vector } from '../../layer/Vector.js'; import { Vec2 } from '../../math/Vec2.js'; import { Object3d } from '../../Object3d.js'; import { RenderNode } from '../../scene/RenderNode.js'; -import { Vec3 } from '../../math/Vec3.js'; +import { Vec3 } from '../../math/Vec3'; import { Line3 } from '../../math/Line3.js'; -import { LonLat } from '../../LonLat.js'; +import { LonLat } from '../../LonLat'; import { Geometry, GeometryType } from "../../entity/Geometry.js"; const POINTER_OBJ3D = Object3d.createCylinder(1, 1, 2.0, 20, 1, true, false, 0, -0.5, 0); diff --git a/src/og/control/elevationProfile/ElevationProfile.js b/src/og/control/elevationProfile/ElevationProfile.js index 989a97d8..1656f5a9 100644 --- a/src/og/control/elevationProfile/ElevationProfile.js +++ b/src/og/control/elevationProfile/ElevationProfile.js @@ -1,6 +1,6 @@ 'use strict'; -import { Vec3 } from "../../math/Vec3.js"; +import { Vec3 } from "../../math/Vec3"; import { Deferred } from "../../Deferred.js"; import { Events } from '../../Events.js'; diff --git a/src/og/control/ruler/RulerScene.js b/src/og/control/ruler/RulerScene.js index fa7f3165..bcf696fb 100644 --- a/src/og/control/ruler/RulerScene.js +++ b/src/og/control/ruler/RulerScene.js @@ -1,6 +1,6 @@ 'use strict'; -import { Ellipsoid } from '../../ellipsoid/Ellipsoid.js'; +import { Ellipsoid } from '../../ellipsoid/Ellipsoid'; import { Entity } from '../../entity/Entity.js'; import { Events } from '../../Events.js'; import { Vector } from '../../layer/Vector.js'; diff --git a/src/og/control/selection/SelectionScene.js b/src/og/control/selection/SelectionScene.js index 03f024c4..86cf8019 100644 --- a/src/og/control/selection/SelectionScene.js +++ b/src/og/control/selection/SelectionScene.js @@ -1,10 +1,10 @@ 'use strict'; -import { Ellipsoid } from '../../ellipsoid/Ellipsoid.js'; +import { Ellipsoid } from '../../ellipsoid/Ellipsoid'; import { Entity } from '../../entity/Entity.js'; import { Events } from '../../Events.js'; import { Vector } from '../../layer/Vector.js'; -import { LonLat } from '../../LonLat.js'; +import { LonLat } from '../../LonLat'; import { Object3d } from '../../Object3d.js'; import { RenderNode } from '../../scene/RenderNode.js'; diff --git a/src/og/control/timeline/timelineUtils.js b/src/og/control/timeline/timelineUtils.js index 188716bc..50a8e1cd 100644 --- a/src/og/control/timeline/timelineUtils.js +++ b/src/og/control/timeline/timelineUtils.js @@ -1,6 +1,6 @@ 'use strict'; -import * as math from '../../math.js'; +import * as math from '../../math'; export function addSeconds(date, seconds) { return new Date(+date + seconds * 1000); diff --git a/src/og/control/visibleExtent/Segment.js b/src/og/control/visibleExtent/Segment.js index aa629c65..84be6654 100644 --- a/src/og/control/visibleExtent/Segment.js +++ b/src/og/control/visibleExtent/Segment.js @@ -2,12 +2,12 @@ import { Box } from "../../bv/Box.js"; import { Sphere } from "../../bv/Sphere.js"; -import { Extent } from "../../Extent.js"; +import { Extent } from "../../Extent"; import { Layer } from "../../layer/Layer.js"; -import { LonLat } from "../../LonLat.js"; +import { LonLat } from "../../LonLat"; import { Ray } from "../../math/Ray.js"; -import { Vec3 } from "../../math/Vec3.js"; -import * as mercator from "../../mercator.js"; +import { Vec3 } from "../../math/Vec3"; +import * as mercator from "../../mercator"; import { EPSG3857 } from "../../proj/EPSG3857.js"; import { E, N, NOTRENDERING, OPSIDE, S, W } from "../../quadTree/quadTree.js"; import * as segmentHelper from "../../segment/segmentHelper.js"; diff --git a/src/og/ellipsoid/Ellipsoid.ts b/src/og/ellipsoid/Ellipsoid.ts index f767481b..d9d64116 100644 --- a/src/og/ellipsoid/Ellipsoid.ts +++ b/src/og/ellipsoid/Ellipsoid.ts @@ -3,8 +3,7 @@ import {LonLat} from "../LonLat"; import {Quat} from "../math/Quat"; import {Vec3} from "../math/Vec3"; -//@ts-ignore -import {DEGREES, EPS1, EPS12, EPS15, RADIANS, zeroTwoPI} from "../math.js"; +import {DEGREES, EPS1, EPS12, EPS15, RADIANS, zeroTwoPI} from "../math"; export interface IInverseResult { distance: number; diff --git a/src/og/ellipsoid/index.js b/src/og/ellipsoid/index.js index cccfeb8f..1c76a7ce 100644 --- a/src/og/ellipsoid/index.js +++ b/src/og/ellipsoid/index.js @@ -1,4 +1,4 @@ -import { Ellipsoid } from './Ellipsoid.js'; -import { wgs84 } from './wgs84.js'; +import { Ellipsoid } from './Ellipsoid'; +import { wgs84 } from './wgs84'; export { Ellipsoid, wgs84 }; \ No newline at end of file diff --git a/src/og/ellipsoid/wgs84.js b/src/og/ellipsoid/wgs84.ts similarity index 80% rename from src/og/ellipsoid/wgs84.js rename to src/og/ellipsoid/wgs84.ts index bc146b62..27cf5812 100644 --- a/src/og/ellipsoid/wgs84.js +++ b/src/og/ellipsoid/wgs84.ts @@ -1,6 +1,6 @@ "use strict"; -import { Ellipsoid } from "./Ellipsoid.js"; +import {Ellipsoid} from "./Ellipsoid"; /** * WGS84 ellipsoid object. diff --git a/src/og/entity/BaseBillboard.js b/src/og/entity/BaseBillboard.js index c96ed1c9..5d0150b9 100644 --- a/src/og/entity/BaseBillboard.js +++ b/src/og/entity/BaseBillboard.js @@ -1,6 +1,6 @@ "use strict"; -import { Vec3 } from "../math/Vec3.js"; +import { Vec3 } from "../math/Vec3"; import * as utils from "../utils/shared.js"; import { LOCK_FREE, LOCK_UPDATE } from "./LabelWorker.js"; diff --git a/src/og/entity/Entity.js b/src/og/entity/Entity.js index 78a26d58..2dae040f 100644 --- a/src/og/entity/Entity.js +++ b/src/og/entity/Entity.js @@ -1,9 +1,9 @@ "use strict"; -import { Extent } from "../Extent.js"; -import { LonLat } from "../LonLat.js"; -import { Vec3 } from "../math/Vec3.js"; -import * as mercator from "../mercator.js"; +import { Extent } from "../Extent"; +import { LonLat } from "../LonLat"; +import { Vec3 } from "../math/Vec3"; +import * as mercator from "../mercator"; import * as utils from "../utils/shared.js"; import { Billboard } from "./Billboard.js"; import { Geometry } from "./Geometry.js"; diff --git a/src/og/entity/EntityCollection.js b/src/og/entity/EntityCollection.js index 65acbc9b..338fe7cf 100644 --- a/src/og/entity/EntityCollection.js +++ b/src/og/entity/EntityCollection.js @@ -1,7 +1,7 @@ "use strict"; import { Events } from "../Events.js"; -import * as math from "../math.js"; +import * as math from "../math"; import { BillboardHandler } from "./BillboardHandler.js"; import { GeoObjectHandler } from "./GeoObjectHandler.js"; import { LabelHandler } from "./LabelHandler.js"; diff --git a/src/og/entity/GeoObject.js b/src/og/entity/GeoObject.js index 5a62bd6e..219eacd1 100644 --- a/src/og/entity/GeoObject.js +++ b/src/og/entity/GeoObject.js @@ -1,6 +1,6 @@ "use strict"; -import { Quat, Vec3 } from "../math/index.js"; +import { Quat, Vec3 } from "../math/index"; import { Planet } from "../scene/Planet.js"; import * as utils from "../utils/shared.js"; diff --git a/src/og/entity/Geometry.js b/src/og/entity/Geometry.js index 237301a4..3aa75f2c 100644 --- a/src/og/entity/Geometry.js +++ b/src/og/entity/Geometry.js @@ -1,8 +1,8 @@ "use strict"; -import { Extent } from "../Extent.js"; -import { LonLat } from "../LonLat.js"; -import { Vec4 } from "../math/Vec4.js"; +import { Extent } from "../Extent"; +import { LonLat } from "../LonLat"; +import { Vec4 } from "../math/Vec4"; import * as utils from "../utils/shared.js"; const GeometryType = { diff --git a/src/og/entity/GeometryHandler.js b/src/og/entity/GeometryHandler.js index dda8dcf6..beb908c8 100644 --- a/src/og/entity/GeometryHandler.js +++ b/src/og/entity/GeometryHandler.js @@ -2,7 +2,7 @@ import { doubleToTwoFloatsV2 } from "../math/coder.js"; import { Vec2 } from "../math/Vec2.js"; -import * as mercator from "../mercator.js"; +import * as mercator from "../mercator"; import * as quadTree from "../quadTree/quadTree.js"; import { earcut, flatten } from "../utils/earcut.js"; import { GeometryType } from "./Geometry.js"; diff --git a/src/og/entity/Label.js b/src/og/entity/Label.js index 25babe77..84d02084 100644 --- a/src/og/entity/Label.js +++ b/src/og/entity/Label.js @@ -1,6 +1,6 @@ "use strict"; -import { Vec4 } from "../math/Vec4.js"; +import { Vec4 } from "../math/Vec4"; import * as utils from "../utils/shared.js"; import { BaseBillboard } from "./BaseBillboard.js"; import { LOCK_FREE, LOCK_UPDATE } from "./LabelWorker.js"; diff --git a/src/og/entity/PointCloud.js b/src/og/entity/PointCloud.js index 2800d88e..8ac3c534 100644 --- a/src/og/entity/PointCloud.js +++ b/src/og/entity/PointCloud.js @@ -1,7 +1,7 @@ "use strict"; -import { Vec3 } from "../math/Vec3.js"; -import { Vec4 } from "../math/Vec4.js"; +import { Vec3 } from "../math/Vec3"; +import { Vec4 } from "../math/Vec4"; const COORDINATES_BUFFER = 0; const COLOR_BUFFER = 1; diff --git a/src/og/entity/Polyline.js b/src/og/entity/Polyline.js index 5376e6e0..bdfc13b8 100644 --- a/src/og/entity/Polyline.js +++ b/src/og/entity/Polyline.js @@ -1,8 +1,8 @@ "use strict"; -import { Extent } from "../Extent.js"; -import { LonLat } from "../LonLat.js"; -import { Vec3 } from "../math/Vec3.js"; +import { Extent } from "../Extent"; +import { LonLat } from "../LonLat"; +import { Vec3 } from "../math/Vec3"; import { cloneArray, htmlColorToFloat32Array, htmlColorToRgba, makeArray, makeArrayTyped diff --git a/src/og/entity/Ray.js b/src/og/entity/Ray.js index b1adab2b..277f0ef3 100644 --- a/src/og/entity/Ray.js +++ b/src/og/entity/Ray.js @@ -1,6 +1,6 @@ "use strict"; -import {Vec3} from "../math/Vec3.js"; +import {Vec3} from "../math/Vec3"; import * as utils from "../utils/shared.js"; import {Entity} from "./Entity.js"; diff --git a/src/og/entity/Strip.js b/src/og/entity/Strip.js index 3f605ea3..2f0e2cd9 100644 --- a/src/og/entity/Strip.js +++ b/src/og/entity/Strip.js @@ -1,7 +1,7 @@ "use strict"; import { Line3 } from "../math/Line3.js"; -import { Vec3 } from "../math/Vec3.js"; +import { Vec3 } from "../math/Vec3"; import * as utils from "../utils/shared.js"; let _tempHigh = new Vec3(), diff --git a/src/og/index.ts b/src/og/index.ts index e0e1d218..46711bb8 100644 --- a/src/og/index.ts +++ b/src/og/index.ts @@ -1,7 +1,7 @@ 'use strict'; import * as jd from './astro/jd.js'; -import * as math from './math.js'; +import * as math from './math'; import * as mercator from './mercator'; import * as utils from './utils/shared.js'; diff --git a/src/og/layer/BaseGeoImage.js b/src/og/layer/BaseGeoImage.js index fecd9fc6..23e4520a 100644 --- a/src/og/layer/BaseGeoImage.js +++ b/src/og/layer/BaseGeoImage.js @@ -1,8 +1,8 @@ "use strict"; -import { Extent } from "../Extent.js"; -import { LonLat } from "../LonLat.js"; -import * as mercator from "../mercator.js"; +import { Extent } from "../Extent"; +import { LonLat } from "../LonLat"; +import * as mercator from "../mercator"; import { Layer } from "./Layer.js"; import { doubleToTwoFloats2 } from "../math/coder.js"; diff --git a/src/og/layer/GeoImage.js b/src/og/layer/GeoImage.js index c11377b0..67c65d30 100644 --- a/src/og/layer/GeoImage.js +++ b/src/og/layer/GeoImage.js @@ -1,6 +1,6 @@ "use strict"; -import { nextHighestPowerOfTwo } from "../math.js"; +import { nextHighestPowerOfTwo } from "../math"; import { BaseGeoImage } from "./BaseGeoImage.js"; import { isImageLoaded } from "../utils/shared.js"; diff --git a/src/og/layer/GeoTexture2d.js b/src/og/layer/GeoTexture2d.js index a5f105d1..855c66d4 100644 --- a/src/og/layer/GeoTexture2d.js +++ b/src/og/layer/GeoTexture2d.js @@ -1,6 +1,6 @@ 'use strict'; -import * as math from '../math.js'; +import * as math from '../math'; import { BaseGeoImage } from './BaseGeoImage.js'; class GeoTexture2d extends BaseGeoImage { diff --git a/src/og/layer/KML.js b/src/og/layer/KML.js index c2cec65a..6910456f 100644 --- a/src/og/layer/KML.js +++ b/src/og/layer/KML.js @@ -2,8 +2,8 @@ import { Billboard } from "../entity/Billboard.js"; import { Entity } from "../entity/Entity.js"; -import { Extent } from "../Extent.js"; -import { LonLat } from "../LonLat.js"; +import { Extent } from "../Extent"; +import { LonLat } from "../LonLat"; import { Vector } from "./Vector.js"; /** diff --git a/src/og/layer/Layer.js b/src/og/layer/Layer.js index b983fc4e..2701a662 100644 --- a/src/og/layer/Layer.js +++ b/src/og/layer/Layer.js @@ -1,10 +1,10 @@ "use strict"; import { Events } from "../Events.js"; -import { Extent } from "../Extent.js"; -import { LonLat } from "../LonLat.js"; -import { Vec3 } from "../math/Vec3.js"; -import * as mercator from "../mercator.js"; +import { Extent } from "../Extent"; +import { LonLat } from "../LonLat"; +import { Vec3 } from "../math/Vec3"; +import * as mercator from "../mercator"; import * as utils from "../utils/shared.js"; import { createColorRGB } from "../utils/shared.js"; import { Material } from "./Material.js"; diff --git a/src/og/layer/Vector.js b/src/og/layer/Vector.js index 6a1626dd..9328d937 100644 --- a/src/og/layer/Vector.js +++ b/src/og/layer/Vector.js @@ -1,12 +1,12 @@ "use strict"; +import * as mercator from "../mercator"; import { Entity } from "../entity/Entity.js"; import { EntityCollection } from "../entity/EntityCollection.js"; import { GeometryHandler } from "../entity/GeometryHandler.js"; -import { Extent } from "../Extent.js"; -import * as math from "../math.js"; -import { Vec3 } from "../math/Vec3.js"; -import * as mercator from "../mercator.js"; +import { Extent } from "../Extent"; +import * as math from "../math"; +import { Vec3 } from "../math/Vec3"; import { EntityCollectionNode, EntityCollectionNodeWGS84 diff --git a/src/og/layer/WMS.js b/src/og/layer/WMS.js index 007c74a5..470d7e0e 100644 --- a/src/og/layer/WMS.js +++ b/src/og/layer/WMS.js @@ -1,8 +1,8 @@ "use strict"; -import { Extent } from "../Extent.js"; -import { LonLat } from "../LonLat.js"; -import * as mercator from "../mercator.js"; +import * as mercator from "../mercator"; +import { Extent } from "../Extent"; +import { LonLat } from "../LonLat"; import { XYZ } from "./XYZ.js"; /** diff --git a/src/og/layer/XYZ.js b/src/og/layer/XYZ.js index cb98d36c..1dcbe5e9 100644 --- a/src/og/layer/XYZ.js +++ b/src/og/layer/XYZ.js @@ -1,6 +1,6 @@ "use strict"; -import * as mercator from "../mercator.js"; +import * as mercator from "../mercator"; import { RENDERING } from "../quadTree/quadTree.js"; import { stringTemplate } from "../utils/shared.js"; import { Layer } from "./Layer.js"; diff --git a/src/og/light/LightSource.js b/src/og/light/LightSource.js index 2aa381a2..1b88788f 100644 --- a/src/og/light/LightSource.js +++ b/src/og/light/LightSource.js @@ -1,6 +1,6 @@ "use strict"; -import { Vec3 } from "../math/Vec3.js"; +import { Vec3 } from "../math/Vec3"; /** * Represents basic light source. diff --git a/src/og/math.js b/src/og/math.ts similarity index 78% rename from src/og/math.js rename to src/og/math.ts index 17989bb9..ae242a6f 100644 --- a/src/og/math.js +++ b/src/og/math.ts @@ -1,9 +1,7 @@ -/** - * @module og/math - */ - "use strict"; +import {Vec3} from "./math/Vec3"; + /** @const */ export const TWO_PI = 2.0 * Math.PI; @@ -81,7 +79,7 @@ export const EPS20 = 1e-20; * log(64, 2) * //returns 6 */ -export function log(n, base) { +export function log(n: number, base: number): number { return Math.log(n) / Math.log(base); } @@ -96,7 +94,7 @@ export function log(n, base) { * clamp(12, 1, 5) * //returns 5 */ -export function clamp(number, min, max) { +export function clamp(number: number, min: number, max: number): number { return Math.max(min, Math.min(number, max)); } @@ -106,7 +104,7 @@ export function clamp(number, min, max) { * @param {number} degrees - Degree value. * @returns {number} - */ -export function DEG2RAD(degrees) { +export function DEG2RAD(degrees: number): number { return degrees * RADIANS; } @@ -116,7 +114,7 @@ export function DEG2RAD(degrees) { * @param {number} angle - Degree value. * @returns {number} - */ -export function RAD2DEG(angle) { +export function RAD2DEG(angle: number): number { return angle * DEGREES; } @@ -126,7 +124,7 @@ export function RAD2DEG(angle) { * @param {number} x - Input value. * @returns {boolean} - */ -export function isPowerOfTwo(x) { +export function isPowerOfTwo(x: number): boolean { return (x & (x - 1)) === 0; } @@ -134,9 +132,10 @@ export function isPowerOfTwo(x) { * Returns next value that is power of two. * @function * @param {number} x - Input value. + * @param {number} [maxValue=4096] - Maximal value. * @returns {number} - */ -export function nextHighestPowerOfTwo(x, maxValue = 4096) { +export function nextHighestPowerOfTwo(x: number, maxValue: number = 4096): number { --x; for (let i = 1; i < 32; i <<= 1) { x = x | (x >> i); @@ -151,7 +150,7 @@ export function nextHighestPowerOfTwo(x, maxValue = 4096) { * @param {number} max - Maximal bound. * @returns {number} - */ -export function randomi(min = 0, max = 1) { +export function randomi(min: number = 0, max: number = 1): number { return Math.floor(Math.random() * (max - min)) + min; } @@ -162,7 +161,7 @@ export function randomi(min = 0, max = 1) { * @param {number} [max=1] - Maximal bound. * @returns {number} - */ -export function random(min = 0, max = 1) { +export function random(min: number = 0, max: number = 1): number { return Math.random() * (max - min) + min; } @@ -175,7 +174,7 @@ export function random(min = 0, max = 1) { * @param {boolean} [p] - Positive flag. False - default. * @returns {number} - **/ -export function degToDec(d, m, s, p) { +export function degToDec(d: number, m: number, s: number, p: number): number { if (p) { return d + m / 60.0 + s / 3600.0; } else { @@ -190,7 +189,7 @@ export function degToDec(d, m, s, p) { * @param {number} n - The divisor. * @returns {number} The remainder. */ -export function mod(m, n) { +export function mod(m: number, n: number): number { return ((m % n) + n) % n; } @@ -200,7 +199,7 @@ export function mod(m, n) { * @param {number} a - Angle in radians * @returns {number} - */ -export function zeroTwoPI(a) { +export function zeroTwoPI(a: number): number { const res = mod(a, TWO_PI); if (Math.abs(res) < EPS14 && Math.abs(a) > EPS14) { return TWO_PI; @@ -215,17 +214,17 @@ export function zeroTwoPI(a) { * @param {number} x - Value to edge. * @returns {number} - */ -export function step(edge, x) { +export function step(edge: number, x: number): number { return x < edge ? 0.0 : 1.0; } /** - * The fract function returns the fractional part of x, i.e. x minus floor(x). + * The frac function returns the fractional part of x, i.e. x minus floor(x). * @function * @param {number} x - Input value. * @returns {number} - */ -export function frac(x) { +export function frac(x: number): number { const mx = Math.abs(x) return mx - Math.floor(mx); } @@ -236,7 +235,7 @@ export function frac(x) { * @param {number} x - Input value. * @returns {number} - */ -export function log2(x) { +export function log2(x: number): number { return Math.log(x) / LOG2; } @@ -246,7 +245,7 @@ export function log2(x) { * @param {number} n - Power value. * @returns {number} - */ -export function exp2(n) { +export function exp2(n: number): number { return Math.pow(2, n); } @@ -256,7 +255,7 @@ export function exp2(n) { * @param {number} n - Integer power value. * @returns {number} - */ -export function pow2i(n) { +export function pow2i(n: number): number { return 2 << (n - 1); } @@ -267,7 +266,7 @@ export function pow2i(n) { * @param {number} h0 - Start value. * @returns {number} - */ -export function slice(t, h1, h0) { +export function slice(t: number, h1: number, h0: number): number { return t * (h1 - h0); } @@ -279,19 +278,19 @@ export function slice(t, h1, h0) { * @param {number} h0 - Start value. * @returns {number} - */ -export function lerp(t, h1, h0) { +export function lerp(t: number, h1: number, h0: number): number { return h0 + t * (h1 - h0); } -export function cube(f) { +export function cube(f: number): number { return f * f * f; } -export function square(f) { +export function square(f: number): number { return f * f; } -export function bezier1v(t, p0, p1, p2, p3) { +export function bezier1v(t: number, p0: number, p1: number, p2: number, p3: number): number { return ( cube(1 - t) * p0 + 3 * square(1 - t) * t * p1 + 3 * (1 - t) * square(t) * p2 + cube(t) * p3 ); @@ -307,15 +306,15 @@ export function bezier1v(t, p0, p1, p2, p3) { * @param {Vec3} p3 - Fourth control point. * @returns {Vec3} - */ -export function bezier3v(t, p0, p1, p2, p3) { - var u = 1 - t; - var tt = t * t; - var uu = u * u; - var uuu = uu * u; - var ttt = tt * t; +export function bezier3v(t: number, p0: Vec3, p1: Vec3, p2: Vec3, p3: Vec3): Vec3 { - return p0 - .scaleTo(uuu) + let u = 1 - t; + let tt = t * t; + let uu = u * u; + let uuu = uu * u; + let ttt = tt * t; + + return p0.scaleTo(uuu) .addA(p1.scaleTo(3 * uu * t)) .addA(p2.scaleTo(3 * u * tt)) .addA(p3.scaleTo(ttt)); @@ -327,7 +326,7 @@ export function bezier3v(t, p0, p1, p2, p3) { * @param {number} x - Input angle. * @returns {number} - */ -export function rev(x) { +export function rev(x: number): number { return x - Math.floor(x / 360.0) * 360.0; } @@ -337,7 +336,7 @@ export function rev(x) { * @param {number} lon - Longitude. * @returns {number} - */ -export function norm_lon(lon) { +export function norm_lon(lon: number): number { return lon > 180 ? ((lon + 180) % 360) - 180 : lon < -180 ? ((lon - 180) % 360) + 180 : lon; } @@ -347,21 +346,21 @@ export function norm_lon(lon) { * @param {number} a - Angle in radians. * @returns {number} - */ -export function negativePItoPI(a) { +export function negativePItoPI(a: number): number { return zeroTwoPI(a + Math.PI) - Math.PI; } /** * Solve using iteration method and a fixed number of steps. * @function - * @param {equationCallback} f - Equation. Used in Euler's equation(see og.orbit) solving. + * @param {Function} f - Equation. Used in Euler's equation(see og.orbit) solving. * @param {number} x0 - First approximation. * @param {number} maxIter - Maximum iterations. * @returns {number} - */ -export function solve_iteration_fixed(f, x0, maxIter) { - var x = 0; - var x2 = x0; +export function solve_iteration_fixed(f: Function, x0: number, maxIter: number): number { + let x = 0; + let x2 = x0; for (let i = 0; i < maxIter; i++) { x = x2; x2 = f(x); @@ -373,15 +372,15 @@ export function solve_iteration_fixed(f, x0, maxIter) { * Solve using iteration; terminate when error is below err or the maximum * number of iterations is reached. Used in Euler's equation(see og.orbit) solving. * @function - * @param {equationCallback} f - Equation. + * @param {Function} f - Equation. * @param {number} x0 - First approximation. * @param {number} err - Maximal accepted error value. * @param {number} maxIter - Maximum iterations. * @returns {number} - */ -export function solve_iteration(f, x0, err, maxIter = 50) { - var x = 0; - var x2 = x0; +export function solve_iteration(f: Function, x0: number, err: number, maxIter: number = 50): number { + let x = 0; + let x2 = x0; for (let i = 0; i < maxIter; i++) { x = x2; x2 = f(x); @@ -404,7 +403,7 @@ export function solve_iteration(f, x0, err, maxIter = 50) { * @param b - Second bearing angle * @returns {number} */ -function getAngleDirection(a, b) { +function getAngleDirection(a: number, b: number): number { let a_y = Math.cos(a), a_x = Math.sin(a), b_y = Math.cos(b), @@ -423,7 +422,7 @@ function getAngleDirection(a, b) { * @param {number} b - Second azimuth angle * @returns {number} */ -export function getAngleBetweenAzimuths(a, b) { +export function getAngleBetweenAzimuths(a: number, b: number): number { a = zeroTwoPI(a); b = zeroTwoPI(b); return ((((a - b) % 360) + 360 + 180) % 360) - 180; diff --git a/src/og/math/Line3.js b/src/og/math/Line3.js index 646e0a3f..fe0e9710 100644 --- a/src/og/math/Line3.js +++ b/src/og/math/Line3.js @@ -1,7 +1,7 @@ 'use strict'; -import { EPS10 } from '../math.js'; -import { Vec3 } from './Vec3.js'; +import { EPS10 } from '../math'; +import { Vec3 } from './Vec3'; export class Line3 { constructor(p0, p1) { diff --git a/src/og/math/Plane.js b/src/og/math/Plane.js index 80379979..cc6cb60f 100644 --- a/src/og/math/Plane.js +++ b/src/og/math/Plane.js @@ -1,7 +1,7 @@ "use strict"; -import { EPS5 } from "../math.js"; -import { Vec3 } from "./Vec3.js"; +import { EPS5 } from "../math"; +import { Vec3 } from "./Vec3"; /** * Plane class. diff --git a/src/og/math/Quat.ts b/src/og/math/Quat.ts index 3982766b..79dcca39 100644 --- a/src/og/math/Quat.ts +++ b/src/og/math/Quat.ts @@ -1,13 +1,10 @@ "use strict"; +import * as math from "../math"; import {Vec3} from "./Vec3"; import {Mat4} from "./Mat4"; import {Mat3} from "./Mat3"; -//@ts-ignore -import * as math from "../math.js"; - - /** * A set of 4-dimensional coordinates used to represent rotation in 3-dimensional space. * @constructor diff --git a/src/og/math/Ray.js b/src/og/math/Ray.js index d4fa0f67..21f49709 100644 --- a/src/og/math/Ray.js +++ b/src/og/math/Ray.js @@ -1,7 +1,7 @@ "use strict"; -import { EPS10 } from "../math.js"; -import { Vec3 } from "./Vec3.js"; +import { EPS10 } from "../math"; +import { Vec3 } from "./Vec3"; /** * Represents a ray that extends infinitely from the provided origin in the provided direction. diff --git a/src/og/math/Vec2.js b/src/og/math/Vec2.js index 316ac601..3f434bfb 100644 --- a/src/og/math/Vec2.js +++ b/src/og/math/Vec2.js @@ -1,6 +1,6 @@ "use strict"; -import { Vec3 } from "./Vec3.js"; +import { Vec3 } from "./Vec3"; /** * Class represents a 3d vector. diff --git a/src/og/math/Vec4.ts b/src/og/math/Vec4.ts index 8fe73979..4a5df74f 100644 --- a/src/og/math/Vec4.ts +++ b/src/og/math/Vec4.ts @@ -1,10 +1,8 @@ "use strict"; +import {frac} from "../math"; import {Vec3} from "./Vec3"; -//@ts-ignore -import {frac} from "../math.js"; - /** * Class represents a 4d vector. * @class diff --git a/src/og/math/coder.js b/src/og/math/coder.js index df3dc627..7813dc81 100644 --- a/src/og/math/coder.js +++ b/src/og/math/coder.js @@ -4,8 +4,8 @@ "use strict"; -import * as math from "../math.js"; -import { Vec4 } from "./Vec4.js"; +import * as math from "../math"; +import { Vec4 } from "./Vec4"; /** * Encode 32 bit float value to the RGBA vector. diff --git a/src/og/math/index.js b/src/og/math/index.ts similarity index 62% rename from src/og/math/index.js rename to src/og/math/index.ts index 4a53e93d..54fc16b0 100644 --- a/src/og/math/index.js +++ b/src/og/math/index.ts @@ -1,13 +1,13 @@ import { Line2 } from './Line2.js'; import { Line3 } from './Line3.js'; -import { Mat3 } from './Mat3.js'; -import { Mat4 } from './Mat4.js'; +import { Mat3 } from './Mat3'; +import { Mat4 } from './Mat4'; import { Plane } from './Plane.js'; -import { Quat } from './Quat.js'; +import { Quat } from './Quat'; import { Ray } from './Ray.js'; import { Vec2 } from './Vec2.js'; -import { Vec3 } from './Vec3.js'; -import { Vec4 } from './Vec4.js'; +import { Vec3 } from './Vec3'; +import { Vec4 } from './Vec4'; export { Line2, diff --git a/src/og/quadTree/EPSG4326QuadTreeStrategy.js b/src/og/quadTree/EPSG4326QuadTreeStrategy.js index 2c90c891..84b5f879 100644 --- a/src/og/quadTree/EPSG4326QuadTreeStrategy.js +++ b/src/og/quadTree/EPSG4326QuadTreeStrategy.js @@ -1,6 +1,6 @@ "use strict"; -import { Extent } from "../Extent.js"; +import { Extent } from "../Extent"; import { EPSG4326 } from "../proj/EPSG4326.js"; import { Node } from "../quadTree/Node.js"; import * as quadTree from "../quadTree/quadTree.js"; diff --git a/src/og/quadTree/EarthQuadTreeStrategy.js b/src/og/quadTree/EarthQuadTreeStrategy.js index 170fef81..89f2bf09 100644 --- a/src/og/quadTree/EarthQuadTreeStrategy.js +++ b/src/og/quadTree/EarthQuadTreeStrategy.js @@ -1,7 +1,7 @@ "use strict"; -import { Extent } from "../Extent.js"; -import * as mercator from "../mercator.js"; +import * as mercator from "../mercator"; +import { Extent } from "../Extent"; import { Node } from "../quadTree/Node.js"; import * as quadTree from "../quadTree/quadTree.js"; import { Segment } from "../segment/Segment.js"; diff --git a/src/og/quadTree/EntityCollectionNode.js b/src/og/quadTree/EntityCollectionNode.js index 994a17d4..fb2e2233 100644 --- a/src/og/quadTree/EntityCollectionNode.js +++ b/src/og/quadTree/EntityCollectionNode.js @@ -2,10 +2,10 @@ import { Sphere } from '../bv/Sphere.js'; import { EntityCollection } from '../entity/EntityCollection.js'; -import { Extent } from '../Extent.js'; -import { LonLat } from '../LonLat.js'; -import { Vec3 } from '../math/Vec3.js'; -import * as mercator from '../mercator.js'; +import { Extent } from '../Extent'; +import { LonLat } from '../LonLat'; +import { Vec3 } from '../math/Vec3'; +import * as mercator from '../mercator'; import * as quadTree from './quadTree.js'; class EntityCollectionNode { diff --git a/src/og/quadTree/MarsQuadTreeStrategy.js b/src/og/quadTree/MarsQuadTreeStrategy.js index e232fcaa..fc69429e 100644 --- a/src/og/quadTree/MarsQuadTreeStrategy.js +++ b/src/og/quadTree/MarsQuadTreeStrategy.js @@ -1,6 +1,6 @@ "use strict"; -import { Extent } from "../Extent.js"; +import { Extent } from "../Extent"; import { EPSG4326 } from "../proj/EPSG4326.js"; import { Node } from "../quadTree/Node.js"; import * as quadTree from "../quadTree/quadTree.js"; diff --git a/src/og/quadTree/Node.js b/src/og/quadTree/Node.js index 877fefd8..e3a13cae 100644 --- a/src/og/quadTree/Node.js +++ b/src/og/quadTree/Node.js @@ -1,10 +1,10 @@ "use strict"; -import { Extent } from "../Extent.js"; -import { LonLat } from "../LonLat.js"; -import { MAX, MIN } from "../math.js"; -import { Vec3 } from "../math/Vec3.js"; -import { MAX_LAT } from "../mercator.js"; +import { Extent } from "../Extent"; +import { LonLat } from "../LonLat"; +import { MAX, MIN } from "../math"; +import { Vec3 } from "../math/Vec3"; +import { MAX_LAT } from "../mercator"; import { EPSG3857 } from "../proj/EPSG3857.js"; import { EPSG4326 } from "../proj/EPSG4326.js"; import { getMatrixSubArray, getMatrixSubArrayBoundsExt } from "../utils/shared.js"; diff --git a/src/og/quadTree/Wgs84QuadTreeStrategy.js b/src/og/quadTree/Wgs84QuadTreeStrategy.js index 8acba155..bf2242cf 100644 --- a/src/og/quadTree/Wgs84QuadTreeStrategy.js +++ b/src/og/quadTree/Wgs84QuadTreeStrategy.js @@ -1,6 +1,6 @@ "use strict"; -import { Extent } from "../Extent.js"; +import { Extent } from "../Extent"; import { EPSG4326 } from "../proj/EPSG4326.js"; import { Node } from "../quadTree/Node.js"; import * as quadTree from "../quadTree/quadTree.js"; diff --git a/src/og/renderer/Renderer.js b/src/og/renderer/Renderer.js index aa9c91eb..4ee17f42 100644 --- a/src/og/renderer/Renderer.js +++ b/src/og/renderer/Renderer.js @@ -6,9 +6,9 @@ import { cons } from "../cons.js"; import { depth } from "../shaders/depth.js"; import { LabelWorker } from "../entity/LabelWorker.js"; import { input } from "../input/input.js"; -import { randomi } from "../math.js"; +import { randomi } from "../math"; import { Vec2 } from "../math/Vec2.js"; -import { Vec3 } from "../math/Vec3.js"; +import { Vec3 } from "../math/Vec3"; import { pickingMask } from "../shaders/pickingMask.js"; import { screenFrame } from "../shaders/screenFrame.js"; import { toneMapping } from "../shaders/toneMapping.js"; diff --git a/src/og/renderer/RendererEvents.js b/src/og/renderer/RendererEvents.js index 6084623e..9f63fa39 100644 --- a/src/og/renderer/RendererEvents.js +++ b/src/og/renderer/RendererEvents.js @@ -6,7 +6,7 @@ import { KeyboardHandler } from "../input/KeyboardHandler.js"; import { MouseHandler } from "../input/MouseHandler.js"; import { TouchHandler } from "../input/TouchHandler.js"; import { Vec2 } from "../math/Vec2.js"; -import { Vec3 } from "../math/Vec3.js"; +import { Vec3 } from "../math/Vec3"; const LB_M = 0b0001; const RB_M = 0b0010; diff --git a/src/og/scene/Planet.js b/src/og/scene/Planet.js index 6d8f4f65..e3012de8 100644 --- a/src/og/scene/Planet.js +++ b/src/og/scene/Planet.js @@ -3,14 +3,14 @@ import { PlanetCamera } from "../camera/PlanetCamera.js"; import { Atmosphere } from "../control/Atmosphere.js"; import { SimpleSkyBackground } from "../control/SimpleSkyBackground.js"; -import { wgs84 } from "../ellipsoid/wgs84.js"; -import { Extent } from "../Extent.js"; +import { wgs84 } from "../ellipsoid/wgs84"; +import { Extent } from "../Extent"; import { Vector } from "../layer/Vector.js"; import { Key, Lock } from "../Lock.js"; -import { LonLat } from "../LonLat.js"; -import * as math from "../math.js"; +import { LonLat } from "../LonLat"; +import * as math from "../math"; import { decodeFloatFromRGBAArr } from "../math/coder.js"; -import { Quat, Vec3, Vec4 } from "../math/index.js"; +import { Quat, Vec3, Vec4 } from "../math/index"; import { EarthQuadTreeStrategy } from "../quadTree/EarthQuadTreeStrategy.js"; import { NIGHT, SPECULAR } from "../res/images.js"; import * as segmentHelper from "../segment/segmentHelper.js"; diff --git a/src/og/segment/Segment.js b/src/og/segment/Segment.js index 8ad47544..b4b4d213 100644 --- a/src/og/segment/Segment.js +++ b/src/og/segment/Segment.js @@ -2,12 +2,12 @@ import { Box } from "../bv/Box.js"; import { Sphere } from "../bv/Sphere.js"; -import { Extent } from "../Extent.js"; +import { Extent } from "../Extent"; import { Layer } from "../layer/Layer.js"; -import { LonLat } from "../LonLat.js"; +import { LonLat } from "../LonLat"; import { Ray } from "../math/Ray.js"; -import { Vec3 } from "../math/Vec3.js"; -import * as mercator from "../mercator.js"; +import { Vec3 } from "../math/Vec3"; +import * as mercator from "../mercator"; import { EPSG3857 } from "../proj/EPSG3857.js"; import { E, N, NOTRENDERING, OPSIDE, S, W } from "../quadTree/quadTree.js"; import * as segmentHelper from "../segment/segmentHelper.js"; diff --git a/src/og/segment/SegmentLonLat.js b/src/og/segment/SegmentLonLat.js index e0621e03..15a433a5 100644 --- a/src/og/segment/SegmentLonLat.js +++ b/src/og/segment/SegmentLonLat.js @@ -1,10 +1,10 @@ "use strict"; -import { Extent } from "../Extent.js"; +import { Extent } from "../Extent"; import { Layer } from "../layer/Layer.js"; -import { LonLat } from "../LonLat.js"; -import { Vec3 } from "../math/Vec3.js"; -import * as mercator from "../mercator.js"; +import { LonLat } from "../LonLat"; +import { Vec3 } from "../math/Vec3"; +import * as mercator from "../mercator"; import { EPSG4326 } from "../proj/EPSG4326.js"; import * as quadTree from "../quadTree/quadTree.js"; import { Segment, TILEGROUP_NORTH, TILEGROUP_SOUTH } from "./Segment.js"; diff --git a/src/og/terrain/BilTerrain.js b/src/og/terrain/BilTerrain.js index 3a77dcff..98532aff 100644 --- a/src/og/terrain/BilTerrain.js +++ b/src/og/terrain/BilTerrain.js @@ -2,8 +2,8 @@ import { Layer } from "../layer/Layer.js"; import { WMS } from "../layer/WMS.js"; -import { isPowerOfTwo, nextHighestPowerOfTwo } from "../math.js"; -import { getTileExtent } from "../mercator.js"; +import { isPowerOfTwo, nextHighestPowerOfTwo } from "../math"; +import { getTileExtent } from "../mercator"; import { GlobusTerrain } from "./GlobusTerrain.js"; class BilTerrain extends GlobusTerrain { diff --git a/src/og/terrain/GlobusTerrain.js b/src/og/terrain/GlobusTerrain.js index 7dcdd251..b559f9a2 100644 --- a/src/og/terrain/GlobusTerrain.js +++ b/src/og/terrain/GlobusTerrain.js @@ -4,17 +4,17 @@ "use strict"; import { Events } from "../Events.js"; -import * as mercator from "../mercator.js"; +import * as mercator from "../mercator"; import { EPSG3857 } from "../proj/EPSG3857.js"; import { NOTRENDERING } from "../quadTree/quadTree.js"; import { Loader } from "../utils/Loader.js"; import { EmptyTerrain } from "./EmptyTerrain.js"; // import { QueueArray } from '../QueueArray.js'; -import { Extent } from "../Extent.js"; +import { Extent } from "../Extent"; import { Layer } from "../layer/Layer.js"; -import { LonLat } from "../LonLat.js"; +import { LonLat } from "../LonLat"; import { Ray } from "../math/Ray.js"; -import { Vec3 } from "../math/Vec3.js"; +import { Vec3 } from "../math/Vec3"; import { createExtent, stringTemplate } from "../utils/shared.js"; const EVENT_NAMES = [ diff --git a/src/og/terrain/MapboxTerrain.js b/src/og/terrain/MapboxTerrain.js index 10f17eda..e0dc56f3 100644 --- a/src/og/terrain/MapboxTerrain.js +++ b/src/og/terrain/MapboxTerrain.js @@ -1,7 +1,7 @@ import { Layer } from "../layer/Layer.js"; -import { isPowerOfTwo } from "../math.js"; -import * as mercator from "../mercator.js"; -import { getTileExtent } from "../mercator.js"; +import { isPowerOfTwo } from "../math"; +import * as mercator from "../mercator"; +import { getTileExtent } from "../mercator"; import { GlobusTerrain } from "./GlobusTerrain.js"; const KEY = diff --git a/src/og/ui/Slider.js b/src/og/ui/Slider.js index 079d872a..3ad03f79 100644 --- a/src/og/ui/Slider.js +++ b/src/og/ui/Slider.js @@ -1,6 +1,6 @@ 'use strict'; -import { clamp } from '../math.js'; +import { clamp } from '../math'; import { stringTemplate } from '../utils/shared.js'; import { View } from './View.js'; diff --git a/src/og/utils/GeoImageCreator.js b/src/og/utils/GeoImageCreator.js index 92380c24..e0327172 100644 --- a/src/og/utils/GeoImageCreator.js +++ b/src/og/utils/GeoImageCreator.js @@ -1,6 +1,6 @@ 'use strict'; -import { LonLat } from '../LonLat.js'; +import { LonLat } from '../LonLat'; import * as utils from '../utils/shared.js'; import { Framebuffer } from '../webgl/Framebuffer.js'; import { Program } from '../webgl/Program.js'; diff --git a/src/og/utils/shared.js b/src/og/utils/shared.js index c8ab65b3..f2ce1e44 100644 --- a/src/og/utils/shared.js +++ b/src/og/utils/shared.js @@ -4,11 +4,11 @@ "use strict"; -import { Extent } from "../Extent.js"; -import { LonLat } from "../LonLat.js"; +import { Extent } from "../Extent"; +import { LonLat } from "../LonLat"; import { Vec2 } from "../math/Vec2.js"; -import { Vec3 } from "../math/Vec3.js"; -import { Vec4 } from "../math/Vec4.js"; +import { Vec3 } from "../math/Vec3"; +import { Vec4 } from "../math/Vec4"; import { colorTable } from "./colorTable.js"; export function getDefault(param, def) { diff --git a/tests/LonLat.test.js b/tests/LonLat.test.js index bb2fd251..538b6d65 100644 --- a/tests/LonLat.test.js +++ b/tests/LonLat.test.js @@ -60,7 +60,6 @@ describe('LonLat', () => { describe('forwardMercator', () => { test('converts degrees to mercator', () => { const lonlat = LonLat.forwardMercator(0, 0, 30); - console.log(lonlat) expect(lonlat).toBeInstanceOf(LonLat); expect(lonlat.lon).toBeCloseTo(0, 5); expect(lonlat.lat).toBeCloseTo(0, 5); diff --git a/tests/ellipsoid/Ellipsoid.test.js b/tests/ellipsoid/Ellipsoid.test.js index da19520c..3ea59caa 100644 --- a/tests/ellipsoid/Ellipsoid.test.js +++ b/tests/ellipsoid/Ellipsoid.test.js @@ -1,6 +1,6 @@ import { LonLat } from "../../src/og/LonLat"; import { Vec3 } from "../../src/og/math/Vec3"; -import { Ellipsoid } from "../../src/og/ellipsoid/Ellipsoid.js"; +import { Ellipsoid } from "../../src/og/ellipsoid/Ellipsoid"; import { wgs84 } from "../../src/og/ellipsoid/wgs84"; test('Testing Ellipsoid Vincenty direct to inverse formulas', () => { diff --git a/tests/math.test.js b/tests/math.test.js index 80f1c12a..b0c2b9f4 100644 --- a/tests/math.test.js +++ b/tests/math.test.js @@ -11,7 +11,7 @@ import { randomi, step, getAngleBetweenAzimuths -} from "../src/og/math.js"; +} from "../src/og/math"; describe('math module', () => { describe('log', () => {