@pirireis/webglobeplugins 1.0.2 → 1.0.4
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/package.json +2 -2
- package/plugins/alarms/alarmFadeInFadeOutPlugin/AlarmTimeLineFadeInFadeOutPlugin.js +399 -0
- package/{Math/angle-calculation.ts → webglobeplugins/Math/angle-calculation.js} +14 -18
- package/{Math/arc-cdf-points.ts → webglobeplugins/Math/arc-cdf-points.js} +272 -329
- package/{Math/arc-generate-points-exponantial.ts → webglobeplugins/Math/arc-generate-points-exponantial.js} +254 -299
- package/{Math/arc.ts → webglobeplugins/Math/arc.js} +292 -421
- package/{Math → webglobeplugins/Math}/bounds/line-bbox.js +186 -225
- package/{Math/circle-cdf-points.ts → webglobeplugins/Math/circle-cdf-points.js} +78 -143
- package/{Math/circle.ts → webglobeplugins/Math/circle.js} +33 -49
- package/{Math/constants.ts → webglobeplugins/Math/constants.js} +4 -12
- package/{Math/contour/quadtreecontours.ts → webglobeplugins/Math/contour/quadtreecontours.js} +300 -371
- package/{Math → webglobeplugins/Math}/contour/quadtreecontours1.js +298 -336
- package/{Math/finite-line-2d.ts → webglobeplugins/Math/finite-line-2d.js} +58 -68
- package/{Math/haversine.ts → webglobeplugins/Math/haversine.js} +22 -33
- package/webglobeplugins/Math/index.js +1 -0
- package/{Math/juction/arc-plane.ts → webglobeplugins/Math/juction/arc-plane.js} +143 -203
- package/{Math/juction/line-sphere.ts → webglobeplugins/Math/juction/line-sphere.js} +22 -32
- package/{Math/juction/plane-plane.ts → webglobeplugins/Math/juction/plane-plane.js} +53 -62
- package/{Math/line.ts → webglobeplugins/Math/line.js} +52 -84
- package/webglobeplugins/Math/matrix4.js +1 -0
- package/{Math/methods.ts → webglobeplugins/Math/methods.js} +126 -182
- package/{Math/plane.ts → webglobeplugins/Math/plane.js} +56 -92
- package/{Math/quaternion.ts → webglobeplugins/Math/quaternion.js} +106 -128
- package/{Math/templete-shapes/grid-visually-equal.ts → webglobeplugins/Math/templete-shapes/grid-visually-equal.js} +65 -118
- package/webglobeplugins/Math/tessellation/constants.js +1 -0
- package/{Math/tessellation/methods.ts → webglobeplugins/Math/tessellation/methods.js} +49 -79
- package/{Math/tessellation/nearest-value-padding.ts → webglobeplugins/Math/tessellation/nearest-value-padding.js} +112 -147
- package/{Math/tessellation/spherical-triangle-area.ts → webglobeplugins/Math/tessellation/spherical-triangle-area.js} +99 -127
- package/{Math/tessellation/tile-merger.ts → webglobeplugins/Math/tessellation/tile-merger.js} +429 -578
- package/{Math/tessellation/triangle-tessellation.ts → webglobeplugins/Math/tessellation/triangle-tessellation.js} +464 -533
- package/webglobeplugins/Math/tessellation/types.js +1 -0
- package/webglobeplugins/Math/types.js +1 -0
- package/{Math → webglobeplugins/Math}/utils.js +2 -3
- package/{Math/vec3.ts → webglobeplugins/Math/vec3.js} +155 -227
- package/{Math/xyz-tile.ts → webglobeplugins/Math/xyz-tile.js} +18 -26
- package/{algorithms → webglobeplugins/algorithms}/search-binary.js +16 -14
- package/webglobeplugins/altitude-locator/adaptors.js +1 -0
- package/webglobeplugins/altitude-locator/keymethod.js +1 -0
- package/{altitude-locator → webglobeplugins/altitude-locator}/plugin.js +344 -445
- package/{altitude-locator → webglobeplugins/altitude-locator}/types.js +21 -26
- package/{compass-rose → webglobeplugins/compass-rose}/compass-rose-padding-flat.js +230 -274
- package/{compass-rose/compass-text-writer.ts → webglobeplugins/compass-rose/compass-text-writer.js} +155 -210
- package/{compass-rose → webglobeplugins/compass-rose}/index.js +3 -3
- package/{constants.ts → webglobeplugins/constants.js} +6 -8
- package/{heatwave → webglobeplugins/heatwave}/datamanager.js +149 -168
- package/{heatwave → webglobeplugins/heatwave}/heatwave.js +206 -261
- package/{heatwave → webglobeplugins/heatwave}/index.js +5 -5
- package/{heatwave → webglobeplugins/heatwave}/isobar.js +306 -340
- package/{heatwave/texture-point-sampler.ts → webglobeplugins/heatwave/texture-point-sampler.js} +187 -220
- package/webglobeplugins/investigation-tools/draw/tiles/adapters.js +67 -0
- package/{investigation-tools/draw/tiles/tiles.ts → webglobeplugins/investigation-tools/draw/tiles/tiles.js} +128 -162
- package/{jest.config.js → webglobeplugins/jest.config.js} +7 -6
- package/{pin → webglobeplugins/pin}/pin-object-array1.js +300 -381
- package/{pin → webglobeplugins/pin}/pin-point-totem1.js +60 -77
- package/{programs → webglobeplugins/programs}/arrowfield/arrow-field.js +60 -89
- package/{programs → webglobeplugins/programs}/arrowfield/logic.js +141 -173
- package/{programs → webglobeplugins/programs}/data2legend/density-to-legend.js +68 -86
- package/{programs → webglobeplugins/programs}/data2legend/point-to-density-texture.js +67 -84
- package/{programs → webglobeplugins/programs}/float2legendwithratio/index.js +2 -3
- package/{programs → webglobeplugins/programs}/float2legendwithratio/logic.js +118 -144
- package/{programs → webglobeplugins/programs}/float2legendwithratio/object.js +104 -141
- package/{programs → webglobeplugins/programs}/helpers/blender.js +58 -73
- package/{programs/helpers/fadeaway.ts → webglobeplugins/programs/helpers/fadeaway.js} +60 -73
- package/{programs → webglobeplugins/programs}/index.js +20 -19
- package/{programs → webglobeplugins/programs}/line-on-globe/circle-accurate-3d.js +85 -112
- package/{programs → webglobeplugins/programs}/line-on-globe/circle-accurate-flat.js +148 -200
- package/{programs → webglobeplugins/programs}/line-on-globe/degree-padding-around-circle-3d.js +102 -134
- package/webglobeplugins/programs/line-on-globe/index.js +1 -0
- package/{programs → webglobeplugins/programs}/line-on-globe/lines-color-instanced-flat.js +80 -99
- package/webglobeplugins/programs/line-on-globe/linestrip/data.js +4 -0
- package/{programs/line-on-globe/linestrip/linestrip.ts → webglobeplugins/programs/line-on-globe/linestrip/linestrip.js} +93 -152
- package/{programs/line-on-globe/naive-accurate-flexible.ts → webglobeplugins/programs/line-on-globe/naive-accurate-flexible.js} +126 -175
- package/{programs → webglobeplugins/programs}/line-on-globe/util.js +5 -8
- package/{programs → webglobeplugins/programs}/picking/pickable-polygon-renderer.js +98 -129
- package/{programs → webglobeplugins/programs}/picking/pickable-renderer.js +98 -130
- package/{programs → webglobeplugins/programs}/point-on-globe/element-globe-surface-glow.js +93 -122
- package/{programs → webglobeplugins/programs}/point-on-globe/element-point-glow.js +80 -114
- package/{programs → webglobeplugins/programs}/point-on-globe/square-pixel-point.js +121 -139
- package/{programs/polygon-on-globe/texture-dem-triangles.ts → webglobeplugins/programs/polygon-on-globe/texture-dem-triangles.js} +178 -209
- package/{programs/programcache.ts → webglobeplugins/programs/programcache.js} +126 -134
- package/webglobeplugins/programs/rings/index.js +1 -0
- package/{programs/rings/partial-ring/piece-of-pie.ts → webglobeplugins/programs/rings/partial-ring/piece-of-pie.js} +152 -222
- package/webglobeplugins/programs/totems/attachments/adaptive-opacity.js +131 -0
- package/{programs/totems/dem-textures-manager.ts → webglobeplugins/programs/totems/attachments/dem-textures-manager.js} +263 -360
- package/webglobeplugins/programs/totems/camera-totem-attactment-interface.js +1 -0
- package/{programs/totems/camerauniformblock.ts → webglobeplugins/programs/totems/camerauniformblock.js} +225 -310
- package/{programs/totems/canvas-webglobe-info.ts → webglobeplugins/programs/totems/canvas-webglobe-info.js} +132 -147
- package/{programs/totems/globe-changes.ts → webglobeplugins/programs/totems/globe-changes.js} +59 -79
- package/{programs → webglobeplugins/programs}/totems/gpu-selection-uniform-block.js +99 -127
- package/{programs/totems/index.ts → webglobeplugins/programs/totems/index.js} +2 -2
- package/{programs → webglobeplugins/programs}/two-d/pixel-padding-for-compass.js +87 -101
- package/{programs → webglobeplugins/programs}/util.js +14 -19
- package/{programs/vectorfields/logics/constants.ts → webglobeplugins/programs/vectorfields/logics/constants.js} +4 -5
- package/{programs/vectorfields/logics/drawrectangleparticles.ts → webglobeplugins/programs/vectorfields/logics/drawrectangleparticles.js} +107 -136
- package/{programs → webglobeplugins/programs}/vectorfields/logics/index.js +2 -4
- package/webglobeplugins/programs/vectorfields/logics/particle-ubo.js +19 -0
- package/{programs/vectorfields/logics/pixelbased.ts → webglobeplugins/programs/vectorfields/logics/pixelbased.js} +89 -122
- package/{programs → webglobeplugins/programs}/vectorfields/logics/ubo.js +51 -57
- package/{programs/vectorfields/pingpongbuffermanager.ts → webglobeplugins/programs/vectorfields/pingpongbuffermanager.js} +99 -113
- package/{range-tools-on-terrain/bearing-line/adapters.ts → webglobeplugins/range-tools-on-terrain/bearing-line/adapters.js} +114 -154
- package/{range-tools-on-terrain/bearing-line/plugin.ts → webglobeplugins/range-tools-on-terrain/bearing-line/plugin.js} +457 -569
- package/webglobeplugins/range-tools-on-terrain/bearing-line/types.js +1 -0
- package/{range-tools-on-terrain/circle-line-chain/adapters.ts → webglobeplugins/range-tools-on-terrain/circle-line-chain/adapters.js} +85 -104
- package/{range-tools-on-terrain/circle-line-chain/chain-list-map.ts → webglobeplugins/range-tools-on-terrain/circle-line-chain/chain-list-map.js} +382 -446
- package/{range-tools-on-terrain/circle-line-chain/plugin.ts → webglobeplugins/range-tools-on-terrain/circle-line-chain/plugin.js} +464 -607
- package/webglobeplugins/range-tools-on-terrain/circle-line-chain/types.js +1 -0
- package/{range-tools-on-terrain/range-ring/adapters.ts → webglobeplugins/range-tools-on-terrain/range-ring/adapters.js} +93 -114
- package/{range-tools-on-terrain/range-ring/enum.ts → webglobeplugins/range-tools-on-terrain/range-ring/enum.js} +2 -2
- package/{range-tools-on-terrain/range-ring/plugin.ts → webglobeplugins/range-tools-on-terrain/range-ring/plugin.js} +377 -444
- package/webglobeplugins/range-tools-on-terrain/range-ring/rangeringangletext.js +331 -0
- package/webglobeplugins/range-tools-on-terrain/range-ring/types.js +9 -0
- package/webglobeplugins/semiplugins/interface.js +1 -0
- package/{semiplugins/lightweight/line-plugin.ts → webglobeplugins/semiplugins/lightweight/line-plugin.js} +221 -342
- package/{semiplugins/lightweight/piece-of-pie-plugin.ts → webglobeplugins/semiplugins/lightweight/piece-of-pie-plugin.js} +200 -275
- package/{semiplugins/shape-on-terrain/arc-plugin.ts → webglobeplugins/semiplugins/shape-on-terrain/arc-plugin.js} +481 -616
- package/{semiplugins/shape-on-terrain/circle-plugin.ts → webglobeplugins/semiplugins/shape-on-terrain/circle-plugin.js} +444 -588
- package/{semiplugins/shape-on-terrain/padding-1-degree.ts → webglobeplugins/semiplugins/shape-on-terrain/padding-1-degree.js} +539 -713
- package/{semiplugins/shape-on-terrain/terrain-polygon/adapters.ts → webglobeplugins/semiplugins/shape-on-terrain/terrain-polygon/adapters.js} +55 -69
- package/{semiplugins/shape-on-terrain/terrain-polygon/data/cache.ts → webglobeplugins/semiplugins/shape-on-terrain/terrain-polygon/data/cache.js} +104 -149
- package/{semiplugins/shape-on-terrain/terrain-polygon/data/index-polygon-map.ts → webglobeplugins/semiplugins/shape-on-terrain/terrain-polygon/data/index-polygon-map.js} +45 -58
- package/{semiplugins/shape-on-terrain/terrain-polygon/data/manager.ts → webglobeplugins/semiplugins/shape-on-terrain/terrain-polygon/data/manager.js} +4 -4
- package/webglobeplugins/semiplugins/shape-on-terrain/terrain-polygon/data/master-worker.js +241 -0
- package/webglobeplugins/semiplugins/shape-on-terrain/terrain-polygon/data/polygon-to-triangles.js +76 -0
- package/{semiplugins/shape-on-terrain/terrain-polygon/data/random.ts → webglobeplugins/semiplugins/shape-on-terrain/terrain-polygon/data/random.js} +121 -165
- package/webglobeplugins/semiplugins/shape-on-terrain/terrain-polygon/data/types.js +1 -0
- package/{semiplugins/shape-on-terrain/terrain-polygon/data/worker-contact.ts → webglobeplugins/semiplugins/shape-on-terrain/terrain-polygon/data/worker-contact.js} +64 -81
- package/webglobeplugins/semiplugins/shape-on-terrain/terrain-polygon/data/worker.js +162 -0
- package/{semiplugins/shape-on-terrain/terrain-polygon/terrain-polygon.ts → webglobeplugins/semiplugins/shape-on-terrain/terrain-polygon/terrain-polygon.js} +282 -265
- package/webglobeplugins/semiplugins/shape-on-terrain/terrain-polygon/test-records.js +14 -0
- package/webglobeplugins/semiplugins/shape-on-terrain/terrain-polygon/types.js +8 -0
- package/webglobeplugins/semiplugins/shell/bbox-renderer/index.js +2 -0
- package/{semiplugins/shell/bbox-renderer/logic.ts → webglobeplugins/semiplugins/shell/bbox-renderer/logic.js} +209 -273
- package/webglobeplugins/semiplugins/shell/bbox-renderer/object.js +78 -0
- package/webglobeplugins/semiplugins/type.js +1 -0
- package/{semiplugins/utility/container-plugin.ts → webglobeplugins/semiplugins/utility/container-plugin.js} +94 -126
- package/{semiplugins/utility/object-pass-container-plugin.ts → webglobeplugins/semiplugins/utility/object-pass-container-plugin.js} +80 -101
- package/{shaders → webglobeplugins/shaders}/fragment-toy/firework.js +1 -1
- package/{shaders → webglobeplugins/shaders}/fragment-toy/singularity.js +2 -5
- package/{tracks → webglobeplugins/tracks}/point-heat-map/adaptors/timetracksplugin-format-to-this.js +63 -78
- package/webglobeplugins/tracks/point-heat-map/index.js +1 -0
- package/{tracks → webglobeplugins/tracks}/point-heat-map/plugin-webworker.js +121 -148
- package/{tracks → webglobeplugins/tracks}/point-heat-map/point-to-heat-map-flow.js +121 -150
- package/{tracks → webglobeplugins/tracks}/point-tracks/key-methods.js +2 -3
- package/{tracks → webglobeplugins/tracks}/point-tracks/plugin.js +401 -487
- package/{tracks → webglobeplugins/tracks}/timetracks/adaptors-line-strip.js +65 -79
- package/{tracks → webglobeplugins/tracks}/timetracks/plugin-line-strip.js +240 -295
- package/{tracks → webglobeplugins/tracks}/timetracks/program-line-strip.js +413 -495
- package/{tracks → webglobeplugins/tracks}/timetracks/programpoint-line-strip.js +109 -137
- package/webglobeplugins/types.js +19 -0
- package/{util → webglobeplugins/util}/account/bufferoffsetmanager.js +176 -209
- package/webglobeplugins/util/account/create-buffermap-orchastration.js +39 -0
- package/{util → webglobeplugins/util}/account/index.js +3 -6
- package/{util/account/single-attribute-buffer-management/buffer-manager.ts → webglobeplugins/util/account/single-attribute-buffer-management/buffer-manager.js} +119 -151
- package/{util/account/single-attribute-buffer-management/buffer-orchestrator.ts → webglobeplugins/util/account/single-attribute-buffer-management/buffer-orchestrator.js} +212 -238
- package/{util/account/single-attribute-buffer-management/buffer-orchestrator1.ts → webglobeplugins/util/account/single-attribute-buffer-management/buffer-orchestrator1.js} +159 -184
- package/{util/account/single-attribute-buffer-management/index.ts → webglobeplugins/util/account/single-attribute-buffer-management/index.js} +4 -11
- package/{util/account/single-attribute-buffer-management/object-store.ts → webglobeplugins/util/account/single-attribute-buffer-management/object-store.js} +55 -76
- package/webglobeplugins/util/account/single-attribute-buffer-management/types.js +1 -0
- package/{util → webglobeplugins/util}/account/util.js +18 -22
- package/webglobeplugins/util/algorithms/index.js +1 -0
- package/{util → webglobeplugins/util}/algorithms/search-binary.js +25 -26
- package/{util/build-strategy/static-dynamic.ts → webglobeplugins/util/build-strategy/static-dynamic.js} +41 -50
- package/webglobeplugins/util/check/index.js +1 -0
- package/webglobeplugins/util/check/typecheck.js +66 -0
- package/{util/frame-counter-trigger.ts → webglobeplugins/util/frame-counter-trigger.js} +84 -99
- package/{util/geometry/index.ts → webglobeplugins/util/geometry/index.js} +121 -155
- package/webglobeplugins/util/gl-util/buffer/attribute-loader.js +74 -0
- package/{util/gl-util/buffer/index.ts → webglobeplugins/util/gl-util/buffer/index.js} +3 -6
- package/{util/gl-util/draw-options/methods.ts → webglobeplugins/util/gl-util/draw-options/methods.js} +32 -47
- package/{util/gl-util/uniform-block/manager.ts → webglobeplugins/util/gl-util/uniform-block/manager.js} +209 -232
- package/{util/globe-default-gl-states.ts → webglobeplugins/util/globe-default-gl-states.js} +4 -5
- package/{util/helper-methods.ts → webglobeplugins/util/helper-methods.js} +8 -9
- package/{util → webglobeplugins/util}/index.js +10 -9
- package/webglobeplugins/util/interpolation/index.js +1 -0
- package/webglobeplugins/util/interpolation/timetrack/index.js +2 -0
- package/{util → webglobeplugins/util}/interpolation/timetrack/timetrack-interpolator.js +79 -94
- package/{util → webglobeplugins/util}/interpolation/timetrack/web-worker.js +46 -51
- package/{util/picking/fence.ts → webglobeplugins/util/picking/fence.js} +43 -47
- package/{util/picking/picker-displayer.ts → webglobeplugins/util/picking/picker-displayer.js} +176 -226
- package/{util → webglobeplugins/util}/programs/draw-from-pixel-coords.js +164 -201
- package/{util/programs/draw-texture-on-canvas.ts → webglobeplugins/util/programs/draw-texture-on-canvas.js} +69 -91
- package/{util → webglobeplugins/util}/programs/supersampletotextures.js +97 -130
- package/{util/programs/texturetoglobe.js → webglobeplugins/util/programs/texturetoglobe_delete.js} +128 -153
- package/{util/shaderfunctions/geometrytransformations.ts → webglobeplugins/util/shaderfunctions/geometrytransformations.js} +44 -106
- package/{util → webglobeplugins/util}/shaderfunctions/index.js +2 -2
- package/{util → webglobeplugins/util}/shaderfunctions/nodata.js +2 -4
- package/{util → webglobeplugins/util}/shaderfunctions/noisefunctions.js +7 -10
- package/{util/webglobjectbuilders.ts → webglobeplugins/util/webglobjectbuilders.js} +358 -446
- package/{vectorfield → webglobeplugins/vectorfield}/arrowfield/adaptor.js +11 -11
- package/{vectorfield → webglobeplugins/vectorfield}/arrowfield/index.js +3 -3
- package/{vectorfield → webglobeplugins/vectorfield}/arrowfield/plugin.js +83 -128
- package/{vectorfield → webglobeplugins/vectorfield}/waveparticles/adaptor.js +15 -16
- package/{vectorfield → webglobeplugins/vectorfield}/waveparticles/index.js +3 -3
- package/{vectorfield/waveparticles/plugin.ts → webglobeplugins/vectorfield/waveparticles/plugin.js} +455 -506
- package/webglobeplugins/vectorfield/wind/adapters/image-to-fields.js +92 -0
- package/webglobeplugins/vectorfield/wind/adapters/types.js +1 -0
- package/{vectorfield/wind/imagetovectorfieldandmagnitude.ts → webglobeplugins/vectorfield/wind/imagetovectorfieldandmagnitude.js} +53 -78
- package/{vectorfield → webglobeplugins/vectorfield}/wind/index.js +5 -5
- package/{vectorfield/wind/plugin-persistant.ts → webglobeplugins/vectorfield/wind/plugin-persistant.js} +390 -483
- package/{vectorfield → webglobeplugins/vectorfield}/wind/plugin.js +685 -883
- package/{vectorfield → webglobeplugins/vectorfield}/wind/vectorfieldimage.js +23 -27
- package/{write-text/context-text-bulk.ts → webglobeplugins/write-text/context-text-bulk.js} +200 -285
- package/webglobeplugins/write-text/context-text3.js +167 -0
- package/{write-text/context-text4.ts → webglobeplugins/write-text/context-text4.js} +146 -231
- package/{write-text → webglobeplugins/write-text}/context-textDELETE.js +94 -125
- package/{write-text/objectarraylabels/index.ts → webglobeplugins/write-text/objectarraylabels/index.js} +2 -2
- package/{write-text → webglobeplugins/write-text}/objectarraylabels/objectarraylabels.js +200 -247
- package/Math/index.js +0 -0
- package/Math/matrix4.ts +0 -0
- package/Math/mesh/mapbox-delaunay.d.ts +0 -74
- package/Math/roadmap.md +0 -10
- package/Math/tessellation/constants.ts +0 -1
- package/Math/tessellation/roadmap.md +0 -48
- package/Math/tessellation/types.ts +0 -1
- package/Math/types.ts +0 -68
- package/altitude-locator/adaptors.js +0 -0
- package/altitude-locator/keymethod.js +0 -0
- package/investigation-tools/draw/tiles/adapters.ts +0 -133
- package/programs/line-on-globe/index.js +0 -0
- package/programs/line-on-globe/linestrip/data.ts +0 -29
- package/programs/polygon-on-globe/roadmap.md +0 -8
- package/programs/rings/index.js +0 -1
- package/programs/totems/camera-totem-attactment-interface.ts +0 -4
- package/programs/vectorfields/logics/particle-ubo.ts +0 -23
- package/publish.bat +0 -62
- package/range-tools-on-terrain/bearing-line/types.ts +0 -65
- package/range-tools-on-terrain/circle-line-chain/types.ts +0 -43
- package/range-tools-on-terrain/range-ring/rangeringangletext.ts +0 -396
- package/range-tools-on-terrain/range-ring/types.ts +0 -30
- package/semiplugins/interface.ts +0 -14
- package/semiplugins/shape-on-terrain/goal.md +0 -12
- package/semiplugins/shape-on-terrain/terrain-polygon/data/cache-shortcuts.md +0 -20
- package/semiplugins/shape-on-terrain/terrain-polygon/data/master-worker.js +0 -196
- package/semiplugins/shape-on-terrain/terrain-polygon/data/master-worker.ts +0 -209
- package/semiplugins/shape-on-terrain/terrain-polygon/data/polygon-to-triangles.ts +0 -144
- package/semiplugins/shape-on-terrain/terrain-polygon/data/readme.md +0 -5
- package/semiplugins/shape-on-terrain/terrain-polygon/data/types.ts +0 -37
- package/semiplugins/shape-on-terrain/terrain-polygon/data/worker.js +0 -146
- package/semiplugins/shape-on-terrain/terrain-polygon/notes.md +0 -90
- package/semiplugins/shape-on-terrain/terrain-polygon/types.ts +0 -69
- package/semiplugins/shell/bbox-renderer/index.ts +0 -2
- package/semiplugins/shell/bbox-renderer/object.ts +0 -129
- package/semiplugins/type.ts +0 -8
- package/terrain-plugin.mmd +0 -83
- package/tests/Math/arc-sampling-test.js +0 -367
- package/tests/Math/arc-sampling-test.ts +0 -429
- package/tests/Math/arc.test.ts +0 -77
- package/tests/Math/junction/arc-limit.test.ts +0 -7
- package/tests/Math/junction/arc-plane-points.test.ts +0 -196
- package/tests/Math/junction/arc-plane.test.ts +0 -172
- package/tests/Math/junction/line-sphere.test.ts +0 -127
- package/tests/Math/junction/plane-plane.test.ts +0 -91
- package/tests/Math/plane-test.ts +0 -17
- package/tests/Math/plane.test.ts +0 -43
- package/tests/Math/vec3.test.ts +0 -33
- package/tracks/point-heat-map/index.js +0 -0
- package/tracks/point-heat-map/readme.md +0 -15
- package/tracks/timetracks/readme.md +0 -1
- package/tsconfig.json +0 -22
- package/types/@pirireis/webglobe.d.ts +0 -102
- package/types/delaunator.d.ts +0 -40
- package/types/earcut.d.ts +0 -11
- package/types/rbush.d.ts +0 -57
- package/types.ts +0 -319
- package/util/account/create-buffermap-orchastration.ts +0 -85
- package/util/account/single-attribute-buffer-management/types.ts +0 -43
- package/util/algorithms/index.js +0 -0
- package/util/check/index.js +0 -0
- package/util/check/typecheck.ts +0 -74
- package/util/gl-util/buffer/attribute-loader.ts +0 -84
- package/util/interpolation/index.js +0 -0
- package/util/interpolation/timetrack/index.js +0 -9
- package/vectorfield/wind/adapters/image-to-fields.ts +0 -74
- package/vectorfield/wind/adapters/types.ts +0 -12
- package/vectorfield/wind/plugin-persistant copy.ts +0 -461
- package/write-text/context-text3.ts +0 -252
- package/write-text/objectarraylabels/objectarraylabels.d.ts +0 -72
|
@@ -1,196 +0,0 @@
|
|
|
1
|
-
import { Plane, Arc, Vec3, Sphere, Quaternion } from '../../../Math/types';
|
|
2
|
-
import * as plane from '../../../Math/plane';
|
|
3
|
-
import * as arc from '../../../Math/arc';
|
|
4
|
-
import * as vec3 from '../../../Math/vec3';
|
|
5
|
-
import * as quateernion from '../../../Math/quaternion';
|
|
6
|
-
import { pointsOnArc } from '../../../Math/juction/arc-plane';
|
|
7
|
-
import { EPSILON } from '../../../Math/constants';
|
|
8
|
-
|
|
9
|
-
describe('pointsOnArc', () => {
|
|
10
|
-
const inArc = arc.create(vec3.create(1, 0, 0), vec3.create(0, 1, 0));
|
|
11
|
-
const junctionPlane = plane.create(vec3.create(0, 0, 1), 0);
|
|
12
|
-
const outPoints: [Vec3, Vec3] = [vec3.create(), vec3.create()];
|
|
13
|
-
|
|
14
|
-
beforeEach(() => {
|
|
15
|
-
// Reset arc and plane before each test
|
|
16
|
-
arc.set(inArc, vec3.create(1, 0, 0), vec3.create(0, 1, 0)); // 90-degree arc on XY plane
|
|
17
|
-
plane.set(junctionPlane, vec3.create(0, 0, 1), 0); // XY plane
|
|
18
|
-
vec3.set(outPoints[0], 0, 0, 0);
|
|
19
|
-
vec3.set(outPoints[1], 0, 0, 0);
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
test('should return 0 if junction plane is too far', () => {
|
|
23
|
-
plane.set(junctionPlane, vec3.create(0, 0, 1), 1.1);
|
|
24
|
-
const count = pointsOnArc(inArc, junctionPlane, outPoints);
|
|
25
|
-
expect(count).toBe(0);
|
|
26
|
-
});
|
|
27
|
-
|
|
28
|
-
test('should return 0 if junction plane is too far (negative distance)', () => {
|
|
29
|
-
plane.set(junctionPlane, vec3.create(0, 0, 1), -1.1);
|
|
30
|
-
const count = pointsOnArc(inArc, junctionPlane, outPoints);
|
|
31
|
-
expect(count).toBe(0);
|
|
32
|
-
});
|
|
33
|
-
|
|
34
|
-
test('should return 0 if planes are parallel and distinct', () => {
|
|
35
|
-
plane.set(junctionPlane, vec3.create(0, 0, 1), 0.5); // Plane parallel to the arc's plane
|
|
36
|
-
const count = pointsOnArc(inArc, junctionPlane, outPoints);
|
|
37
|
-
expect(count).toBe(0);
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
test('should return 1 point for a tangent junction plane at an arc endpoint', () => {
|
|
41
|
-
plane.set(junctionPlane, vec3.create(1, 0, 0), 1); // Tangent at (1,0,0)
|
|
42
|
-
const count = pointsOnArc(inArc, junctionPlane, outPoints);
|
|
43
|
-
expect(count).toBe(1);
|
|
44
|
-
expect(vec3.equals(outPoints[0], vec3.create(1, 0, 0))).toBe(true);
|
|
45
|
-
});
|
|
46
|
-
|
|
47
|
-
test('should return 2 intersection points when arc endpoints are the intersection points', () => {
|
|
48
|
-
const r2 = Math.sqrt(2) / 2;
|
|
49
|
-
plane.set(junctionPlane, vec3.create(r2, r2, 0), r2); // Plane whose intersection with the unit sphere includes the arc endpoints
|
|
50
|
-
const count = pointsOnArc(inArc, junctionPlane, outPoints);
|
|
51
|
-
expect(count).toBe(2);
|
|
52
|
-
const p0Found = vec3.equals(outPoints[0], inArc.p0) || vec3.equals(outPoints[1], inArc.p0);
|
|
53
|
-
const p1Found = vec3.equals(outPoints[0], inArc.p1) || vec3.equals(outPoints[1], inArc.p1);
|
|
54
|
-
expect(p0Found).toBe(true);
|
|
55
|
-
expect(p1Found).toBe(true);
|
|
56
|
-
});
|
|
57
|
-
|
|
58
|
-
test('should return 2 intersection points for a 90-degree arc', () => {
|
|
59
|
-
arc.set(inArc, vec3.create(1, 0, 0), vec3.create(0, 1, 0)); // 90-degree arc on XY plane
|
|
60
|
-
const r2 = Math.sqrt(2) / 2;
|
|
61
|
-
plane.set(junctionPlane, vec3.create(r2, -r2, 0), 0); // Plane intersecting at (r2, r2, 0) and (-r2, -r2, 0)
|
|
62
|
-
const count = pointsOnArc(inArc, junctionPlane, outPoints);
|
|
63
|
-
expect(count).toBe(1);
|
|
64
|
-
expect(vec3.equals(outPoints[0], vec3.create(r2, r2, 0))).toBe(true);
|
|
65
|
-
});
|
|
66
|
-
|
|
67
|
-
test('should return 1 intersection point if only one is on the arc', () => {
|
|
68
|
-
const r2 = Math.sqrt(2) / 2;
|
|
69
|
-
arc.set(inArc, vec3.create(1, 0, 0), vec3.create(r2, r2, 0)); // 45-degree arc
|
|
70
|
-
plane.set(junctionPlane, vec3.create(0, 1, 0), 0); // XZ plane, intersects circle at (1,0,0) and (-1,0,0)
|
|
71
|
-
const count = pointsOnArc(inArc, junctionPlane, outPoints);
|
|
72
|
-
expect(count).toBe(1);
|
|
73
|
-
expect(vec3.equals(outPoints[0], vec3.create(1, 0, 0))).toBe(true);
|
|
74
|
-
});
|
|
75
|
-
|
|
76
|
-
test('should return 1 if intersection point is on the arc segment', () => {
|
|
77
|
-
const r2 = Math.sqrt(2) / 2;
|
|
78
|
-
arc.set(inArc, vec3.create(r2, r2, 0), vec3.create(-r2, r2, 0)); // Arc in the upper XY quadrant
|
|
79
|
-
plane.set(junctionPlane, vec3.create(1, 0, 0), 0); // YZ plane, intersects circle at (0,1,0) and (0,-1,0)
|
|
80
|
-
const count = pointsOnArc(inArc, junctionPlane, outPoints);
|
|
81
|
-
expect(count).toBe(1);
|
|
82
|
-
expect(vec3.equals(outPoints[0], vec3.create(0, 1, 0))).toBe(true);
|
|
83
|
-
});
|
|
84
|
-
|
|
85
|
-
test('should return 1 intersection point when plane cuts through middle of 90-degree arc', () => {
|
|
86
|
-
const r2 = Math.sqrt(2) / 2;
|
|
87
|
-
arc.set(inArc, vec3.create(1, 0, 0), vec3.create(0, 1, 0)); // 90-degree arc
|
|
88
|
-
plane.set(junctionPlane, vec3.create(1, -1, 0), 0); // Plane intersecting at (r2, r2, 0) and (-r2, -r2, 0)
|
|
89
|
-
const count = pointsOnArc(inArc, junctionPlane, outPoints);
|
|
90
|
-
expect(count).toBe(1);
|
|
91
|
-
const expectedPoint = vec3.create(r2, r2, 0);
|
|
92
|
-
expect(vec3.equals(outPoints[0], expectedPoint)).toBe(true);
|
|
93
|
-
});
|
|
94
|
-
|
|
95
|
-
test('long 10 lat 10, long -10 lat 10, cut from 0 long meridian', () => {
|
|
96
|
-
const r2 = Math.sqrt(2) / 2;
|
|
97
|
-
|
|
98
|
-
const long10lat10 = vec3.create()
|
|
99
|
-
const long_10lat10 = vec3.create()
|
|
100
|
-
vec3.fromLongLatToUnitVector(long10lat10,[10 * Math.PI / 180, 10 * Math.PI / 180]);
|
|
101
|
-
vec3.fromLongLatToUnitVector(long_10lat10,[-10 * Math.PI / 180, 10 * Math.PI / 180]);
|
|
102
|
-
arc.set(inArc, long10lat10, long_10lat10); // Arc in the upper XY quadrant
|
|
103
|
-
|
|
104
|
-
plane.set(junctionPlane, vec3.createUnitVectorFromLongLat([Math.PI/2,0]),0); // YZ plane, intersects circle at (1,0,0) and (-1,0,0)
|
|
105
|
-
const count = pointsOnArc(inArc, junctionPlane, outPoints);
|
|
106
|
-
expect(count).toBe(1);
|
|
107
|
-
|
|
108
|
-
// calculate expected point with quaternion rotation. rotate long10Lat10 by half the angle between the two arc endpoints
|
|
109
|
-
const angle = Math.acos(vec3.dot(long10lat10, long_10lat10));
|
|
110
|
-
const halfAngle = angle / 2;
|
|
111
|
-
const axis = vec3.clone(inArc.normal);
|
|
112
|
-
|
|
113
|
-
const q1 = quateernion.create();
|
|
114
|
-
quateernion.fromAxisAngle(q1, axis, halfAngle);
|
|
115
|
-
const expectedPoint = vec3.create();
|
|
116
|
-
vec3.applyQuaternion(expectedPoint, long10lat10, q1);
|
|
117
|
-
const isEqual = vec3.equals(outPoints[0], expectedPoint);
|
|
118
|
-
if ( !isEqual ) {
|
|
119
|
-
console.log('angle', long10lat10, long_10lat10, angle);
|
|
120
|
-
console.log('outPoints[0]', outPoints[0]);
|
|
121
|
-
console.log('expectedPoint', expectedPoint);
|
|
122
|
-
}
|
|
123
|
-
expect(isEqual).toBe(true);
|
|
124
|
-
});
|
|
125
|
-
|
|
126
|
-
test('should return 1 point for arc from (10,10) to (10,-10) long/lat, cut by lat 0 plane', () => {
|
|
127
|
-
const deg2rad = Math.PI / 180;
|
|
128
|
-
const p0 = vec3.create();
|
|
129
|
-
const p1 = vec3.create();
|
|
130
|
-
vec3.fromLongLatToUnitVector(p0, [10 * deg2rad, 10 * deg2rad]);
|
|
131
|
-
vec3.fromLongLatToUnitVector(p1, [10 * deg2rad, -10 * deg2rad]);
|
|
132
|
-
arc.set(inArc, p0, p1);
|
|
133
|
-
|
|
134
|
-
// Equatorial plane (lat 0)
|
|
135
|
-
plane.set(junctionPlane, vec3.create(0, 0, 1), 0);
|
|
136
|
-
|
|
137
|
-
const count = pointsOnArc(inArc, junctionPlane, outPoints);
|
|
138
|
-
expect(count).toBe(1);
|
|
139
|
-
|
|
140
|
-
const expectedPoint = vec3.create();
|
|
141
|
-
vec3.fromLongLatToUnitVector(expectedPoint, [10 * deg2rad, 0 * deg2rad]);
|
|
142
|
-
|
|
143
|
-
const isEqual = vec3.equals(outPoints[0], expectedPoint);
|
|
144
|
-
if (!isEqual) {
|
|
145
|
-
console.log('outPoints[0]', outPoints[0]);
|
|
146
|
-
console.log('expectedPoint', expectedPoint);
|
|
147
|
-
}
|
|
148
|
-
expect(isEqual).toBe(true);
|
|
149
|
-
});
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
test('should return 1 point for arc from (10,10) to (0,-10) long/lat, cut by lat 0 plane', () => {
|
|
153
|
-
const deg2rad = Math.PI / 180;
|
|
154
|
-
const p0 = vec3.create();
|
|
155
|
-
const p1 = vec3.create();
|
|
156
|
-
vec3.fromLongLatToUnitVector(p0, [10 * deg2rad, 10 * deg2rad]);
|
|
157
|
-
vec3.fromLongLatToUnitVector(p1, [0 * deg2rad, -10 * deg2rad]);
|
|
158
|
-
arc.set(inArc, p0, p1);
|
|
159
|
-
|
|
160
|
-
// Equatorial plane (lat 0)
|
|
161
|
-
plane.set(junctionPlane, vec3.create(0, 0, 1), 0);
|
|
162
|
-
|
|
163
|
-
const count = pointsOnArc(inArc, junctionPlane, outPoints);
|
|
164
|
-
expect(count).toBe(1);
|
|
165
|
-
|
|
166
|
-
// The intersection point must lie on the great circle defined by p0 and p1,
|
|
167
|
-
// and also on the equator (z=0).
|
|
168
|
-
// The line of intersection of the two great circle planes is given by the cross product of their normals.
|
|
169
|
-
const arcNormal = vec3.clone(inArc.normal);
|
|
170
|
-
const equatorNormal = vec3.create(0, 0, 1);
|
|
171
|
-
const intersectionDir = vec3.create();
|
|
172
|
-
vec3.cross(intersectionDir, arcNormal, equatorNormal);
|
|
173
|
-
vec3.normalize(intersectionDir, intersectionDir);
|
|
174
|
-
|
|
175
|
-
// The two intersection points are intersectionDir and -intersectionDir.
|
|
176
|
-
// We need to find which one is on the arc.
|
|
177
|
-
// The correct point should have a positive dot product with both p0 and p1.
|
|
178
|
-
const dot0 = vec3.dot(intersectionDir, p0);
|
|
179
|
-
const intersectionDirNeg = vec3.clone(intersectionDir);
|
|
180
|
-
vec3.negate(intersectionDirNeg);
|
|
181
|
-
const dot1 = vec3.dot(intersectionDirNeg, p0);
|
|
182
|
-
|
|
183
|
-
const expectedPoint = dot0 > dot1 ? intersectionDir : intersectionDirNeg;
|
|
184
|
-
|
|
185
|
-
const isEqual = vec3.equals(outPoints[0], expectedPoint);
|
|
186
|
-
if (!isEqual) {
|
|
187
|
-
console.log('outPoints[0]', outPoints[0]);
|
|
188
|
-
console.log('expectedPoint', expectedPoint);
|
|
189
|
-
}
|
|
190
|
-
expect(isEqual).toBe(true);
|
|
191
|
-
});
|
|
192
|
-
|
|
193
|
-
});
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
@@ -1,172 +0,0 @@
|
|
|
1
|
-
import { Plane, Line, Vec3, Quaternion, Arc, Sphere } from '../../../Math/types';
|
|
2
|
-
import * as plane from '../../../Math/plane';
|
|
3
|
-
import * as line from '../../../Math/line';
|
|
4
|
-
import * as arc from '../../../Math/arc';
|
|
5
|
-
import * as vec3 from '../../../Math/vec3';
|
|
6
|
-
import * as quaternion from '../../../Math/quaternion';
|
|
7
|
-
import { planePlaneJunction } from '../../../Math/juction/plane-plane';
|
|
8
|
-
import { lineSphereIntersection } from '../../../Math/juction/line-sphere';
|
|
9
|
-
import { arcSlice } from '../../../Math/juction/arc-plane';
|
|
10
|
-
import { EPSILON } from '../../../Math/constants';
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
const arcIn = arc.create(vec3.create(0, 0, 1), vec3.create(1, 0, 0));
|
|
14
|
-
const arcOut: [Arc, Arc] = [
|
|
15
|
-
arc.create(vec3.create(0, 0, 1), vec3.create(1, 0, 0)),
|
|
16
|
-
arc.create(vec3.create(0, 0, 1), vec3.create(1, 0, 0))
|
|
17
|
-
];
|
|
18
|
-
const arcExpected = arc.create(vec3.create(0, 0, 1), vec3.create(1, 0, 0));
|
|
19
|
-
const junctionPlane = plane.create(vec3.create(0, 0, 1), 0);
|
|
20
|
-
|
|
21
|
-
const origin = { center: vec3.create(0, 0, 0), radius: 1 } as Sphere;
|
|
22
|
-
|
|
23
|
-
const r2 = Math.sqrt(2) / 2;
|
|
24
|
-
const r3 = Math.sqrt(3) / 3;
|
|
25
|
-
|
|
26
|
-
beforeAll(() => {
|
|
27
|
-
// Initialize any necessary data or state before running the tests
|
|
28
|
-
arc.set(arcIn, vec3.create(0, 0, 1), vec3.create(1, 0, 0));
|
|
29
|
-
arc.set(arcOut[0], vec3.create(0, 0, 1), vec3.create(1, 0, 0));
|
|
30
|
-
arc.set(arcOut[1], vec3.create(0, 0, 1), vec3.create(1, 0, 0));
|
|
31
|
-
|
|
32
|
-
plane.set(junctionPlane, vec3.create(0, 0, 1), 0);
|
|
33
|
-
|
|
34
|
-
});
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
test('arcSlice - No intersection 1', () => {
|
|
41
|
-
junctionPlane.distance = 2; // Set distance to ensure no intersection
|
|
42
|
-
const result = arcSlice(arcOut, arcIn, junctionPlane);
|
|
43
|
-
expect(result).toBe(0);
|
|
44
|
-
});
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
test('arcSlice - Full intersection 1', () => {
|
|
49
|
-
junctionPlane.distance = 0; // Set distance to ensure full intersection
|
|
50
|
-
const result = arcSlice(arcOut, arcIn, junctionPlane);
|
|
51
|
-
expect(result).toBe(1);
|
|
52
|
-
const isEqual = arc.equals(arcOut[0], arcExpected);
|
|
53
|
-
expect(isEqual).toBe(true);
|
|
54
|
-
});
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
test('arcSlice-1', () => {
|
|
58
|
-
// Set up a case where the arc intersects with the plane
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
const r3 = Math.sqrt(3);
|
|
62
|
-
const juctionNormal = vec3.create(r3, r3, r3);
|
|
63
|
-
|
|
64
|
-
plane.set(junctionPlane, juctionNormal, 0);
|
|
65
|
-
|
|
66
|
-
const result = arcSlice(arcOut, arcIn, junctionPlane);
|
|
67
|
-
expect(result).toBe(1);
|
|
68
|
-
});
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
test('arcSlice - Plane intersection line is out of sphere', () => {
|
|
72
|
-
// Set up a case where the arc intersects with the plane
|
|
73
|
-
|
|
74
|
-
const point1 = vec3.create(0, 1, 0);
|
|
75
|
-
const point2 = vec3.create(0, 0, 1);
|
|
76
|
-
arc.set(arcIn, point1, point2);
|
|
77
|
-
|
|
78
|
-
const juctionNormal = vec3.create(r3, r3, r3);
|
|
79
|
-
|
|
80
|
-
const closestPoint = vec3.create(r2, r2, 0);
|
|
81
|
-
const distance = vec3.dot(juctionNormal, closestPoint) + EPSILON;
|
|
82
|
-
plane.set(junctionPlane, juctionNormal, distance);
|
|
83
|
-
|
|
84
|
-
const result = arcSlice(arcOut, arcIn, junctionPlane);
|
|
85
|
-
expect(result).toBe(0);
|
|
86
|
-
});
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
test("arcSlice - Planes are parallel", () => {
|
|
90
|
-
|
|
91
|
-
const point1 = vec3.create(0, 1, 0);
|
|
92
|
-
const point2 = vec3.create(0, 0, 1);
|
|
93
|
-
arc.set(arcIn, point1, point2);
|
|
94
|
-
|
|
95
|
-
plane.fromValues(junctionPlane, 1, 0, 0, 0.3); // Set a plane parallel to the arc's normal
|
|
96
|
-
const result = arcSlice(arcOut, arcIn, junctionPlane);
|
|
97
|
-
expect(result).toBe(0); // Expect no intersection
|
|
98
|
-
|
|
99
|
-
junctionPlane.distance = -0.3;
|
|
100
|
-
|
|
101
|
-
const result2 = arcSlice(arcOut, arcIn, junctionPlane);
|
|
102
|
-
expect(result2).toBe(1); // Expect no intersection
|
|
103
|
-
const isEqual = arc.equals(arcOut[0], arcIn);
|
|
104
|
-
expect(isEqual).toBe(true); // Expect the output arc to be equal to the input arc
|
|
105
|
-
});
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
test("arcSlice - Arc sliced in half", () => {
|
|
109
|
-
|
|
110
|
-
const point1 = vec3.create(0, 1, 0);
|
|
111
|
-
const point2 = vec3.create(0, 0, 1);
|
|
112
|
-
arc.set(arcIn, point1, point2);
|
|
113
|
-
|
|
114
|
-
expect(vec3.equals(arcIn.normal, vec3.create(1, 0, 0))).toBe(true); // Arc normal should be (1, 0, 0)
|
|
115
|
-
|
|
116
|
-
plane.fromValues(junctionPlane, 0, -r2, r2, 0); // Set a plane parallel to the arc's normal
|
|
117
|
-
|
|
118
|
-
const result = arcSlice(arcOut, arcIn, junctionPlane);
|
|
119
|
-
expect(result).toBe(1); // Expect an intersection
|
|
120
|
-
const expectedPoint1 = vec3.create(0, r2, r2);
|
|
121
|
-
const expectedPoint2 = vec3.create(0, 0, 1);
|
|
122
|
-
arc.set(arcExpected, expectedPoint1, expectedPoint2);
|
|
123
|
-
const isEqual = arc.equals(arcOut[0], arcExpected);
|
|
124
|
-
expect(isEqual).toBe(true); // Expect the output arc to be equal to the expected arc
|
|
125
|
-
});
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
test("arcSlice - Arc sliced in middle", () => {
|
|
129
|
-
const point1 = vec3.create(0, 1, 0);
|
|
130
|
-
const point2 = vec3.create(0, 0, 1);
|
|
131
|
-
arc.set(arcIn, point1, point2);
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
plane.fromValues(junctionPlane, 0, r2, r2, r2);
|
|
135
|
-
|
|
136
|
-
const result = arcSlice(arcOut, arcIn, junctionPlane);
|
|
137
|
-
expect(result).toBe(1);
|
|
138
|
-
expect(arc.equals(arcOut[0], arcIn)).toBe(true);
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
const gap = 1 - r2;
|
|
142
|
-
const stepCount = 100;
|
|
143
|
-
|
|
144
|
-
const points: [Vec3, Vec3] = [vec3.create(0, 1, 0), vec3.create(0, 0, 1)];
|
|
145
|
-
const lineOfPoints = line.create();
|
|
146
|
-
vec3.set(lineOfPoints.direction, 0, -r2, r2);
|
|
147
|
-
// Add normalization:
|
|
148
|
-
vec3.normalize(lineOfPoints.direction, lineOfPoints.direction);
|
|
149
|
-
|
|
150
|
-
for (let i = 0; i < stepCount - 1; i++) {
|
|
151
|
-
const distance = gap * i / stepCount + r2;
|
|
152
|
-
junctionPlane.distance = distance;
|
|
153
|
-
const result = arcSlice(arcOut, arcIn, junctionPlane);
|
|
154
|
-
expect(result).toBe(1);
|
|
155
|
-
|
|
156
|
-
vec3.set(lineOfPoints.origin, 0, r2 * distance, r2 * distance);
|
|
157
|
-
const haveIntersections = lineSphereIntersection(points, lineOfPoints, origin);
|
|
158
|
-
expect(haveIntersections).toBe(true); // Expect the line to intersect with the sphere
|
|
159
|
-
|
|
160
|
-
arc.set(arcExpected, points[0], points[1]);
|
|
161
|
-
|
|
162
|
-
const isEqual = arc.equals(arcOut[0], arcExpected);
|
|
163
|
-
if (!isEqual) {
|
|
164
|
-
console.log('Iteration:', i);
|
|
165
|
-
console.log('Expected arc:', arcExpected);
|
|
166
|
-
console.log('Actual arc:', arcOut[0]);
|
|
167
|
-
console.log('Points from intersection:', points);
|
|
168
|
-
}
|
|
169
|
-
expect(isEqual).toBe(true); // Expect the output arc to be equal to the expected arc
|
|
170
|
-
|
|
171
|
-
}
|
|
172
|
-
});
|
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
import { lineSphereIntersection } from '../../../Math/juction/line-sphere';
|
|
2
|
-
import { create } from '../../../Math/vec3';
|
|
3
|
-
import type { Line, Sphere, Vec3 } from '../../../Math/types';
|
|
4
|
-
|
|
5
|
-
describe('lineSphereIntersection', () => {
|
|
6
|
-
let intersections: [Vec3, Vec3];
|
|
7
|
-
|
|
8
|
-
beforeEach(() => {
|
|
9
|
-
intersections = [create(0, 0, 0), create(0, 0, 0)];
|
|
10
|
-
});
|
|
11
|
-
|
|
12
|
-
test('should return true for a line intersecting the sphere at two points', () => {
|
|
13
|
-
const line: Line = { origin: create(-2, 0.5, 0), direction: create(1, 0, 0) };
|
|
14
|
-
const sphere: Sphere = { center: create(0, 0, 0), radius: 1 };
|
|
15
|
-
|
|
16
|
-
const result = lineSphereIntersection(intersections, line, sphere);
|
|
17
|
-
|
|
18
|
-
expect(result).toBe(true);
|
|
19
|
-
const t1 = 2 - Math.sqrt(0.75);
|
|
20
|
-
const t2 = 2 + Math.sqrt(0.75);
|
|
21
|
-
|
|
22
|
-
expect(intersections[0][0]).toBeCloseTo(t1 - 2);
|
|
23
|
-
expect(intersections[0][1]).toBeCloseTo(0.5);
|
|
24
|
-
expect(intersections[0][2]).toBeCloseTo(0);
|
|
25
|
-
|
|
26
|
-
expect(intersections[1][0]).toBeCloseTo(t2 - 2);
|
|
27
|
-
expect(intersections[1][1]).toBeCloseTo(0.5);
|
|
28
|
-
expect(intersections[1][2]).toBeCloseTo(0);
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
test('should return true for a line passing through the center of the sphere', () => {
|
|
32
|
-
const line: Line = { origin: create(0, 0, 0), direction: create(0, 1, 0) };
|
|
33
|
-
const sphere: Sphere = { center: create(0, 0, 0), radius: 5 };
|
|
34
|
-
|
|
35
|
-
const result = lineSphereIntersection(intersections, line, sphere);
|
|
36
|
-
|
|
37
|
-
expect(result).toBe(true);
|
|
38
|
-
// Order might vary, so check both possibilities
|
|
39
|
-
const p1 = create(0, -5, 0);
|
|
40
|
-
const p2 = create(0, 5, 0);
|
|
41
|
-
const receivedP1 = intersections[0];
|
|
42
|
-
const receivedP2 = intersections[1];
|
|
43
|
-
|
|
44
|
-
const match1 = Math.abs(receivedP1[1] - p1[1]) < 1e-9 && Math.abs(receivedP2[1] - p2[1]) < 1e-9;
|
|
45
|
-
const match2 = Math.abs(receivedP1[1] - p2[1]) < 1e-9 && Math.abs(receivedP2[1] - p1[1]) < 1e-9;
|
|
46
|
-
|
|
47
|
-
expect(match1 || match2).toBe(true);
|
|
48
|
-
});
|
|
49
|
-
|
|
50
|
-
test('should return true for a tangent line', () => {
|
|
51
|
-
const line: Line = { origin: create(-2, 1, 0), direction: create(1, 0, 0) };
|
|
52
|
-
const sphere: Sphere = { center: create(0, 0, 0), radius: 1 };
|
|
53
|
-
|
|
54
|
-
const result = lineSphereIntersection(intersections, line, sphere);
|
|
55
|
-
|
|
56
|
-
expect(result).toBe(true);
|
|
57
|
-
expect(intersections[0][0]).toBeCloseTo(0);
|
|
58
|
-
expect(intersections[0][1]).toBeCloseTo(1);
|
|
59
|
-
expect(intersections[0][2]).toBeCloseTo(0);
|
|
60
|
-
expect(intersections[1][0]).toBeCloseTo(0);
|
|
61
|
-
expect(intersections[1][1]).toBeCloseTo(1);
|
|
62
|
-
expect(intersections[1][2]).toBeCloseTo(0);
|
|
63
|
-
});
|
|
64
|
-
|
|
65
|
-
test('should return false for a line that does not intersect the sphere', () => {
|
|
66
|
-
const line: Line = { origin: create(-5, 5, 0), direction: create(1, 0, 0) };
|
|
67
|
-
const sphere: Sphere = { center: create(0, 0, 0), radius: 1 };
|
|
68
|
-
|
|
69
|
-
const result = lineSphereIntersection(intersections, line, sphere);
|
|
70
|
-
|
|
71
|
-
expect(result).toBe(false);
|
|
72
|
-
});
|
|
73
|
-
|
|
74
|
-
test('should handle non-normalized direction vectors', () => {
|
|
75
|
-
const line: Line = { origin: create(-10, 0, 0), direction: create(2, 0, 0) };
|
|
76
|
-
const sphere: Sphere = { center: create(0, 0, 0), radius: 1 };
|
|
77
|
-
|
|
78
|
-
const result = lineSphereIntersection(intersections, line, sphere);
|
|
79
|
-
|
|
80
|
-
expect(result).toBe(true);
|
|
81
|
-
const p1 = create(-1, 0, 0);
|
|
82
|
-
const p2 = create(1, 0, 0);
|
|
83
|
-
const receivedP1 = intersections[0];
|
|
84
|
-
const receivedP2 = intersections[1];
|
|
85
|
-
|
|
86
|
-
const match1 = Math.abs(receivedP1[0] - p1[0]) < 1e-9 && Math.abs(receivedP2[0] - p2[0]) < 1e-9;
|
|
87
|
-
const match2 = Math.abs(receivedP1[0] - p2[0]) < 1e-9 && Math.abs(receivedP2[0] - p1[0]) < 1e-9;
|
|
88
|
-
|
|
89
|
-
expect(match1 || match2).toBe(true);
|
|
90
|
-
});
|
|
91
|
-
|
|
92
|
-
test('should handle sphere not at the origin', () => {
|
|
93
|
-
const line: Line = { origin: create(8, 5, 5), direction: create(1, 0, 0) };
|
|
94
|
-
const sphere: Sphere = { center: create(10, 5, 5), radius: 1 };
|
|
95
|
-
|
|
96
|
-
const result = lineSphereIntersection(intersections, line, sphere);
|
|
97
|
-
|
|
98
|
-
expect(result).toBe(true);
|
|
99
|
-
const p1 = create(9, 5, 5);
|
|
100
|
-
const p2 = create(11, 5, 5);
|
|
101
|
-
const receivedP1 = intersections[0];
|
|
102
|
-
const receivedP2 = intersections[1];
|
|
103
|
-
|
|
104
|
-
const match1 = Math.abs(receivedP1[0] - p1[0]) < 1e-9 && Math.abs(receivedP2[0] - p2[0]) < 1e-9;
|
|
105
|
-
const match2 = Math.abs(receivedP1[0] - p2[0]) < 1e-9 && Math.abs(receivedP2[0] - p1[0]) < 1e-9;
|
|
106
|
-
|
|
107
|
-
expect(match1 || match2).toBe(true);
|
|
108
|
-
});
|
|
109
|
-
|
|
110
|
-
test('should return true when the line origin is inside the sphere', () => {
|
|
111
|
-
const line: Line = { origin: create(0, 0, 0), direction: create(1, 1, 1) };
|
|
112
|
-
const sphere: Sphere = { center: create(0, 0, 0), radius: 5 };
|
|
113
|
-
|
|
114
|
-
const result = lineSphereIntersection(intersections, line, sphere);
|
|
115
|
-
|
|
116
|
-
expect(result).toBe(true);
|
|
117
|
-
const t = 5 / Math.sqrt(3);
|
|
118
|
-
|
|
119
|
-
expect(intersections[0][0]).toBeCloseTo(-t);
|
|
120
|
-
expect(intersections[0][1]).toBeCloseTo(-t);
|
|
121
|
-
expect(intersections[0][2]).toBeCloseTo(-t);
|
|
122
|
-
|
|
123
|
-
expect(intersections[1][0]).toBeCloseTo(t);
|
|
124
|
-
expect(intersections[1][1]).toBeCloseTo(t);
|
|
125
|
-
expect(intersections[1][2]).toBeCloseTo(t);
|
|
126
|
-
});
|
|
127
|
-
});
|
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
import { Plane, Line, Vec3, Quaternion } from '../../../Math/types';
|
|
2
|
-
import * as plane from '../../../Math/plane';
|
|
3
|
-
import * as line from '../../../Math/line';
|
|
4
|
-
import * as vec3 from '../../../Math/vec3';
|
|
5
|
-
import * as quaternion from '../../../Math/quaternion';
|
|
6
|
-
import { planePlaneJunction } from '../../../Math/juction/plane-plane';
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
let plane1: Plane;
|
|
10
|
-
let plane2: Plane;
|
|
11
|
-
let intersectionLine: Line;
|
|
12
|
-
let quaternion1: Quaternion;
|
|
13
|
-
|
|
14
|
-
beforeAll(() => {
|
|
15
|
-
plane1 = plane.create();
|
|
16
|
-
plane2 = plane.create();
|
|
17
|
-
intersectionLine = line.create();
|
|
18
|
-
quaternion1 = quaternion.create();
|
|
19
|
-
});
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
test('plane-plane intersection - parallel planes', () => {
|
|
23
|
-
plane.fromValues(plane1, 0, 0, 1, 5); // Plane: z = 5
|
|
24
|
-
plane.fromValues(plane2, 0, 0, 1, 10); // Plane: z = 10
|
|
25
|
-
const result = planePlaneJunction(intersectionLine, plane1, plane2);
|
|
26
|
-
expect(result).toBe(false);
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
test('plane-plane intersection - intersecting planes', () => {
|
|
30
|
-
plane.fromValues(plane1, 0, 0, 1, 5); // Plane: z = 5
|
|
31
|
-
plane.fromValues(plane2, 1, 0, 0, 3); // Plane: x = 3
|
|
32
|
-
|
|
33
|
-
const result = planePlaneJunction(intersectionLine, plane1, plane2);
|
|
34
|
-
expect(result).toBe(true);
|
|
35
|
-
expect(vec3.equals(intersectionLine.direction, vec3.create(0, 1, 0))).toBe(true);
|
|
36
|
-
expect(vec3.equals(intersectionLine.origin, vec3.create(3, 0, 5))).toBe(true);
|
|
37
|
-
});
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
test('plane-plane intersection - rotating a plane', () => {
|
|
41
|
-
// plane1 z = 5
|
|
42
|
-
plane.fromValues(plane1, 0, 0, 1, 5);
|
|
43
|
-
|
|
44
|
-
// plane2 x = 3, for the start
|
|
45
|
-
vec3.randomUnit(plane2.normal);
|
|
46
|
-
plane2.distance = 3;
|
|
47
|
-
|
|
48
|
-
const result = planePlaneJunction(intersectionLine, plane1, plane2);
|
|
49
|
-
expect(result).toBe(true);
|
|
50
|
-
const quaRotateLine = line.clone(intersectionLine);
|
|
51
|
-
|
|
52
|
-
const step = 90;
|
|
53
|
-
quaternion.fromAxisAngle(quaternion1, plane1.normal, Math.PI / step); // Rotate 90 degrees around Y-axis
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
for (let i = 0; i < step; i++) {
|
|
57
|
-
|
|
58
|
-
vec3.applyQuaternion(plane2.normal, plane2.normal, quaternion1);
|
|
59
|
-
|
|
60
|
-
const result = planePlaneJunction(intersectionLine, plane1, plane2);
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
line.applyQuaternion(quaRotateLine, quaRotateLine, quaternion1);
|
|
64
|
-
|
|
65
|
-
expect(result).toBe(true);
|
|
66
|
-
expect(vec3.equals(intersectionLine.direction, quaRotateLine.direction)).toBe(true);
|
|
67
|
-
expect(line.contains(intersectionLine, quaRotateLine.origin)).toBe(true);
|
|
68
|
-
}
|
|
69
|
-
});
|
|
70
|
-
|
|
71
|
-
test("plane-plane intersection 1", () => {
|
|
72
|
-
const r2 = Math.sqrt(2) / 2;
|
|
73
|
-
plane.fromValues(plane1, 1, 0, 0, 0);
|
|
74
|
-
plane.fromValues(plane2, 0, -r2, r2, 0);
|
|
75
|
-
const result = planePlaneJunction(intersectionLine, plane1, plane2);
|
|
76
|
-
|
|
77
|
-
expect(result).toBe(true);
|
|
78
|
-
console.log(intersectionLine);
|
|
79
|
-
expect(vec3.equals(intersectionLine.direction, vec3.create(0, r2, r2)) || vec3.equals(intersectionLine.direction, vec3.create(0, -r2, -r2))
|
|
80
|
-
).toBe(true);
|
|
81
|
-
expect(line.contains(intersectionLine, vec3.create(0, 0, 0))).toBe(true);
|
|
82
|
-
});
|
|
83
|
-
|
|
84
|
-
test("plane-plane intersection 2", () => {
|
|
85
|
-
plane.fromValues(plane1, 1, 0, 0, 1);
|
|
86
|
-
plane.fromValues(plane2, 0, 1, 0, 1);
|
|
87
|
-
const result = planePlaneJunction(intersectionLine, plane1, plane2);
|
|
88
|
-
expect(result).toBe(true);
|
|
89
|
-
expect(vec3.equals(intersectionLine.direction, vec3.create(0, 0, 1))).toBe(true);
|
|
90
|
-
expect(line.contains(intersectionLine, vec3.create(1, 1, 0))).toBe(true);
|
|
91
|
-
});
|
package/tests/Math/plane-test.ts
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { Vec3, Plane } from '../../Math/types';
|
|
2
|
-
import * as vec3 from '../../Math/vec3';
|
|
3
|
-
import * as plane from '../../Math/plane';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const EPSILON = 1e-6;
|
|
7
|
-
|
|
8
|
-
const _0plane = plane.create(vec3.create(0, 0, 1), 0);
|
|
9
|
-
const _1plane = plane.create(vec3.create(1, 1, 1), 0);
|
|
10
|
-
|
|
11
|
-
beforeAll(() => {
|
|
12
|
-
// Initialize any necessary data or state before running the tests
|
|
13
|
-
plane.set(_0plane, vec3.create(0, 0, 1), 0);
|
|
14
|
-
plane.set(_1plane, vec3.create(1, 1, 1), 0);
|
|
15
|
-
});
|
|
16
|
-
|
|
17
|
-
|
package/tests/Math/plane.test.ts
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { Plane, Vec3 } from "../../Math/types";
|
|
2
|
-
import * as vec3 from "../../Math/vec3";
|
|
3
|
-
import * as plane from "../../Math/plane";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const _planeA = /*@__PURE__*/ plane.create(vec3.create(1, 0, 0), 0);
|
|
7
|
-
const _planeB = /*@__PURE__*/ plane.create(vec3.create(0, 1, 0), 0);
|
|
8
|
-
const _vecA = /*@__PURE__*/ vec3.create(1, 0, 0);
|
|
9
|
-
|
|
10
|
-
beforeAll(() => {
|
|
11
|
-
vec3.set(_vecA, 1, 0, 0);
|
|
12
|
-
plane.set(_planeA, vec3.create(1, 0, 0), 0);
|
|
13
|
-
plane.set(_planeB, vec3.create(0, 1, 0), 0);
|
|
14
|
-
});
|
|
15
|
-
|
|
16
|
-
test("Plane: getUnitSphereRadiusAngle", () => {
|
|
17
|
-
const angleA = plane.getUnitSphereRadiusAngle(_planeA);
|
|
18
|
-
const angleB = plane.getUnitSphereRadiusAngle(_planeB);
|
|
19
|
-
|
|
20
|
-
expect(angleA).toBeCloseTo(Math.PI / 2, 5); // 90 degrees
|
|
21
|
-
expect(angleB).toBeCloseTo(Math.PI / 2, 5); // 90 degrees
|
|
22
|
-
});
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
test("Plane: getUnitSphereRadiusAngle 1", () => {
|
|
26
|
-
|
|
27
|
-
vec3.set(_vecA, 1, 1, 0);
|
|
28
|
-
vec3.normalize(_vecA, _vecA);
|
|
29
|
-
const distance = Math.sqrt(2) / 2; // Distance from origin to the plane
|
|
30
|
-
plane.set(_planeA, _vecA, distance);
|
|
31
|
-
const angleA = plane.getUnitSphereRadiusAngle(_planeA);
|
|
32
|
-
expect(angleA).toBeCloseTo(Math.PI / 4, 5); // 45 degrees
|
|
33
|
-
|
|
34
|
-
for (let i = 0; i < 100; i++) {
|
|
35
|
-
const distance = Math.random();
|
|
36
|
-
|
|
37
|
-
const angle = Math.acos(distance);
|
|
38
|
-
vec3.randomUnit(_vecA)
|
|
39
|
-
plane.set(_planeA, _vecA, distance);
|
|
40
|
-
const angleA = plane.getUnitSphereRadiusAngle(_planeA);
|
|
41
|
-
expect(angleA).toBeCloseTo(angle, 5); // Check if the angle is close to the expected value
|
|
42
|
-
}
|
|
43
|
-
});
|
package/tests/Math/vec3.test.ts
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { Vec3 } from "../../Math/types";
|
|
2
|
-
import * as vec3 from "../../Math/vec3";
|
|
3
|
-
|
|
4
|
-
test("vec3.create", () => {
|
|
5
|
-
const v = vec3.create(1, 2, 3);
|
|
6
|
-
expect(v).toEqual([1, 2, 3]);
|
|
7
|
-
});
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
test("vec3.length", () => {
|
|
11
|
-
const v = vec3.create(3, 4, 0);
|
|
12
|
-
const length = vec3.length(v);
|
|
13
|
-
expect(length).toBe(5);
|
|
14
|
-
});
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
test("LongLat to Vec3 and back", () => {
|
|
18
|
-
const longLat: [number, number] = [0, 0]
|
|
19
|
-
const longLatBack: [number, number] = [0, 0]
|
|
20
|
-
const v = vec3.create();
|
|
21
|
-
for (let lon = -170; lon <= 170; lon += 30) {
|
|
22
|
-
for (let lat = -85; lat <= 85; lat += 30) {
|
|
23
|
-
longLat[0] = lon * Math.PI / 180;
|
|
24
|
-
longLat[1] = lat * Math.PI / 180;
|
|
25
|
-
vec3.fromLongLatToUnitVector(v, longLat);
|
|
26
|
-
vec3.fromUnitVectorToLongLat(longLatBack, v);
|
|
27
|
-
expect(Math.abs(longLatBack[0] - longLat[0]) < 0.00001).toBe(true);
|
|
28
|
-
expect(Math.abs(longLatBack[1] - longLat[1]) < 0.00001).toBe(true);
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
});
|
|
33
|
-
|
|
File without changes
|