@futdevpro/fsm-dynamo 1.15.18 → 1.15.20
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/.cursor/rules/__assistant_guide.mdc +30 -30
- package/.cursor/rules/_ag_backend-structure.mdc +85 -85
- package/.cursor/rules/_ag_backend.mdc +16 -16
- package/.cursor/rules/_ag_frontend-structure.mdc +86 -86
- package/.cursor/rules/_ag_frontend.mdc +39 -39
- package/.cursor/rules/_ag_import-rules.mdc +44 -44
- package/.cursor/rules/_ag_naming.mdc +115 -115
- package/.cursor/rules/_ag_should-be.mdc +6 -6
- package/.cursor/rules/ai_development_guide.md +60 -60
- package/.cursor/rules/cursor-rules.md +160 -160
- package/.cursor/rules/default-command.mdc +464 -464
- package/.cursor/rules/error_code_pattern.md +39 -39
- package/.cursor/rules/saved rule mcp server use.md +15 -15
- package/.dynamo/pipeline.cicd.config.json +128 -128
- package/.github/workflows/main.yml +433 -433
- package/.vscode/settings.json +11 -11
- package/LICENSE +21 -21
- package/__documentations/2026-06-01-fr047-fc-foundation.md +48 -0
- package/build/_models/data-models/errors.data-model.d.ts +43 -0
- package/build/_models/data-models/errors.data-model.d.ts.map +1 -1
- package/build/_models/data-models/errors.data-model.js +30 -0
- package/build/_models/data-models/errors.data-model.js.map +1 -1
- package/build/_modules/socket/_models/sck-socket-event.control-model.js +1 -1
- package/eslint.config.js +4 -4
- package/nodemon.json +22 -22
- package/package.json +11 -11
- package/scripts/crypto/CRYPTO-STABILITY-SOLUTION.md +196 -196
- package/scripts/crypto/README.md +113 -113
- package/scripts/crypto/demo-crypto-stability.js +120 -120
- package/scripts/crypto/stress-test-crypto.js +379 -379
- package/scripts/run-coverage-tests.js +24 -24
- package/spec/support/helpers/ts-node-helper.js +9 -9
- package/spec/support/jasmine.coverage.json +23 -23
- package/spec/support/jasmine.json +24 -24
- package/src/_collections/constants/data-sizes.const.ts +40 -40
- package/src/_collections/constants/error-defaults.const.ts +20 -20
- package/src/_collections/constants/global-settings.const.ts +24 -24
- package/src/_collections/constants/numbers.const.ts +40 -40
- package/src/_collections/constants/times.const.ts +45 -45
- package/src/_collections/utils/array.util.spec.ts +306 -306
- package/src/_collections/utils/array.util.ts +813 -813
- package/src/_collections/utils/async.util.spec.ts +354 -354
- package/src/_collections/utils/async.util.ts +197 -197
- package/src/_collections/utils/data.util.spec.ts +345 -345
- package/src/_collections/utils/data.util.ts +226 -226
- package/src/_collections/utils/json-error-helper.util.spec.ts +521 -521
- package/src/_collections/utils/json-error-helper.util.ts +301 -301
- package/src/_collections/utils/log.util.spec.ts +975 -975
- package/src/_collections/utils/log.util.ts +665 -665
- package/src/_collections/utils/math/box-bounds.spec.ts +73 -73
- package/src/_collections/utils/math/box-bounds.util.ts +183 -183
- package/src/_collections/utils/math/math.util.spec.ts +94 -94
- package/src/_collections/utils/math/math.util.ts +141 -141
- package/src/_collections/utils/math/random.util.spec.ts +82 -82
- package/src/_collections/utils/math/random.util.ts +139 -139
- package/src/_collections/utils/math/trigonometry.util.spec.ts +57 -57
- package/src/_collections/utils/math/trigonometry.util.ts +102 -102
- package/src/_collections/utils/math/vector2.util.spec.ts +94 -94
- package/src/_collections/utils/math/vector2.util.ts +653 -653
- package/src/_collections/utils/object.util.spec.ts +646 -646
- package/src/_collections/utils/regex/password-regex.util.spec.ts +51 -51
- package/src/_collections/utils/regex/password-regex.util.ts +65 -65
- package/src/_collections/utils/regex/regex.util.spec.ts +42 -42
- package/src/_collections/utils/regex/regex.util.ts +6 -6
- package/src/_collections/utils/regex/username-regex.util.spec.ts +61 -61
- package/src/_collections/utils/regex/username-regex.util.ts +35 -35
- package/src/_collections/utils/round-list.util.spec.ts +79 -79
- package/src/_collections/utils/round-list.util.ts +162 -162
- package/src/_collections/utils/stack.util.spec.ts +372 -372
- package/src/_collections/utils/stack.util.ts +164 -164
- package/src/_collections/utils/string-case.util.spec.ts +441 -441
- package/src/_collections/utils/string-case.util.ts +362 -362
- package/src/_collections/utils/string.util.spec.ts +975 -975
- package/src/_collections/utils/string.util.ts +449 -449
- package/src/_collections/utils/time.util.spec.ts +50 -50
- package/src/_collections/utils/time.util.ts +481 -481
- package/src/_collections/utils/type-cloning-facility.util.spec.ts +51 -51
- package/src/_collections/utils/type-cloning-facility.util.ts +168 -168
- package/src/_collections/utils/utilities.util.spec.ts +201 -201
- package/src/_collections/utils/utilities.util.ts +68 -68
- package/src/_collections/utils/uuid.util.spec.ts +30 -30
- package/src/_collections/utils/uuid.util.ts +50 -50
- package/src/_enums/basic-property-type.enum.ts +20 -20
- package/src/_enums/data-model-type.enum.ts +29 -29
- package/src/_enums/environment-flag.enum.ts +28 -28
- package/src/_enums/error-level.enum.ts +28 -28
- package/src/_enums/http/http-call-type.enum.ts +43 -43
- package/src/_enums/http/http-event-type.enum.ts +40 -40
- package/src/_enums/http/http-response-type.enum.ts +18 -18
- package/src/_enums/log-style.enum.ts +44 -44
- package/src/_enums/server-connection-status.enum.ts +6 -6
- package/src/_enums/time/day-of-week.enum.ts +55 -55
- package/src/_enums/time/month.enum.ts +25 -25
- package/src/_enums/time/relative-date.enum.ts +24 -24
- package/src/_models/control-models/data-model-params.control-model.spec.ts +85 -85
- package/src/_models/control-models/data-model-params.control-model.ts +300 -300
- package/src/_models/control-models/data-property-params.control-model.spec.ts +93 -93
- package/src/_models/control-models/data-property-params.control-model.ts +201 -201
- package/src/_models/control-models/error.control-model.spec.ts +912 -912
- package/src/_models/control-models/error.control-model.ts +1215 -1215
- package/src/_models/control-models/http/http-error-response.control-model.spec.ts +116 -116
- package/src/_models/control-models/http/http-error-response.control-model.ts +52 -52
- package/src/_models/control-models/http/http-headers.control-model.spec.ts +25 -25
- package/src/_models/control-models/http/http-headers.control-model.ts +124 -124
- package/src/_models/control-models/http/http-response.model-base.spec.ts +46 -46
- package/src/_models/control-models/http/http-response.model-base.ts +57 -57
- package/src/_models/control-models/poll.control-model.spec.ts +63 -63
- package/src/_models/control-models/poll.control-model.ts +151 -151
- package/src/_models/control-models/range-value.control-model.spec.ts +187 -187
- package/src/_models/control-models/range-value.control-model.ts +289 -289
- package/src/_models/control-models/server-status.control-model.spec.ts +66 -66
- package/src/_models/control-models/server-status.control-model.ts +85 -85
- package/src/_models/control-models/service-endpoint-settings-base.control-model.spec.ts +145 -145
- package/src/_models/control-models/service-endpoint-settings-base.control-model.ts +186 -186
- package/src/_models/data-models/errors.data-model.spec.ts +71 -71
- package/src/_models/data-models/errors.data-model.ts +148 -91
- package/src/_models/data-models/metadata.data-model.spec.ts +184 -184
- package/src/_models/data-models/metadata.data-model.ts +128 -128
- package/src/_models/interfaces/box-bounds.interface.ts +7 -7
- package/src/_models/interfaces/environment/global-log-settings.interface.ts +86 -86
- package/src/_models/interfaces/environment/global-settings.interface.ts +47 -47
- package/src/_models/interfaces/error-defaults.interface.ts +11 -11
- package/src/_models/interfaces/paged.interface.ts +12 -12
- package/src/_models/interfaces/random-weight.interface.ts +7 -7
- package/src/_models/interfaces/route-settings.interface.ts +15 -15
- package/src/_models/interfaces/search-query.interface.ts +23 -23
- package/src/_models/interfaces/search-result.interface.ts +5 -5
- package/src/_models/interfaces/server-error-statistics.interface.ts +24 -24
- package/src/_models/interfaces/vector2.interface.ts +20 -20
- package/src/_models/types/db-filter.type.ts +110 -110
- package/src/_models/types/db-sort.type.ts +4 -4
- package/src/_models/types/ds-filter.type.ts +68 -68
- package/src/_models/types/ds-sort.type.ts +21 -21
- package/src/_modules/ai/_collections/ai-model-ref.util.ts +88 -88
- package/src/_modules/ai/_collections/ai-model-registry.util.spec.ts +37 -37
- package/src/_modules/ai/_collections/ai-model-registry.util.ts +30 -30
- package/src/_modules/ai/_enums/ai-message-role.enum.ts +7 -7
- package/src/_modules/ai/_enums/ai-model-type.enum.ts +7 -7
- package/src/_modules/ai/_enums/ai-provider.enum.ts +7 -7
- package/src/_modules/ai/_models/ai-call-settings.interface.ts +84 -84
- package/src/_modules/ai/_models/ai-embedding-request.interface.ts +20 -20
- package/src/_modules/ai/_models/ai-embedding-response.interface.ts +26 -26
- package/src/_modules/ai/_models/ai-llm-request.interface.ts +24 -24
- package/src/_modules/ai/_models/ai-llm-response.interface.ts +30 -30
- package/src/_modules/ai/_models/ai-message.interface.ts +12 -12
- package/src/_modules/ai/_models/ai-model-capabilities.interface.ts +35 -35
- package/src/_modules/ai/_models/ai-model-info.interface.ts +63 -63
- package/src/_modules/ai/_models/ai-model-settings-schema.interface.ts +52 -52
- package/src/_modules/ai/_models/ai-provider-capabilities.interface.ts +28 -28
- package/src/_modules/ai/_models/ai-settings.interface.ts +17 -17
- package/src/_modules/ai/_models/ai-tool-call.interface.ts +18 -18
- package/src/_modules/ai/_models/ai-tool-handler.type.ts +11 -11
- package/src/_modules/ai/_models/ai-tool-result.interface.ts +16 -16
- package/src/_modules/ai/_models/ai-tool.interface.ts +16 -16
- package/src/_modules/ai/_models/ai-user-provider-config.control-model.ts +29 -29
- package/src/_modules/ai/_modules/anthropic/_collections/aai-models.const.ts +81 -81
- package/src/_modules/ai/_modules/anthropic/_enums/aai-model.enum.ts +19 -19
- package/src/_modules/ai/_modules/anthropic/_models/aai-call-settings.control-model.spec.ts +28 -28
- package/src/_modules/ai/_modules/anthropic/_models/aai-call-settings.control-model.ts +23 -23
- package/src/_modules/ai/_modules/anthropic/_models/aai-client-options.interface.ts +10 -10
- package/src/_modules/ai/_modules/anthropic/_models/aai-settings.control-model.spec.ts +22 -22
- package/src/_modules/ai/_modules/anthropic/_models/aai-settings.control-model.ts +27 -27
- package/src/_modules/ai/_modules/anthropic/_models/aai-user-provider-config.control-model.ts +20 -20
- package/src/_modules/ai/_modules/anthropic/index.ts +14 -14
- package/src/_modules/ai/_modules/document-ai/_models/dai-embedding-info.interface.ts +12 -12
- package/src/_modules/ai/_modules/document-ai/_models/dai-vector-search-params.interface.ts +22 -22
- package/src/_modules/ai/_modules/document-ai/index.ts +4 -4
- package/src/_modules/ai/_modules/fdp-ai/_collections/fdpai-models.const.ts +34 -34
- package/src/_modules/ai/_modules/fdp-ai/_enums/fdpai-model.enum.ts +6 -6
- package/src/_modules/ai/_modules/fdp-ai/_models/fdpai-call-settings.control-model.ts +19 -19
- package/src/_modules/ai/_modules/fdp-ai/_models/fdpai-client-options.interface.ts +11 -11
- package/src/_modules/ai/_modules/fdp-ai/_models/fdpai-settings.control-model.ts +24 -24
- package/src/_modules/ai/_modules/fdp-ai/_models/fdpai-user-provider-config.control-model.ts +20 -20
- package/src/_modules/ai/_modules/fdp-ai/index.ts +11 -11
- package/src/_modules/ai/_modules/google-ai/_collections/gai-models.const.ts +99 -99
- package/src/_modules/ai/_modules/google-ai/_enums/gai-model.enum.ts +16 -16
- package/src/_modules/ai/_modules/google-ai/_models/gai-call-settings.control-model.spec.ts +28 -28
- package/src/_modules/ai/_modules/google-ai/_models/gai-call-settings.control-model.ts +21 -21
- package/src/_modules/ai/_modules/google-ai/_models/gai-client-options.interface.ts +8 -8
- package/src/_modules/ai/_modules/google-ai/_models/gai-settings.control-model.spec.ts +22 -22
- package/src/_modules/ai/_modules/google-ai/_models/gai-settings.control-model.ts +25 -25
- package/src/_modules/ai/_modules/google-ai/_models/gai-user-provider-config.control-model.ts +20 -20
- package/src/_modules/ai/_modules/google-ai/index.ts +14 -14
- package/src/_modules/ai/_modules/local-ai/_collections/lai-models.const.ts +53 -53
- package/src/_modules/ai/_modules/local-ai/_enums/lai-model.enum.ts +6 -6
- package/src/_modules/ai/_modules/local-ai/_models/lai-call-settings.control-model.spec.ts +28 -28
- package/src/_modules/ai/_modules/local-ai/_models/lai-call-settings.control-model.ts +18 -18
- package/src/_modules/ai/_modules/local-ai/_models/lai-client-options.interface.ts +9 -9
- package/src/_modules/ai/_modules/local-ai/_models/lai-settings.control-model.spec.ts +22 -22
- package/src/_modules/ai/_modules/local-ai/_models/lai-settings.control-model.ts +23 -23
- package/src/_modules/ai/_modules/local-ai/index.ts +14 -14
- package/src/_modules/ai/_modules/open-ai/_collections/oai-embedding-model-dimensions.const.ts +7 -7
- package/src/_modules/ai/_modules/open-ai/_collections/oai-models.const.ts +252 -252
- package/src/_modules/ai/_modules/open-ai/_enums/oai-model.enum.ts +179 -179
- package/src/_modules/ai/_modules/open-ai/_models/oai-call-settings.control-model.spec.ts +28 -28
- package/src/_modules/ai/_modules/open-ai/_models/oai-call-settings.control-model.ts +21 -21
- package/src/_modules/ai/_modules/open-ai/_models/oai-client-options.interface.ts +81 -81
- package/src/_modules/ai/_modules/open-ai/_models/oai-embedding-info.interface.ts +13 -13
- package/src/_modules/ai/_modules/open-ai/_models/oai-settings.control-model.spec.ts +22 -22
- package/src/_modules/ai/_modules/open-ai/_models/oai-settings.control-model.ts +25 -25
- package/src/_modules/ai/_modules/open-ai/_models/oai-user-provider-config.control-model.ts +21 -21
- package/src/_modules/ai/_modules/open-ai/index.ts +28 -28
- package/src/_modules/ai/index.ts +27 -27
- package/src/_modules/ci-tools/_enums/cit-ci-result-code.enum.ts +11 -11
- package/src/_modules/ci-tools/_enums/cit-ci-step-result-code.enum.ts +9 -9
- package/src/_modules/ci-tools/_models/cit-ci-result-info.data-models.spec.ts +58 -58
- package/src/_modules/ci-tools/_models/cit-ci-result-info.data-models.ts +77 -77
- package/src/_modules/ci-tools/_models/cit-ci-step-result.interface.ts +12 -12
- package/src/_modules/ci-tools/index.ts +8 -8
- package/src/_modules/crypto/_collections/crypto.util.simple.spec.ts +512 -512
- package/src/_modules/crypto/index.ts +13 -13
- package/src/_modules/custom-data/_collections/cud-module-settings.const.ts +21 -21
- package/src/_modules/custom-data/_models/cud.data-model.spec.ts +38 -38
- package/src/_modules/custom-data/_models/cud.data-model.ts +39 -39
- package/src/_modules/custom-data/index.ts +10 -10
- package/src/_modules/data-handler/_models/data-handler-settings.control-model.spec.ts +110 -110
- package/src/_modules/data-handler/_models/data-handler-settings.control-model.ts +110 -110
- package/src/_modules/data-handler/_models/data-handler.control-model.spec.ts +445 -445
- package/src/_modules/data-handler/_models/data-handler.control-model.ts +459 -459
- package/src/_modules/data-handler/_models/data-list-handler.control-model.spec.ts +263 -263
- package/src/_modules/data-handler/_models/data-list-handler.control-model.ts +252 -252
- package/src/_modules/data-handler/_models/data-search-handler.control-model.spec.ts +417 -417
- package/src/_modules/data-handler/_models/data-search-handler.control-model.ts +390 -390
- package/src/_modules/data-handler/_models/list-collector-data-handler.control-model.spec.ts +374 -374
- package/src/_modules/data-handler/_models/list-collector-data-handler.control-model.ts +274 -274
- package/src/_modules/data-handler/index.ts +6 -6
- package/src/_modules/location/_collections/assets/country-codes-ISO-3166.json +3239 -3239
- package/src/_modules/location/_collections/assets/country-divisions-ISO-3166-all-list.json +19035 -19035
- package/src/_modules/location/_collections/assets/country-divisions-ISO-3166.json +4993 -4993
- package/src/_modules/location/_collections/assets/country-phone-codes.json +1203 -1203
- package/src/_modules/location/_collections/assets/country-subdivisions/afghanistan.json +137 -137
- package/src/_modules/location/_collections/assets/country-subdivisions/albania.json +49 -49
- package/src/_modules/location/_collections/assets/country-subdivisions/algeria.json +193 -193
- package/src/_modules/location/_collections/assets/country-subdivisions/andorra.json +29 -29
- package/src/_modules/location/_collections/assets/country-subdivisions/angola.json +73 -73
- package/src/_modules/location/_collections/assets/country-subdivisions/antigua-and-barbuda.json +33 -33
- package/src/_modules/location/_collections/assets/country-subdivisions/argentina.json +97 -97
- package/src/_modules/location/_collections/assets/country-subdivisions/armenia.json +45 -45
- package/src/_modules/location/_collections/assets/country-subdivisions/australia.json +33 -33
- package/src/_modules/location/_collections/assets/country-subdivisions/austria.json +37 -37
- package/src/_modules/location/_collections/assets/country-subdivisions/azerbaijan.json +5 -5
- package/src/_modules/location/_collections/assets/country-subdivisions/bahamas.json +125 -125
- package/src/_modules/location/_collections/assets/country-subdivisions/bahrain.json +21 -21
- package/src/_modules/location/_collections/assets/country-subdivisions/bangladesh.json +29 -29
- package/src/_modules/location/_collections/assets/country-subdivisions/barbados.json +45 -45
- package/src/_modules/location/_collections/assets/country-subdivisions/belarus.json +29 -29
- package/src/_modules/location/_collections/assets/country-subdivisions/belgium.json +13 -13
- package/src/_modules/location/_collections/assets/country-subdivisions/belize.json +25 -25
- package/src/_modules/location/_collections/assets/country-subdivisions/benin.json +49 -49
- package/src/_modules/location/_collections/assets/country-subdivisions/bhutan.json +81 -81
- package/src/_modules/location/_collections/assets/country-subdivisions/bolivia.json +37 -37
- package/src/_modules/location/_collections/assets/country-subdivisions/bosnia-and-herzegovina.json +13 -13
- package/src/_modules/location/_collections/assets/country-subdivisions/botswana.json +65 -65
- package/src/_modules/location/_collections/assets/country-subdivisions/brazil.json +109 -109
- package/src/_modules/location/_collections/assets/country-subdivisions/brunei-darussalam.json +17 -17
- package/src/_modules/location/_collections/assets/country-subdivisions/bulgaria.json +113 -113
- package/src/_modules/location/_collections/assets/country-subdivisions/burkina-faso.json +53 -53
- package/src/_modules/location/_collections/assets/country-subdivisions/burundi.json +69 -69
- package/src/_modules/location/_collections/assets/country-subdivisions/cambodia.json +97 -97
- package/src/_modules/location/_collections/assets/country-subdivisions/cameroon.json +41 -41
- package/src/_modules/location/_collections/assets/country-subdivisions/canada.json +79 -79
- package/src/_modules/location/_collections/assets/country-subdivisions/cape-verde.json +9 -9
- package/src/_modules/location/_collections/assets/country-subdivisions/central-african-republic.json +69 -69
- package/src/_modules/location/_collections/assets/country-subdivisions/chad.json +89 -89
- package/src/_modules/location/_collections/assets/country-subdivisions/chile.json +61 -61
- package/src/_modules/location/_collections/assets/country-subdivisions/china.json +205 -205
- package/src/_modules/location/_collections/assets/country-subdivisions/colombia.json +133 -133
- package/src/_modules/location/_collections/assets/country-subdivisions/comoros.json +13 -13
- package/src/_modules/location/_collections/assets/country-subdivisions/congo-the-democratic-republic-of-the.json +45 -45
- package/src/_modules/location/_collections/assets/country-subdivisions/congo.json +49 -49
- package/src/_modules/location/_collections/assets/country-subdivisions/costa-rica.json +29 -29
- package/src/_modules/location/_collections/assets/country-subdivisions/cote-d-ivoire-republic-of.json +77 -77
- package/src/_modules/location/_collections/assets/country-subdivisions/croatia.json +85 -85
- package/src/_modules/location/_collections/assets/country-subdivisions/cuba.json +65 -65
- package/src/_modules/location/_collections/assets/country-subdivisions/cyprus.json +25 -25
- package/src/_modules/location/_collections/assets/country-subdivisions/czech-republic.json +57 -57
- package/src/_modules/location/_collections/assets/country-subdivisions/denmark.json +21 -21
- package/src/_modules/location/_collections/assets/country-subdivisions/djibouti.json +25 -25
- package/src/_modules/location/_collections/assets/country-subdivisions/dominica.json +41 -41
- package/src/_modules/location/_collections/assets/country-subdivisions/dominican-republic.json +41 -41
- package/src/_modules/location/_collections/assets/country-subdivisions/ecuador.json +97 -97
- package/src/_modules/location/_collections/assets/country-subdivisions/egypt.json +117 -117
- package/src/_modules/location/_collections/assets/country-subdivisions/el-salvador.json +57 -57
- package/src/_modules/location/_collections/assets/country-subdivisions/equatorial-guinea.json +9 -9
- package/src/_modules/location/_collections/assets/country-subdivisions/eritrea.json +25 -25
- package/src/_modules/location/_collections/assets/country-subdivisions/estonia.json +61 -61
- package/src/_modules/location/_collections/assets/country-subdivisions/ethiopia.json +45 -45
- package/src/_modules/location/_collections/assets/country-subdivisions/fiji.json +21 -21
- package/src/_modules/location/_collections/assets/country-subdivisions/finland.json +77 -77
- package/src/_modules/location/_collections/assets/country-subdivisions/france.json +133 -133
- package/src/_modules/location/_collections/assets/country-subdivisions/gabon.json +37 -37
- package/src/_modules/location/_collections/assets/country-subdivisions/gambia.json +25 -25
- package/src/_modules/location/_collections/assets/country-subdivisions/georgia.json +49 -49
- package/src/_modules/location/_collections/assets/country-subdivisions/germany.json +65 -65
- package/src/_modules/location/_collections/assets/country-subdivisions/ghana.json +41 -41
- package/src/_modules/location/_collections/assets/country-subdivisions/greece.json +53 -53
- package/src/_modules/location/_collections/assets/country-subdivisions/greenland.json +17 -17
- package/src/_modules/location/_collections/assets/country-subdivisions/grenada.json +29 -29
- package/src/_modules/location/_collections/assets/country-subdivisions/guatemala.json +89 -89
- package/src/_modules/location/_collections/assets/country-subdivisions/guinea-bissau.json +13 -13
- package/src/_modules/location/_collections/assets/country-subdivisions/guinea.json +33 -33
- package/src/_modules/location/_collections/assets/country-subdivisions/guyana.json +41 -41
- package/src/_modules/location/_collections/assets/country-subdivisions/haiti.json +41 -41
- package/src/_modules/location/_collections/assets/country-subdivisions/honduras.json +73 -73
- package/src/_modules/location/_collections/assets/country-subdivisions/hong-kong.json +4 -4
- package/src/_modules/location/_collections/assets/country-subdivisions/hungary.json +173 -173
- package/src/_modules/location/_collections/assets/country-subdivisions/iceland.json +37 -37
- package/src/_modules/location/_collections/assets/country-subdivisions/india.json +181 -181
- package/src/_modules/location/_collections/assets/country-subdivisions/indonesia.json +29 -29
- package/src/_modules/location/_collections/assets/country-subdivisions/iran-islamic-republic-of.json +125 -125
- package/src/_modules/location/_collections/assets/country-subdivisions/iraq.json +73 -73
- package/src/_modules/location/_collections/assets/country-subdivisions/ireland.json +17 -17
- package/src/_modules/location/_collections/assets/country-subdivisions/israel.json +25 -25
- package/src/_modules/location/_collections/assets/country-subdivisions/italy.json +81 -81
- package/src/_modules/location/_collections/assets/country-subdivisions/jamaica.json +57 -57
- package/src/_modules/location/_collections/assets/country-subdivisions/japan.json +189 -189
- package/src/_modules/location/_collections/assets/country-subdivisions/jordan.json +49 -49
- package/src/_modules/location/_collections/assets/country-subdivisions/kazakhstan.json +65 -65
- package/src/_modules/location/_collections/assets/country-subdivisions/kenya.json +33 -33
- package/src/_modules/location/_collections/assets/country-subdivisions/kiribati.json +13 -13
- package/src/_modules/location/_collections/assets/country-subdivisions/korea-democratic-people-s-republic-of.json +45 -45
- package/src/_modules/location/_collections/assets/country-subdivisions/korea-republic-of.json +69 -69
- package/src/_modules/location/_collections/assets/country-subdivisions/kuwait.json +25 -25
- package/src/_modules/location/_collections/assets/country-subdivisions/kyrgyzstan.json +33 -33
- package/src/_modules/location/_collections/assets/country-subdivisions/lao-people-s-democratic-republic.json +73 -73
- package/src/_modules/location/_collections/assets/country-subdivisions/latvia.json +477 -477
- package/src/_modules/location/_collections/assets/country-subdivisions/lebanon.json +33 -33
- package/src/_modules/location/_collections/assets/country-subdivisions/lesotho.json +41 -41
- package/src/_modules/location/_collections/assets/country-subdivisions/liberia.json +61 -61
- package/src/_modules/location/_collections/assets/country-subdivisions/libyan-arab-jamahiriya.json +89 -89
- package/src/_modules/location/_collections/assets/country-subdivisions/liechtenstein.json +45 -45
- package/src/_modules/location/_collections/assets/country-subdivisions/lithuania.json +41 -41
- package/src/_modules/location/_collections/assets/country-subdivisions/luxembourg.json +13 -13
- package/src/_modules/location/_collections/assets/country-subdivisions/macedonia-the-former-yugoslav-republic-of.json +337 -337
- package/src/_modules/location/_collections/assets/country-subdivisions/madagascar.json +25 -25
- package/src/_modules/location/_collections/assets/country-subdivisions/malawi.json +13 -13
- package/src/_modules/location/_collections/assets/country-subdivisions/malaysia.json +81 -81
- package/src/_modules/location/_collections/assets/country-subdivisions/maldives.json +33 -33
- package/src/_modules/location/_collections/assets/country-subdivisions/mali.json +37 -37
- package/src/_modules/location/_collections/assets/country-subdivisions/malta.json +273 -273
- package/src/_modules/location/_collections/assets/country-subdivisions/marshall-islands.json +9 -9
- package/src/_modules/location/_collections/assets/country-subdivisions/mauritania.json +53 -53
- package/src/_modules/location/_collections/assets/country-subdivisions/mauritius.json +69 -69
- package/src/_modules/location/_collections/assets/country-subdivisions/mexico.json +161 -161
- package/src/_modules/location/_collections/assets/country-subdivisions/micronesia-federated-states-of.json +17 -17
- package/src/_modules/location/_collections/assets/country-subdivisions/moldova-republic-of.json +149 -149
- package/src/_modules/location/_collections/assets/country-subdivisions/monaco.json +69 -69
- package/src/_modules/location/_collections/assets/country-subdivisions/mongolia.json +89 -89
- package/src/_modules/location/_collections/assets/country-subdivisions/montenegro.json +93 -93
- package/src/_modules/location/_collections/assets/country-subdivisions/morocco.json +65 -65
- package/src/_modules/location/_collections/assets/country-subdivisions/mozambique.json +45 -45
- package/src/_modules/location/_collections/assets/country-subdivisions/myanmar.json +57 -57
- package/src/_modules/location/_collections/assets/country-subdivisions/namibia.json +57 -57
- package/src/_modules/location/_collections/assets/country-subdivisions/nauru.json +57 -57
- package/src/_modules/location/_collections/assets/country-subdivisions/nepal.json +21 -21
- package/src/_modules/location/_collections/assets/country-subdivisions/netherlands.json +91 -91
- package/src/_modules/location/_collections/assets/country-subdivisions/new-zealand.json +111 -111
- package/src/_modules/location/_collections/assets/country-subdivisions/nicaragua.json +69 -69
- package/src/_modules/location/_collections/assets/country-subdivisions/niger.json +33 -33
- package/src/_modules/location/_collections/assets/country-subdivisions/nigeria.json +149 -149
- package/src/_modules/location/_collections/assets/country-subdivisions/norway.json +85 -85
- package/src/_modules/location/_collections/assets/country-subdivisions/oman.json +37 -37
- package/src/_modules/location/_collections/assets/country-subdivisions/pakistan.json +33 -33
- package/src/_modules/location/_collections/assets/country-subdivisions/palau.json +65 -65
- package/src/_modules/location/_collections/assets/country-subdivisions/palestinian-territory-occupied.json +65 -65
- package/src/_modules/location/_collections/assets/country-subdivisions/panama.json +53 -53
- package/src/_modules/location/_collections/assets/country-subdivisions/papua-new-guinea.json +81 -81
- package/src/_modules/location/_collections/assets/country-subdivisions/paraguay.json +73 -73
- package/src/_modules/location/_collections/assets/country-subdivisions/peru.json +105 -105
- package/src/_modules/location/_collections/assets/country-subdivisions/philippines.json +69 -69
- package/src/_modules/location/_collections/assets/country-subdivisions/poland.json +65 -65
- package/src/_modules/location/_collections/assets/country-subdivisions/portugal.json +81 -81
- package/src/_modules/location/_collections/assets/country-subdivisions/qatar.json +29 -29
- package/src/_modules/location/_collections/assets/country-subdivisions/romania.json +169 -169
- package/src/_modules/location/_collections/assets/country-subdivisions/russian-federation.json +499 -499
- package/src/_modules/location/_collections/assets/country-subdivisions/rwanda.json +21 -21
- package/src/_modules/location/_collections/assets/country-subdivisions/saint-helena-ascension-and-tristan-da-cunha.json +13 -13
- package/src/_modules/location/_collections/assets/country-subdivisions/saint-kitts-and-nevis.json +9 -9
- package/src/_modules/location/_collections/assets/country-subdivisions/saint-lucia.json +45 -45
- package/src/_modules/location/_collections/assets/country-subdivisions/saint-vincent-and-the-grenadines.json +25 -25
- package/src/_modules/location/_collections/assets/country-subdivisions/samoa.json +45 -45
- package/src/_modules/location/_collections/assets/country-subdivisions/san-marino.json +37 -37
- package/src/_modules/location/_collections/assets/country-subdivisions/sao-tome-and-principe.json +9 -9
- package/src/_modules/location/_collections/assets/country-subdivisions/saudi-arabia.json +53 -53
- package/src/_modules/location/_collections/assets/country-subdivisions/senegal.json +57 -57
- package/src/_modules/location/_collections/assets/country-subdivisions/serbia.json +9 -9
- package/src/_modules/location/_collections/assets/country-subdivisions/seychelles.json +101 -101
- package/src/_modules/location/_collections/assets/country-subdivisions/sierra-leone.json +17 -17
- package/src/_modules/location/_collections/assets/country-subdivisions/singapore.json +21 -21
- package/src/_modules/location/_collections/assets/country-subdivisions/slovakia.json +33 -33
- package/src/_modules/location/_collections/assets/country-subdivisions/slovenia.json +841 -841
- package/src/_modules/location/_collections/assets/country-subdivisions/solomon-islands.json +41 -41
- package/src/_modules/location/_collections/assets/country-subdivisions/somalia.json +73 -73
- package/src/_modules/location/_collections/assets/country-subdivisions/south-africa.json +37 -37
- package/src/_modules/location/_collections/assets/country-subdivisions/south-sudan.json +41 -41
- package/src/_modules/location/_collections/assets/country-subdivisions/spain.json +346 -346
- package/src/_modules/location/_collections/assets/country-subdivisions/sri-lanka.json +37 -37
- package/src/_modules/location/_collections/assets/country-subdivisions/sudan.json +69 -69
- package/src/_modules/location/_collections/assets/country-subdivisions/suriname.json +41 -41
- package/src/_modules/location/_collections/assets/country-subdivisions/swaziland.json +17 -17
- package/src/_modules/location/_collections/assets/country-subdivisions/sweden.json +85 -85
- package/src/_modules/location/_collections/assets/country-subdivisions/switzerland.json +105 -105
- package/src/_modules/location/_collections/assets/country-subdivisions/syrian-arab-republic.json +57 -57
- package/src/_modules/location/_collections/assets/country-subdivisions/taiwan-province-of-china.json +93 -93
- package/src/_modules/location/_collections/assets/country-subdivisions/tajikistan.json +17 -17
- package/src/_modules/location/_collections/assets/country-subdivisions/tanzania-united-republic-of.json +105 -105
- package/src/_modules/location/_collections/assets/country-subdivisions/thailand.json +313 -313
- package/src/_modules/location/_collections/assets/country-subdivisions/timor-leste.json +53 -53
- package/src/_modules/location/_collections/assets/country-subdivisions/togo.json +21 -21
- package/src/_modules/location/_collections/assets/country-subdivisions/tonga.json +21 -21
- package/src/_modules/location/_collections/assets/country-subdivisions/trinidad-and-tobago.json +65 -65
- package/src/_modules/location/_collections/assets/country-subdivisions/tunisia.json +97 -97
- package/src/_modules/location/_collections/assets/country-subdivisions/turkey.json +325 -325
- package/src/_modules/location/_collections/assets/country-subdivisions/turkmenistan.json +25 -25
- package/src/_modules/location/_collections/assets/country-subdivisions/tuvalu.json +33 -33
- package/src/_modules/location/_collections/assets/country-subdivisions/uganda.json +17 -17
- package/src/_modules/location/_collections/assets/country-subdivisions/ukraine.json +109 -109
- package/src/_modules/location/_collections/assets/country-subdivisions/united-arab-emirates.json +29 -29
- package/src/_modules/location/_collections/assets/country-subdivisions/united-kingdom.json +1196 -1196
- package/src/_modules/location/_collections/assets/country-subdivisions/united-states-minor-outlying-islands.json +37 -37
- package/src/_modules/location/_collections/assets/country-subdivisions/united-states.json +286 -286
- package/src/_modules/location/_collections/assets/country-subdivisions/uruguay.json +77 -77
- package/src/_modules/location/_collections/assets/country-subdivisions/uzbekistan.json +57 -57
- package/src/_modules/location/_collections/assets/country-subdivisions/vanuatu.json +25 -25
- package/src/_modules/location/_collections/assets/country-subdivisions/venezuela.json +101 -101
- package/src/_modules/location/_collections/assets/country-subdivisions/viet-nam.json +257 -257
- package/src/_modules/location/_collections/assets/country-subdivisions/yemen.json +85 -85
- package/src/_modules/location/_collections/assets/country-subdivisions/zambia.json +37 -37
- package/src/_modules/location/_collections/assets/country-subdivisions/zimbabwe.json +41 -41
- package/src/_modules/location/_collections/loc-country-divisions.const.ts +10 -10
- package/src/_modules/location/_collections/loc-country-isos.const.ts +8 -8
- package/src/_modules/location/_collections/loc-regions.util.spec.ts +61 -61
- package/src/_modules/location/_collections/loc-regions.util.ts +137 -137
- package/src/_modules/location/_collections/loc.util.spec.ts +52 -52
- package/src/_modules/location/_collections/loc.util.ts +74 -74
- package/src/_modules/location/_enums/loc-region.enum.ts +14 -14
- package/src/_modules/location/_enums/loc-sub-region.enum.ts +31 -31
- package/src/_modules/location/_enums/loc-subdivision-region-type.enum.ts +47 -47
- package/src/_modules/location/_models/loc-coordinates.interface.ts +7 -7
- package/src/_modules/location/_models/loc-country-division.interface.ts +8 -8
- package/src/_modules/location/_models/loc-country-iso.interface.ts +23 -23
- package/src/_modules/location/_models/loc-country-phone-code.interface.ts +9 -9
- package/src/_modules/location/_models/loc-division-collection.interface.ts +12 -12
- package/src/_modules/location/_models/loc-division-region-data.interface.ts +9 -9
- package/src/_modules/location/_models/loc-geo-ip-location.interface.ts +27 -27
- package/src/_modules/location/index.ts +22 -22
- package/src/_modules/messaging/README.md +279 -279
- package/src/_modules/messaging/_collections/msg-module-settings.const.ts +46 -46
- package/src/_modules/messaging/_enums/msg-attachment-type.enum.ts +26 -26
- package/src/_modules/messaging/_enums/msg-delivery-status.enum.ts +17 -17
- package/src/_modules/messaging/_enums/msg-event-key.enum.ts +31 -31
- package/src/_modules/messaging/_enums/msg-participant-role.enum.ts +20 -20
- package/src/_modules/messaging/_enums/msg-provider-type.enum.ts +7 -7
- package/src/_modules/messaging/_enums/msg-type.enum.ts +23 -23
- package/src/_modules/messaging/_models/msg-attachment.interface.ts +46 -46
- package/src/_modules/messaging/_models/msg-conversation.data-model.spec.ts +69 -69
- package/src/_modules/messaging/_models/msg-conversation.data-model.ts +96 -96
- package/src/_modules/messaging/_models/msg-mention.interface.ts +29 -29
- package/src/_modules/messaging/_models/msg-message.data-model.spec.ts +79 -79
- package/src/_modules/messaging/_models/msg-message.data-model.ts +127 -127
- package/src/_modules/messaging/_models/msg-participant.interface.ts +46 -46
- package/src/_modules/messaging/_models/msg-reaction.interface.ts +20 -20
- package/src/_modules/messaging/_models/msg-thread-info.interface.ts +35 -35
- package/src/_modules/messaging/_modules/agent/_enums/agt-process-step-type.enum.ts +35 -35
- package/src/_modules/messaging/_modules/agent/_enums/agt-tool-status.enum.ts +23 -23
- package/src/_modules/messaging/_modules/agent/_models/agt-process-step.interface.ts +55 -55
- package/src/_modules/messaging/_modules/agent/_models/agt-reasoning-info.interface.ts +26 -26
- package/src/_modules/messaging/_modules/agent/_models/agt-tool-usage.interface.ts +37 -37
- package/src/_modules/messaging/_modules/agent/index.ts +8 -8
- package/src/_modules/messaging/index.ts +28 -28
- package/src/_modules/pipe/_collections/pip-transforms.const.ts +42 -42
- package/src/_modules/pipe/_collections/utils/pip-country-pipe.util.spec.ts +47 -47
- package/src/_modules/pipe/_collections/utils/pip-country-pipe.util.ts +41 -41
- package/src/_modules/pipe/_collections/utils/pip-custom-pipe.util.spec.ts +39 -39
- package/src/_modules/pipe/_collections/utils/pip-custom-pipe.util.ts +30 -30
- package/src/_modules/pipe/_collections/utils/pip-division-pipe.util.spec.ts +41 -41
- package/src/_modules/pipe/_collections/utils/pip-division-pipe.util.ts +36 -36
- package/src/_modules/pipe/_collections/utils/pip-json-pipe.util.spec.ts +62 -62
- package/src/_modules/pipe/_collections/utils/pip-json-pipe.util.ts +17 -17
- package/src/_modules/pipe/_collections/utils/pip-list-pipe.util.spec.ts +34 -34
- package/src/_modules/pipe/_collections/utils/pip-list-pipe.util.ts +25 -25
- package/src/_modules/pipe/_collections/utils/pip-multi-pipe-pipe.util.spec.ts +67 -67
- package/src/_modules/pipe/_collections/utils/pip-multi-pipe-pipe.util.ts +226 -226
- package/src/_modules/pipe/_collections/utils/pip-obj-key-pipe.util.spec.ts +28 -28
- package/src/_modules/pipe/_collections/utils/pip-obj-key-pipe.util.ts +21 -21
- package/src/_modules/pipe/_collections/utils/pip-range-pipe.util.spec.ts +59 -59
- package/src/_modules/pipe/_collections/utils/pip-range-pipe.util.ts +106 -106
- package/src/_modules/pipe/_collections/utils/pip-region-pipe.util.spec.ts +31 -31
- package/src/_modules/pipe/_collections/utils/pip-region-pipe.util.ts +35 -35
- package/src/_modules/pipe/_collections/utils/pip-replace-pipe.util.spec.ts +44 -44
- package/src/_modules/pipe/_collections/utils/pip-replace-pipe.util.ts +23 -23
- package/src/_modules/pipe/_collections/utils/pip-slider-pipe.util.spec.ts +21 -21
- package/src/_modules/pipe/_collections/utils/pip-slider-pipe.util.ts +33 -33
- package/src/_modules/pipe/_collections/utils/pip-smart-replace-pipe.util.spec.ts +62 -62
- package/src/_modules/pipe/_collections/utils/pip-smart-replace-pipe.util.ts +80 -80
- package/src/_modules/pipe/_enums/pip-range-pipe-setting.enum.ts +15 -15
- package/src/_modules/pipe/_enums/pip.enum.ts +65 -65
- package/src/_modules/pipe/_models/pip-multi-pipe-settings.type.ts +8 -8
- package/src/_modules/pipe/_models/pip-transforms.interface.ts +30 -30
- package/src/_modules/pipe/index.ts +30 -30
- package/src/_modules/socket/_enums/sck-event-key.enum.ts +21 -21
- package/src/_modules/socket/_models/sck-client-params.control-model.spec.ts +67 -67
- package/src/_modules/socket/_models/sck-client-params.control-model.ts +50 -50
- package/src/_modules/socket/_models/sck-socket-event.control-model.spec.ts +66 -66
- package/src/_modules/socket/_models/sck-socket-event.control-model.ts +172 -172
- package/src/_modules/socket/_services/sck-client.service-base.spec.ts +99 -99
- package/src/_modules/socket/_services/sck-client.service-base.ts +353 -353
- package/src/_modules/socket/index.ts +14 -14
- package/src/_modules/test/_collections/tst-module-settings.const.ts +67 -67
- package/src/_modules/test/index.ts +5 -5
- package/src/_modules/usage/_collections/usg-module-settings.const.ts +33 -33
- package/src/_modules/usage/_models/usg-action.control-model.spec.ts +27 -27
- package/src/_modules/usage/_models/usg-action.control-model.ts +28 -28
- package/src/_modules/usage/_models/usg-daily-usage-data.control-model.spec.ts +36 -36
- package/src/_modules/usage/_models/usg-daily-usage-data.control-model.ts +35 -35
- package/src/_modules/usage/_models/usg-data.control-model.spec.ts +41 -41
- package/src/_modules/usage/_models/usg-data.control-model.ts +35 -35
- package/src/_modules/usage/_models/usg-session.data-model.spec.ts +97 -97
- package/src/_modules/usage/_models/usg-session.data-model.ts +72 -72
- package/src/_modules/usage/index.ts +11 -11
- package/src/index.ts +102 -102
- package/tsconfig.app.json +12 -12
- package/tsconfig.json +31 -31
- package/tsconfig.test.json +16 -16
- package/tslint.json +153 -153
- package/pipeline.cicd.config.json +0 -128
|
@@ -1,653 +1,653 @@
|
|
|
1
|
-
|
|
2
|
-
import { DyFM_Vector2 } from '../../../_models/interfaces/vector2.interface';
|
|
3
|
-
import { DyFM_Math } from './math.util';
|
|
4
|
-
|
|
5
|
-
import { DyFM_Trigonometry } from './trigonometry.util';
|
|
6
|
-
|
|
7
|
-
export type DyFM_V2_U = DyFM_Vector2_Util;
|
|
8
|
-
export type DyFM_V2_Util = DyFM_Vector2_Util;
|
|
9
|
-
export type DyFM_Vector2_U = DyFM_Vector2_Util;
|
|
10
|
-
/**
|
|
11
|
-
* The main difference between static class functions and instance functions
|
|
12
|
-
* is that static functions return new Vector2,
|
|
13
|
-
* while instance functions change the current Vector2 and returns itself.
|
|
14
|
-
* (if this is not true, report it as a bug)
|
|
15
|
-
*
|
|
16
|
-
* @example
|
|
17
|
-
* ```ts
|
|
18
|
-
* const vector2 = new DyFM_Vector2_Util(1);
|
|
19
|
-
* const vector2 = new DyFM_Vector2_Util(1, 2);
|
|
20
|
-
* const vector2 = new DyFM_Vector2_Util({ x: 1, y: 2 });
|
|
21
|
-
* ```
|
|
22
|
-
*/
|
|
23
|
-
export class DyFM_Vector2_Util implements DyFM_Vector2 {
|
|
24
|
-
readonly isVector2Util: boolean = true;
|
|
25
|
-
|
|
26
|
-
private _x: number = 0;
|
|
27
|
-
/**
|
|
28
|
-
* if you are setting both x and y,
|
|
29
|
-
* use newValues() or newXY() to avoid multiple magnitude calculation
|
|
30
|
-
* */
|
|
31
|
-
set x (value: number) {
|
|
32
|
-
this._x = value;
|
|
33
|
-
|
|
34
|
-
this.calcMagnitude();
|
|
35
|
-
}
|
|
36
|
-
get x (): number {
|
|
37
|
-
return this._x;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
private _y: number = 0;
|
|
41
|
-
/**
|
|
42
|
-
* if you are setting both x and y,
|
|
43
|
-
* use newValues() or newXY() to avoid multiple magnitude calculation
|
|
44
|
-
* */
|
|
45
|
-
set y (value: number) {
|
|
46
|
-
this._y = value;
|
|
47
|
-
|
|
48
|
-
this.calcMagnitude();
|
|
49
|
-
}
|
|
50
|
-
get y (): number {
|
|
51
|
-
return this._y;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
private _magintude: number = 0;
|
|
55
|
-
get magintude (): number {
|
|
56
|
-
return this._magintude;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
// these are created as soft objects to avoid changing instances with DyFM_Vector2 instance functions
|
|
60
|
-
/**
|
|
61
|
-
* zero vector
|
|
62
|
-
*/
|
|
63
|
-
static readonly zero: DyFM_Vector2 = { x: 0, y: 0 };
|
|
64
|
-
/**
|
|
65
|
-
* up vector
|
|
66
|
-
*/
|
|
67
|
-
static readonly up: DyFM_Vector2 = { x: 0, y: 1 };
|
|
68
|
-
/**
|
|
69
|
-
* down vector
|
|
70
|
-
*/
|
|
71
|
-
static readonly down: DyFM_Vector2 = { x: 0, y: -1 };
|
|
72
|
-
/**
|
|
73
|
-
* right vector
|
|
74
|
-
*/
|
|
75
|
-
static readonly right: DyFM_Vector2 = { x: 1, y: 0 };
|
|
76
|
-
/**
|
|
77
|
-
* left vector
|
|
78
|
-
*/
|
|
79
|
-
static readonly left: DyFM_Vector2 = { x: -1, y: 0 };
|
|
80
|
-
|
|
81
|
-
constructor(
|
|
82
|
-
xOrXyOrVector: number | DyFM_Vector2 = 0,
|
|
83
|
-
y?: number
|
|
84
|
-
) {
|
|
85
|
-
if (
|
|
86
|
-
typeof xOrXyOrVector === 'object' &&
|
|
87
|
-
xOrXyOrVector.x !== undefined &&
|
|
88
|
-
xOrXyOrVector.y !== undefined
|
|
89
|
-
) {
|
|
90
|
-
this._x = xOrXyOrVector.x;
|
|
91
|
-
this._y = xOrXyOrVector.y;
|
|
92
|
-
} else if (y === undefined) {
|
|
93
|
-
this._x = xOrXyOrVector as number;
|
|
94
|
-
this._y = xOrXyOrVector as number;
|
|
95
|
-
} else {
|
|
96
|
-
this._x = xOrXyOrVector as number;
|
|
97
|
-
this._y = y;
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
this.calcMagnitude();
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
/**
|
|
104
|
-
* returns true if the vector is constructed
|
|
105
|
-
*/
|
|
106
|
-
constructed?(): boolean {
|
|
107
|
-
return true;
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
/**
|
|
111
|
-
* returns the distance between two vectors
|
|
112
|
-
*
|
|
113
|
-
* @example
|
|
114
|
-
* ```ts
|
|
115
|
-
* const distance = DyFM_Vector2_Util.distance({ x: 1, y: 2 }, { x: 3, y: 4 });
|
|
116
|
-
* console.log(distance); // 2.8284271247461903
|
|
117
|
-
* ```
|
|
118
|
-
*/
|
|
119
|
-
static distance(a: DyFM_Vector2, b: DyFM_Vector2): number {
|
|
120
|
-
return this.minus(a, b).magintude;
|
|
121
|
-
}
|
|
122
|
-
distance(to: DyFM_Vector2): number {
|
|
123
|
-
return DyFM_Vector2_Util.distance(this, to);
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
/**
|
|
127
|
-
* returns a new vector with the subtraction of two vectors
|
|
128
|
-
*
|
|
129
|
-
* @example
|
|
130
|
-
* ```ts
|
|
131
|
-
* const minus = DyFM_Vector2_Util.minus({ x: 1, y: 2 }, { x: 3, y: 4 });
|
|
132
|
-
* console.log(minus); // { x: -2, y: -2 }
|
|
133
|
-
* ```
|
|
134
|
-
*/
|
|
135
|
-
static minus(a: DyFM_Vector2, minusB: DyFM_Vector2): DyFM_Vector2_Util {
|
|
136
|
-
return this.plus(a, this.negative(minusB));
|
|
137
|
-
}
|
|
138
|
-
minus(vector: DyFM_Vector2): this {
|
|
139
|
-
this.plus(DyFM_Vector2_Util.negative(vector));
|
|
140
|
-
|
|
141
|
-
return this;
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
/**
|
|
145
|
-
* returns a new vector with the sum of two vectors
|
|
146
|
-
*
|
|
147
|
-
* @example
|
|
148
|
-
* ```ts
|
|
149
|
-
* const plus = DyFM_Vector2_Util.plus({ x: 1, y: 2 }, { x: 3, y: 4 });
|
|
150
|
-
* console.log(plus); // { x: 4, y: 6 }
|
|
151
|
-
* ```
|
|
152
|
-
*/
|
|
153
|
-
static plus(a: DyFM_Vector2, plusB: DyFM_Vector2): DyFM_Vector2_Util {
|
|
154
|
-
return new DyFM_Vector2_Util(a.x + plusB.x, a.y + plusB.y);
|
|
155
|
-
}
|
|
156
|
-
plus(vector: DyFM_Vector2): this {
|
|
157
|
-
this.newValues(DyFM_Vector2_Util.plus(this, vector));
|
|
158
|
-
|
|
159
|
-
return this;
|
|
160
|
-
}
|
|
161
|
-
static readonly add = this.plus;
|
|
162
|
-
readonly add = this.plus;
|
|
163
|
-
|
|
164
|
-
/** returns a new vector with the multiplication of two vectors
|
|
165
|
-
* @example
|
|
166
|
-
* ```ts
|
|
167
|
-
* const multiply = DyFM_Vector2_Util.multiply({ x: 1, y: 2 }, 2);
|
|
168
|
-
* console.log(multiply); // { x: 2, y: 4 }
|
|
169
|
-
* ```
|
|
170
|
-
*/
|
|
171
|
-
static multiply(v: DyFM_Vector2, n: number): DyFM_Vector2_Util {
|
|
172
|
-
return new DyFM_Vector2_Util(v.x * n, v.y * n);
|
|
173
|
-
}
|
|
174
|
-
multiply(n: number): this {
|
|
175
|
-
return this.newValues(DyFM_Vector2_Util.multiply(this, n));
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
/** returns a new vector with the division of two vectors
|
|
179
|
-
* @example
|
|
180
|
-
* ```ts
|
|
181
|
-
* const divide = DyFM_Vector2_Util.divide({ x: 1, y: 2 }, 2);
|
|
182
|
-
* console.log(divide); // { x: 0.5, y: 1 }
|
|
183
|
-
* ```
|
|
184
|
-
*/
|
|
185
|
-
static divide(v: DyFM_Vector2, divideBy: number): DyFM_Vector2_Util {
|
|
186
|
-
return new DyFM_Vector2_Util(v.x / divideBy, v.y / divideBy);
|
|
187
|
-
}
|
|
188
|
-
divide(n: number): this {
|
|
189
|
-
this.newValues(DyFM_Vector2_Util.divide(this, n));
|
|
190
|
-
|
|
191
|
-
return this;
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
/** returns the negative value of the original vector at new vector
|
|
195
|
-
* @example
|
|
196
|
-
* ```ts
|
|
197
|
-
* const negative = DyFM_Vector2_Util.negative({ x: 1, y: 2 });
|
|
198
|
-
* console.log(negative); // { x: -1, y: -2 }
|
|
199
|
-
* ```
|
|
200
|
-
*/
|
|
201
|
-
static negative(v: DyFM_Vector2): DyFM_Vector2_Util {
|
|
202
|
-
return new DyFM_Vector2_Util(-v.x, -v.y);
|
|
203
|
-
}
|
|
204
|
-
/** this returns a new instance */
|
|
205
|
-
getNegative(): DyFM_Vector2_Util {
|
|
206
|
-
return DyFM_Vector2_Util.negative(this);
|
|
207
|
-
}
|
|
208
|
-
negate(): this {
|
|
209
|
-
this.newValues(DyFM_Vector2_Util.negative(this));
|
|
210
|
-
|
|
211
|
-
return this;
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
/**
|
|
215
|
-
* returns a new vector with the rebase of the original vector
|
|
216
|
-
*
|
|
217
|
-
* @example
|
|
218
|
-
* ```ts
|
|
219
|
-
* const rebase = DyFM_Vector2_Util.rebase({ x: 1, y: 2 }, { x: 3, y: 4 }, { x: 5, y: 6 });
|
|
220
|
-
* console.log(rebase); // { x: 4, y: 6 }
|
|
221
|
-
* ```
|
|
222
|
-
*/
|
|
223
|
-
static rebase(v: DyFM_Vector2, baseFrom: DyFM_Vector2, baseTo: DyFM_Vector2): DyFM_Vector2_Util {
|
|
224
|
-
return this.plus(v, this.minus(baseTo, baseFrom));
|
|
225
|
-
}
|
|
226
|
-
rebase(baseFrom: DyFM_Vector2, baseTo: DyFM_Vector2): this {
|
|
227
|
-
this.newValues(DyFM_Vector2_Util.rebase(this, baseFrom, baseTo));
|
|
228
|
-
|
|
229
|
-
return this;
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
/**
|
|
233
|
-
* returns a new vector with the rotation of the original vector by degrees
|
|
234
|
-
*
|
|
235
|
-
* @example
|
|
236
|
-
* ```ts
|
|
237
|
-
* const rotate = DyFM_Vector2_Util.rotate({ x: 1, y: 2 }, 30);
|
|
238
|
-
* console.log(rotate); // { x: 0.8660254037844386, y: 1.5 }
|
|
239
|
-
* ```
|
|
240
|
-
*/
|
|
241
|
-
static rotate(vector: DyFM_Vector2, angle: number): DyFM_Vector2_Util {
|
|
242
|
-
const rad = DyFM_Trigonometry.angleToRadians(angle);
|
|
243
|
-
|
|
244
|
-
return this.rotateRad(vector, rad);
|
|
245
|
-
}
|
|
246
|
-
|
|
247
|
-
/**
|
|
248
|
-
* returns a new vector with the rotation of the original vector by radians
|
|
249
|
-
*
|
|
250
|
-
* @example
|
|
251
|
-
* ```ts
|
|
252
|
-
* const rotateRad = DyFM_Vector2_Util.rotateRad({ x: 1, y: 2 }, 3.141592653589793);
|
|
253
|
-
* console.log(rotateRad); // { x: -1, y: 2 }
|
|
254
|
-
* ```
|
|
255
|
-
*/
|
|
256
|
-
static rotateRad(vector: DyFM_Vector2, rad: number): DyFM_Vector2_Util {
|
|
257
|
-
const cos = Math.cos(rad);
|
|
258
|
-
const sin = Math.sin(rad);
|
|
259
|
-
const newX = (vector.x * cos) - (vector.y * sin);
|
|
260
|
-
const newY = (vector.x * sin) + (vector.y * cos);
|
|
261
|
-
|
|
262
|
-
return new DyFM_Vector2_Util(newX, newY);
|
|
263
|
-
}
|
|
264
|
-
|
|
265
|
-
/**
|
|
266
|
-
* returns a new vector with the rotation of the original vector by degrees
|
|
267
|
-
*
|
|
268
|
-
* @example
|
|
269
|
-
* ```ts
|
|
270
|
-
* const vector = new DyFM_Vector2_Util({ x: 1, y: 2 });
|
|
271
|
-
* vector.rotate(30);
|
|
272
|
-
* ```
|
|
273
|
-
*/
|
|
274
|
-
rotate(angle: number): this {
|
|
275
|
-
this.newValues(DyFM_Vector2_Util.rotate(this, angle));
|
|
276
|
-
|
|
277
|
-
return this;
|
|
278
|
-
}
|
|
279
|
-
|
|
280
|
-
/**
|
|
281
|
-
* returns a new vector with the rotation of the original vector by radians
|
|
282
|
-
*
|
|
283
|
-
* @example
|
|
284
|
-
* ```ts
|
|
285
|
-
* const vector = new DyFM_Vector2_Util({ x: 1, y: 2 });
|
|
286
|
-
* vector.rotateRad(3.141592653589793);
|
|
287
|
-
* ```
|
|
288
|
-
*/
|
|
289
|
-
rotateRad(rad: number): this {
|
|
290
|
-
this.newValues(DyFM_Vector2_Util.rotateRad(this, rad));
|
|
291
|
-
|
|
292
|
-
return this;
|
|
293
|
-
}
|
|
294
|
-
|
|
295
|
-
/**
|
|
296
|
-
* returns a new DyFM_Vector2_Util with the new values
|
|
297
|
-
*
|
|
298
|
-
* @example
|
|
299
|
-
* ```ts
|
|
300
|
-
* const vector = new DyFM_Vector2_Util({ x: 1, y: 2 });
|
|
301
|
-
* vector.newValues({ x: 3, y: 4 });
|
|
302
|
-
* ```
|
|
303
|
-
*/
|
|
304
|
-
newValues(newV: DyFM_Vector2): this {
|
|
305
|
-
this.newXY(newV.x, newV.y);
|
|
306
|
-
|
|
307
|
-
return this;
|
|
308
|
-
}
|
|
309
|
-
|
|
310
|
-
/**
|
|
311
|
-
* returns a new vector with the sum of a vector and the difference of two vectors
|
|
312
|
-
*
|
|
313
|
-
* @example
|
|
314
|
-
* ```ts
|
|
315
|
-
* const vector = new DyFM_Vector2_Util({ x: 1, y: 2 });
|
|
316
|
-
* vector.newXY(3, 4);
|
|
317
|
-
* ```
|
|
318
|
-
*/
|
|
319
|
-
newXY(newX: number, newY: number): this {
|
|
320
|
-
this._x = newX;
|
|
321
|
-
this._y = newY;
|
|
322
|
-
|
|
323
|
-
this.calcMagnitude();
|
|
324
|
-
|
|
325
|
-
return this;
|
|
326
|
-
}
|
|
327
|
-
|
|
328
|
-
/**
|
|
329
|
-
* returns a new DyFM_Vector2_Util with the new values
|
|
330
|
-
*
|
|
331
|
-
* @example
|
|
332
|
-
* ```ts
|
|
333
|
-
* const vector = new DyFM_Vector2_Util({ x: 1, y: 2 });
|
|
334
|
-
* DyFM_Vector2_Util.newValues(vector, { x: 3, y: 4 });
|
|
335
|
-
* ```
|
|
336
|
-
*/
|
|
337
|
-
static newValues(to: DyFM_Vector2, newV: DyFM_Vector2): DyFM_Vector2 {
|
|
338
|
-
to.x = newV.x;
|
|
339
|
-
to.y = newV.y;
|
|
340
|
-
|
|
341
|
-
return to;
|
|
342
|
-
}
|
|
343
|
-
static readonly newXY = this.newValues;
|
|
344
|
-
|
|
345
|
-
//// AI-ed UNCHECKED
|
|
346
|
-
/**
|
|
347
|
-
* returns the angle between two vectors
|
|
348
|
-
*
|
|
349
|
-
* @example
|
|
350
|
-
* ```ts
|
|
351
|
-
* const angle = DyFM_Vector2_Util.angle({ x: 1, y: 2 }, { x: 3, y: 4 });
|
|
352
|
-
* console.log(angle); // 45
|
|
353
|
-
* ```
|
|
354
|
-
*/
|
|
355
|
-
static angle(from: DyFM_Vector2, to: DyFM_Vector2): number {
|
|
356
|
-
return DyFM_Trigonometry.radiansToAngle(DyFM_Vector2_Util.angleRad(from, to));
|
|
357
|
-
}
|
|
358
|
-
|
|
359
|
-
/**
|
|
360
|
-
* returns the angle between two vectors in radians
|
|
361
|
-
*
|
|
362
|
-
* @example
|
|
363
|
-
* ```ts
|
|
364
|
-
* const angleRad = DyFM_Vector2_Util.angleRad({ x: 1, y: 2 }, { x: 3, y: 4 });
|
|
365
|
-
* console.log(angleRad); // 0.7853981633974483
|
|
366
|
-
* ```
|
|
367
|
-
*/
|
|
368
|
-
static angleRad(from: DyFM_Vector2, to: DyFM_Vector2): number {
|
|
369
|
-
return Math.atan2(to.y - from.y, to.x - from.x);
|
|
370
|
-
}
|
|
371
|
-
|
|
372
|
-
/**
|
|
373
|
-
* returns the angle between two vectors
|
|
374
|
-
*
|
|
375
|
-
* @example
|
|
376
|
-
* ```ts
|
|
377
|
-
* const vector = new DyFM_Vector2_Util({ x: 1, y: 2 });
|
|
378
|
-
* const angle = vector.angle({ x: 3, y: 4 });
|
|
379
|
-
* console.log(angle); // 45
|
|
380
|
-
* ```
|
|
381
|
-
*/
|
|
382
|
-
angle(from: DyFM_Vector2, to: DyFM_Vector2): number {
|
|
383
|
-
return DyFM_Vector2_Util.angle(from, to);
|
|
384
|
-
}
|
|
385
|
-
/**
|
|
386
|
-
* returns the angle between two vectors in degrees
|
|
387
|
-
*
|
|
388
|
-
* @example
|
|
389
|
-
* ```ts
|
|
390
|
-
* const angle = DyFM_Vector2_Util.deg({ x: 1, y: 2 });
|
|
391
|
-
* console.log(angle); // 45
|
|
392
|
-
*/
|
|
393
|
-
static deg(vector: DyFM_Vector2): number {
|
|
394
|
-
return DyFM_Trigonometry.radiansToAngle(DyFM_Vector2_Util.rad(vector));
|
|
395
|
-
}
|
|
396
|
-
/**
|
|
397
|
-
* returns the angle between two vectors in radians
|
|
398
|
-
*
|
|
399
|
-
* @example
|
|
400
|
-
* ```ts
|
|
401
|
-
* const angleRad = DyFM_Vector2_Util.rad({ x: 1, y: 2 });
|
|
402
|
-
* console.log(angleRad); // 0.7853981633974483
|
|
403
|
-
* ```
|
|
404
|
-
*/
|
|
405
|
-
static rad(vector: DyFM_Vector2): number {
|
|
406
|
-
return Math.atan2(vector.y, vector.x);
|
|
407
|
-
}
|
|
408
|
-
/**
|
|
409
|
-
* returns the vector angle in degrees
|
|
410
|
-
*
|
|
411
|
-
* @example
|
|
412
|
-
* ```ts
|
|
413
|
-
* const vector = new DyFM_Vector2_Util({ x: 1, y: 2 });
|
|
414
|
-
* const deg = vector.deg();
|
|
415
|
-
* console.log(deg); // 45
|
|
416
|
-
* ```
|
|
417
|
-
*/
|
|
418
|
-
deg(): number {
|
|
419
|
-
return DyFM_Vector2_Util.deg(this);
|
|
420
|
-
}
|
|
421
|
-
|
|
422
|
-
/**
|
|
423
|
-
* returns math floor of the vector
|
|
424
|
-
*
|
|
425
|
-
* @example
|
|
426
|
-
* ```ts
|
|
427
|
-
* const vector = DyFM_Vector2_Util.floor({ x: 1.5, y: 2.5 });
|
|
428
|
-
* console.log(vector); // { x: 1, y: 2 }
|
|
429
|
-
* ```
|
|
430
|
-
*/
|
|
431
|
-
static floor(v: DyFM_Vector2): DyFM_Vector2_Util {
|
|
432
|
-
return new DyFM_Vector2_Util(Math.floor(v.x), Math.floor(v.y));
|
|
433
|
-
}
|
|
434
|
-
/**
|
|
435
|
-
* returns math floor of the vector
|
|
436
|
-
*
|
|
437
|
-
* @example
|
|
438
|
-
* ```ts
|
|
439
|
-
* const vector = new DyFM_Vector2_Util({ x: 1.5, y: 2.5 });
|
|
440
|
-
* const floor = vector.floor();
|
|
441
|
-
* console.log(floor); // { x: 1, y: 2 }
|
|
442
|
-
* ```
|
|
443
|
-
*/
|
|
444
|
-
floor(): DyFM_Vector2_Util {
|
|
445
|
-
return DyFM_Vector2_Util.floor(this);
|
|
446
|
-
}
|
|
447
|
-
/////
|
|
448
|
-
|
|
449
|
-
/**
|
|
450
|
-
* returns the direction vector from one point to another
|
|
451
|
-
*
|
|
452
|
-
* @example
|
|
453
|
-
* ```ts
|
|
454
|
-
* const direction = DyFM_Vector2_Util.direction({ x: 1, y: 2 }, { x: 3, y: 4 });
|
|
455
|
-
* console.log(direction); // { x: 2, y: 2 }
|
|
456
|
-
* ```
|
|
457
|
-
*/
|
|
458
|
-
static direction(from: DyFM_Vector2, to: DyFM_Vector2): DyFM_Vector2_Util {
|
|
459
|
-
return DyFM_Vector2_Util.minus(to, from);
|
|
460
|
-
}
|
|
461
|
-
/**
|
|
462
|
-
* returns the direction vector from one point to another
|
|
463
|
-
*
|
|
464
|
-
* @example
|
|
465
|
-
* ```ts
|
|
466
|
-
* const vector = new DyFM_Vector2_Util({ x: 1, y: 2 });
|
|
467
|
-
* const direction = vector.direction({ x: 3, y: 4 });
|
|
468
|
-
* console.log(direction); // { x: 2, y: 2 }
|
|
469
|
-
* ```
|
|
470
|
-
*/
|
|
471
|
-
direction(to: DyFM_Vector2): DyFM_Vector2_Util {
|
|
472
|
-
return DyFM_Vector2_Util.direction(this, to);
|
|
473
|
-
}
|
|
474
|
-
|
|
475
|
-
/**
|
|
476
|
-
* returns a normalized vector
|
|
477
|
-
*
|
|
478
|
-
* @example
|
|
479
|
-
* ```ts
|
|
480
|
-
* const vector = DyFM_Vector2_Util.normalize({ x: 1, y: 2 });
|
|
481
|
-
* console.log(vector); // { x: 0.4472135954999579, y: 0.8944271909999159 }
|
|
482
|
-
* ```
|
|
483
|
-
*/
|
|
484
|
-
static normalize(v: DyFM_Vector2): DyFM_Vector2_Util {
|
|
485
|
-
const v_U = new DyFM_Vector2_Util(v);
|
|
486
|
-
|
|
487
|
-
return v_U.multiply(1 / v_U.magintude);
|
|
488
|
-
}
|
|
489
|
-
/**
|
|
490
|
-
* returns a normalized vector
|
|
491
|
-
*
|
|
492
|
-
* @example
|
|
493
|
-
* ```ts
|
|
494
|
-
* const vector = new DyFM_Vector2_Util({ x: 1, y: 2 });
|
|
495
|
-
* vector.normalize();
|
|
496
|
-
* console.log(vector); // { x: 0.4472135954999579, y: 0.8944271909999159 }
|
|
497
|
-
* ```
|
|
498
|
-
*/
|
|
499
|
-
normalize(): void {
|
|
500
|
-
this.newValues(DyFM_Vector2_Util.normalize(this));
|
|
501
|
-
}
|
|
502
|
-
/**
|
|
503
|
-
* this will return a new instance,
|
|
504
|
-
* if you want to change the current instance, use normalize()
|
|
505
|
-
*
|
|
506
|
-
* @example
|
|
507
|
-
* ```ts
|
|
508
|
-
* const vector = new DyFM_Vector2_Util({ x: 1, y: 2 });
|
|
509
|
-
* const normalized = vector.normalized();
|
|
510
|
-
* console.log(normalized); // { x: 0.4472135954999579, y: 0.8944271909999159 }
|
|
511
|
-
* ```
|
|
512
|
-
*/
|
|
513
|
-
normalized(): DyFM_Vector2_Util {
|
|
514
|
-
return DyFM_Vector2_Util.normalize(this);
|
|
515
|
-
}
|
|
516
|
-
|
|
517
|
-
/**
|
|
518
|
-
* returns the magnitude of the vector
|
|
519
|
-
*
|
|
520
|
-
* @example
|
|
521
|
-
* ```ts
|
|
522
|
-
* const vector = new DyFM_Vector2_Util({ x: 1, y: 2 });
|
|
523
|
-
* const magnitude = vector.magnitude();
|
|
524
|
-
* console.log(magnitude); // 2.23606797749979
|
|
525
|
-
* ```
|
|
526
|
-
*/
|
|
527
|
-
private calcMagnitude(): void {
|
|
528
|
-
this._magintude = DyFM_Trigonometry.getHypotenuse(this._x, this._y);
|
|
529
|
-
}
|
|
530
|
-
|
|
531
|
-
/**
|
|
532
|
-
* returns a new vector with the same values
|
|
533
|
-
*
|
|
534
|
-
* @example
|
|
535
|
-
* ```ts
|
|
536
|
-
* const vector = new DyFM_Vector2_Util({ x: 1, y: 2 });
|
|
537
|
-
* const clone = vector.clone();
|
|
538
|
-
* console.log(clone); // { x: 1, y: 2 }
|
|
539
|
-
* ```
|
|
540
|
-
*/
|
|
541
|
-
clone(): DyFM_Vector2_Util {
|
|
542
|
-
return new DyFM_Vector2_Util(this._x, this._y);
|
|
543
|
-
}
|
|
544
|
-
|
|
545
|
-
/**
|
|
546
|
-
* returns true if the vector has changed
|
|
547
|
-
*
|
|
548
|
-
* @example
|
|
549
|
-
* ```ts
|
|
550
|
-
* const vector1 = new DyFM_Vector2_Util({ x: 1, y: 2 });
|
|
551
|
-
* const vector2 = new DyFM_Vector2_Util({ x: 3, y: 4 });
|
|
552
|
-
* const isChanged = DyFM_Vector2_Util.isChanged(vector1, vector2);
|
|
553
|
-
* console.log(isChanged); // true
|
|
554
|
-
* ```
|
|
555
|
-
*/
|
|
556
|
-
static isChanged(a: DyFM_Vector2_Util, b: DyFM_Vector2_Util): boolean {
|
|
557
|
-
return a.x !== b.x || a.y !== b.y;
|
|
558
|
-
}
|
|
559
|
-
|
|
560
|
-
/**
|
|
561
|
-
* returns true if the vectors are equal
|
|
562
|
-
*
|
|
563
|
-
* @example
|
|
564
|
-
* ```ts
|
|
565
|
-
* const vector1 = new DyFM_Vector2_Util({ x: 1, y: 2 });
|
|
566
|
-
* const vector2 = new DyFM_Vector2_Util({ x: 1, y: 2 });
|
|
567
|
-
* const isEqual = DyFM_Vector2_Util.isEqual(vector1, vector2);
|
|
568
|
-
* console.log(isEqual); // true
|
|
569
|
-
* ```
|
|
570
|
-
*/
|
|
571
|
-
static isEqual(a: DyFM_Vector2, b: DyFM_Vector2): boolean {
|
|
572
|
-
return a.x === b.x && a.y === b.y;
|
|
573
|
-
}
|
|
574
|
-
|
|
575
|
-
/**
|
|
576
|
-
* returns true if the vectors have changed
|
|
577
|
-
*
|
|
578
|
-
* @example
|
|
579
|
-
* ```ts
|
|
580
|
-
* const vector1 = new DyFM_Vector2_Util({ x: 1, y: 2 });
|
|
581
|
-
* const vector2 = new DyFM_Vector2_Util({ x: 1, y: 2 });
|
|
582
|
-
* const isVectorChanged = DyFM_Vector2_Util.vectorChanged(vector1, vector2);
|
|
583
|
-
* console.log(isVectorChanged); // false
|
|
584
|
-
* ```
|
|
585
|
-
*/
|
|
586
|
-
static vectorChanged(a: DyFM_Vector2, b: DyFM_Vector2): boolean {
|
|
587
|
-
return a.x !== b.x || a.y !== b.y;
|
|
588
|
-
}
|
|
589
|
-
|
|
590
|
-
/**
|
|
591
|
-
* returns a new vector with the absolute values of the original vector
|
|
592
|
-
*
|
|
593
|
-
* @example
|
|
594
|
-
* ```ts
|
|
595
|
-
* const vector = new DyFM_Vector2_Util({ x: 1, y: 2 });
|
|
596
|
-
* const vector = DyFM_Vector2_Util.abs(vector);
|
|
597
|
-
* console.log(vector);
|
|
598
|
-
* ```
|
|
599
|
-
*/
|
|
600
|
-
static abs(v: DyFM_Vector2): DyFM_Vector2_Util {
|
|
601
|
-
return new DyFM_Vector2_Util(Math.abs(v.x), Math.abs(v.y));
|
|
602
|
-
}
|
|
603
|
-
abs(): this {
|
|
604
|
-
return this.newXY(Math.abs(this.x), Math.abs(this.y));
|
|
605
|
-
}
|
|
606
|
-
|
|
607
|
-
/**
|
|
608
|
-
* returns a new vector with the rounded values of the original vector
|
|
609
|
-
*
|
|
610
|
-
* @example
|
|
611
|
-
* ```ts
|
|
612
|
-
* const vector = new DyFM_Vector2_Util({ x: 1.5, y: 2.5 });
|
|
613
|
-
* const rounded = DyFM_Vector2_Util.round(vector);
|
|
614
|
-
* const rounded2 = DyFM_Vector2_Util.round(vector,3);
|
|
615
|
-
* ```
|
|
616
|
-
*/
|
|
617
|
-
static round(v: DyFM_Vector2, decimals: number = 0): DyFM_Vector2_Util {
|
|
618
|
-
return new DyFM_Vector2_Util(
|
|
619
|
-
DyFM_Math.round(v.x, decimals),
|
|
620
|
-
DyFM_Math.round(v.y, decimals)
|
|
621
|
-
);
|
|
622
|
-
}
|
|
623
|
-
|
|
624
|
-
/**
|
|
625
|
-
* returns a instance of DyFM_Vector2 from a DyFM_Vector2_Util
|
|
626
|
-
*
|
|
627
|
-
* @example
|
|
628
|
-
* ```ts
|
|
629
|
-
* const vector = new DyFM_Vector2_Util({ x: 1, y: 2 });
|
|
630
|
-
* const vector2 = DyFM_Vector2_Util.toVector2(vector);
|
|
631
|
-
* console.log(vector2);
|
|
632
|
-
* ```
|
|
633
|
-
*/
|
|
634
|
-
static toVector2(v: DyFM_Vector2_Util): DyFM_Vector2 {
|
|
635
|
-
return (new DyFM_Vector2_Util(v)).get();
|
|
636
|
-
}
|
|
637
|
-
|
|
638
|
-
/**
|
|
639
|
-
* returns a instance of DyFM_Vector2 from a DyFM_Vector2_Util
|
|
640
|
-
*/
|
|
641
|
-
get(): DyFM_Vector2 {
|
|
642
|
-
return { x: this.x, y: this.y };
|
|
643
|
-
}
|
|
644
|
-
getVector2 = this.get;
|
|
645
|
-
toVector2 = this.get;
|
|
646
|
-
|
|
647
|
-
/**
|
|
648
|
-
* returns a new vector with the same values
|
|
649
|
-
*/
|
|
650
|
-
static clone(v: DyFM_Vector2): DyFM_Vector2 {
|
|
651
|
-
return { x: v.x, y: v.y };
|
|
652
|
-
}
|
|
653
|
-
}
|
|
1
|
+
|
|
2
|
+
import { DyFM_Vector2 } from '../../../_models/interfaces/vector2.interface';
|
|
3
|
+
import { DyFM_Math } from './math.util';
|
|
4
|
+
|
|
5
|
+
import { DyFM_Trigonometry } from './trigonometry.util';
|
|
6
|
+
|
|
7
|
+
export type DyFM_V2_U = DyFM_Vector2_Util;
|
|
8
|
+
export type DyFM_V2_Util = DyFM_Vector2_Util;
|
|
9
|
+
export type DyFM_Vector2_U = DyFM_Vector2_Util;
|
|
10
|
+
/**
|
|
11
|
+
* The main difference between static class functions and instance functions
|
|
12
|
+
* is that static functions return new Vector2,
|
|
13
|
+
* while instance functions change the current Vector2 and returns itself.
|
|
14
|
+
* (if this is not true, report it as a bug)
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```ts
|
|
18
|
+
* const vector2 = new DyFM_Vector2_Util(1);
|
|
19
|
+
* const vector2 = new DyFM_Vector2_Util(1, 2);
|
|
20
|
+
* const vector2 = new DyFM_Vector2_Util({ x: 1, y: 2 });
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
export class DyFM_Vector2_Util implements DyFM_Vector2 {
|
|
24
|
+
readonly isVector2Util: boolean = true;
|
|
25
|
+
|
|
26
|
+
private _x: number = 0;
|
|
27
|
+
/**
|
|
28
|
+
* if you are setting both x and y,
|
|
29
|
+
* use newValues() or newXY() to avoid multiple magnitude calculation
|
|
30
|
+
* */
|
|
31
|
+
set x (value: number) {
|
|
32
|
+
this._x = value;
|
|
33
|
+
|
|
34
|
+
this.calcMagnitude();
|
|
35
|
+
}
|
|
36
|
+
get x (): number {
|
|
37
|
+
return this._x;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
private _y: number = 0;
|
|
41
|
+
/**
|
|
42
|
+
* if you are setting both x and y,
|
|
43
|
+
* use newValues() or newXY() to avoid multiple magnitude calculation
|
|
44
|
+
* */
|
|
45
|
+
set y (value: number) {
|
|
46
|
+
this._y = value;
|
|
47
|
+
|
|
48
|
+
this.calcMagnitude();
|
|
49
|
+
}
|
|
50
|
+
get y (): number {
|
|
51
|
+
return this._y;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
private _magintude: number = 0;
|
|
55
|
+
get magintude (): number {
|
|
56
|
+
return this._magintude;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// these are created as soft objects to avoid changing instances with DyFM_Vector2 instance functions
|
|
60
|
+
/**
|
|
61
|
+
* zero vector
|
|
62
|
+
*/
|
|
63
|
+
static readonly zero: DyFM_Vector2 = { x: 0, y: 0 };
|
|
64
|
+
/**
|
|
65
|
+
* up vector
|
|
66
|
+
*/
|
|
67
|
+
static readonly up: DyFM_Vector2 = { x: 0, y: 1 };
|
|
68
|
+
/**
|
|
69
|
+
* down vector
|
|
70
|
+
*/
|
|
71
|
+
static readonly down: DyFM_Vector2 = { x: 0, y: -1 };
|
|
72
|
+
/**
|
|
73
|
+
* right vector
|
|
74
|
+
*/
|
|
75
|
+
static readonly right: DyFM_Vector2 = { x: 1, y: 0 };
|
|
76
|
+
/**
|
|
77
|
+
* left vector
|
|
78
|
+
*/
|
|
79
|
+
static readonly left: DyFM_Vector2 = { x: -1, y: 0 };
|
|
80
|
+
|
|
81
|
+
constructor(
|
|
82
|
+
xOrXyOrVector: number | DyFM_Vector2 = 0,
|
|
83
|
+
y?: number
|
|
84
|
+
) {
|
|
85
|
+
if (
|
|
86
|
+
typeof xOrXyOrVector === 'object' &&
|
|
87
|
+
xOrXyOrVector.x !== undefined &&
|
|
88
|
+
xOrXyOrVector.y !== undefined
|
|
89
|
+
) {
|
|
90
|
+
this._x = xOrXyOrVector.x;
|
|
91
|
+
this._y = xOrXyOrVector.y;
|
|
92
|
+
} else if (y === undefined) {
|
|
93
|
+
this._x = xOrXyOrVector as number;
|
|
94
|
+
this._y = xOrXyOrVector as number;
|
|
95
|
+
} else {
|
|
96
|
+
this._x = xOrXyOrVector as number;
|
|
97
|
+
this._y = y;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
this.calcMagnitude();
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* returns true if the vector is constructed
|
|
105
|
+
*/
|
|
106
|
+
constructed?(): boolean {
|
|
107
|
+
return true;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* returns the distance between two vectors
|
|
112
|
+
*
|
|
113
|
+
* @example
|
|
114
|
+
* ```ts
|
|
115
|
+
* const distance = DyFM_Vector2_Util.distance({ x: 1, y: 2 }, { x: 3, y: 4 });
|
|
116
|
+
* console.log(distance); // 2.8284271247461903
|
|
117
|
+
* ```
|
|
118
|
+
*/
|
|
119
|
+
static distance(a: DyFM_Vector2, b: DyFM_Vector2): number {
|
|
120
|
+
return this.minus(a, b).magintude;
|
|
121
|
+
}
|
|
122
|
+
distance(to: DyFM_Vector2): number {
|
|
123
|
+
return DyFM_Vector2_Util.distance(this, to);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* returns a new vector with the subtraction of two vectors
|
|
128
|
+
*
|
|
129
|
+
* @example
|
|
130
|
+
* ```ts
|
|
131
|
+
* const minus = DyFM_Vector2_Util.minus({ x: 1, y: 2 }, { x: 3, y: 4 });
|
|
132
|
+
* console.log(minus); // { x: -2, y: -2 }
|
|
133
|
+
* ```
|
|
134
|
+
*/
|
|
135
|
+
static minus(a: DyFM_Vector2, minusB: DyFM_Vector2): DyFM_Vector2_Util {
|
|
136
|
+
return this.plus(a, this.negative(minusB));
|
|
137
|
+
}
|
|
138
|
+
minus(vector: DyFM_Vector2): this {
|
|
139
|
+
this.plus(DyFM_Vector2_Util.negative(vector));
|
|
140
|
+
|
|
141
|
+
return this;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* returns a new vector with the sum of two vectors
|
|
146
|
+
*
|
|
147
|
+
* @example
|
|
148
|
+
* ```ts
|
|
149
|
+
* const plus = DyFM_Vector2_Util.plus({ x: 1, y: 2 }, { x: 3, y: 4 });
|
|
150
|
+
* console.log(plus); // { x: 4, y: 6 }
|
|
151
|
+
* ```
|
|
152
|
+
*/
|
|
153
|
+
static plus(a: DyFM_Vector2, plusB: DyFM_Vector2): DyFM_Vector2_Util {
|
|
154
|
+
return new DyFM_Vector2_Util(a.x + plusB.x, a.y + plusB.y);
|
|
155
|
+
}
|
|
156
|
+
plus(vector: DyFM_Vector2): this {
|
|
157
|
+
this.newValues(DyFM_Vector2_Util.plus(this, vector));
|
|
158
|
+
|
|
159
|
+
return this;
|
|
160
|
+
}
|
|
161
|
+
static readonly add = this.plus;
|
|
162
|
+
readonly add = this.plus;
|
|
163
|
+
|
|
164
|
+
/** returns a new vector with the multiplication of two vectors
|
|
165
|
+
* @example
|
|
166
|
+
* ```ts
|
|
167
|
+
* const multiply = DyFM_Vector2_Util.multiply({ x: 1, y: 2 }, 2);
|
|
168
|
+
* console.log(multiply); // { x: 2, y: 4 }
|
|
169
|
+
* ```
|
|
170
|
+
*/
|
|
171
|
+
static multiply(v: DyFM_Vector2, n: number): DyFM_Vector2_Util {
|
|
172
|
+
return new DyFM_Vector2_Util(v.x * n, v.y * n);
|
|
173
|
+
}
|
|
174
|
+
multiply(n: number): this {
|
|
175
|
+
return this.newValues(DyFM_Vector2_Util.multiply(this, n));
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
/** returns a new vector with the division of two vectors
|
|
179
|
+
* @example
|
|
180
|
+
* ```ts
|
|
181
|
+
* const divide = DyFM_Vector2_Util.divide({ x: 1, y: 2 }, 2);
|
|
182
|
+
* console.log(divide); // { x: 0.5, y: 1 }
|
|
183
|
+
* ```
|
|
184
|
+
*/
|
|
185
|
+
static divide(v: DyFM_Vector2, divideBy: number): DyFM_Vector2_Util {
|
|
186
|
+
return new DyFM_Vector2_Util(v.x / divideBy, v.y / divideBy);
|
|
187
|
+
}
|
|
188
|
+
divide(n: number): this {
|
|
189
|
+
this.newValues(DyFM_Vector2_Util.divide(this, n));
|
|
190
|
+
|
|
191
|
+
return this;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
/** returns the negative value of the original vector at new vector
|
|
195
|
+
* @example
|
|
196
|
+
* ```ts
|
|
197
|
+
* const negative = DyFM_Vector2_Util.negative({ x: 1, y: 2 });
|
|
198
|
+
* console.log(negative); // { x: -1, y: -2 }
|
|
199
|
+
* ```
|
|
200
|
+
*/
|
|
201
|
+
static negative(v: DyFM_Vector2): DyFM_Vector2_Util {
|
|
202
|
+
return new DyFM_Vector2_Util(-v.x, -v.y);
|
|
203
|
+
}
|
|
204
|
+
/** this returns a new instance */
|
|
205
|
+
getNegative(): DyFM_Vector2_Util {
|
|
206
|
+
return DyFM_Vector2_Util.negative(this);
|
|
207
|
+
}
|
|
208
|
+
negate(): this {
|
|
209
|
+
this.newValues(DyFM_Vector2_Util.negative(this));
|
|
210
|
+
|
|
211
|
+
return this;
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
/**
|
|
215
|
+
* returns a new vector with the rebase of the original vector
|
|
216
|
+
*
|
|
217
|
+
* @example
|
|
218
|
+
* ```ts
|
|
219
|
+
* const rebase = DyFM_Vector2_Util.rebase({ x: 1, y: 2 }, { x: 3, y: 4 }, { x: 5, y: 6 });
|
|
220
|
+
* console.log(rebase); // { x: 4, y: 6 }
|
|
221
|
+
* ```
|
|
222
|
+
*/
|
|
223
|
+
static rebase(v: DyFM_Vector2, baseFrom: DyFM_Vector2, baseTo: DyFM_Vector2): DyFM_Vector2_Util {
|
|
224
|
+
return this.plus(v, this.minus(baseTo, baseFrom));
|
|
225
|
+
}
|
|
226
|
+
rebase(baseFrom: DyFM_Vector2, baseTo: DyFM_Vector2): this {
|
|
227
|
+
this.newValues(DyFM_Vector2_Util.rebase(this, baseFrom, baseTo));
|
|
228
|
+
|
|
229
|
+
return this;
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
/**
|
|
233
|
+
* returns a new vector with the rotation of the original vector by degrees
|
|
234
|
+
*
|
|
235
|
+
* @example
|
|
236
|
+
* ```ts
|
|
237
|
+
* const rotate = DyFM_Vector2_Util.rotate({ x: 1, y: 2 }, 30);
|
|
238
|
+
* console.log(rotate); // { x: 0.8660254037844386, y: 1.5 }
|
|
239
|
+
* ```
|
|
240
|
+
*/
|
|
241
|
+
static rotate(vector: DyFM_Vector2, angle: number): DyFM_Vector2_Util {
|
|
242
|
+
const rad = DyFM_Trigonometry.angleToRadians(angle);
|
|
243
|
+
|
|
244
|
+
return this.rotateRad(vector, rad);
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
/**
|
|
248
|
+
* returns a new vector with the rotation of the original vector by radians
|
|
249
|
+
*
|
|
250
|
+
* @example
|
|
251
|
+
* ```ts
|
|
252
|
+
* const rotateRad = DyFM_Vector2_Util.rotateRad({ x: 1, y: 2 }, 3.141592653589793);
|
|
253
|
+
* console.log(rotateRad); // { x: -1, y: 2 }
|
|
254
|
+
* ```
|
|
255
|
+
*/
|
|
256
|
+
static rotateRad(vector: DyFM_Vector2, rad: number): DyFM_Vector2_Util {
|
|
257
|
+
const cos = Math.cos(rad);
|
|
258
|
+
const sin = Math.sin(rad);
|
|
259
|
+
const newX = (vector.x * cos) - (vector.y * sin);
|
|
260
|
+
const newY = (vector.x * sin) + (vector.y * cos);
|
|
261
|
+
|
|
262
|
+
return new DyFM_Vector2_Util(newX, newY);
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
/**
|
|
266
|
+
* returns a new vector with the rotation of the original vector by degrees
|
|
267
|
+
*
|
|
268
|
+
* @example
|
|
269
|
+
* ```ts
|
|
270
|
+
* const vector = new DyFM_Vector2_Util({ x: 1, y: 2 });
|
|
271
|
+
* vector.rotate(30);
|
|
272
|
+
* ```
|
|
273
|
+
*/
|
|
274
|
+
rotate(angle: number): this {
|
|
275
|
+
this.newValues(DyFM_Vector2_Util.rotate(this, angle));
|
|
276
|
+
|
|
277
|
+
return this;
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
/**
|
|
281
|
+
* returns a new vector with the rotation of the original vector by radians
|
|
282
|
+
*
|
|
283
|
+
* @example
|
|
284
|
+
* ```ts
|
|
285
|
+
* const vector = new DyFM_Vector2_Util({ x: 1, y: 2 });
|
|
286
|
+
* vector.rotateRad(3.141592653589793);
|
|
287
|
+
* ```
|
|
288
|
+
*/
|
|
289
|
+
rotateRad(rad: number): this {
|
|
290
|
+
this.newValues(DyFM_Vector2_Util.rotateRad(this, rad));
|
|
291
|
+
|
|
292
|
+
return this;
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
/**
|
|
296
|
+
* returns a new DyFM_Vector2_Util with the new values
|
|
297
|
+
*
|
|
298
|
+
* @example
|
|
299
|
+
* ```ts
|
|
300
|
+
* const vector = new DyFM_Vector2_Util({ x: 1, y: 2 });
|
|
301
|
+
* vector.newValues({ x: 3, y: 4 });
|
|
302
|
+
* ```
|
|
303
|
+
*/
|
|
304
|
+
newValues(newV: DyFM_Vector2): this {
|
|
305
|
+
this.newXY(newV.x, newV.y);
|
|
306
|
+
|
|
307
|
+
return this;
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
/**
|
|
311
|
+
* returns a new vector with the sum of a vector and the difference of two vectors
|
|
312
|
+
*
|
|
313
|
+
* @example
|
|
314
|
+
* ```ts
|
|
315
|
+
* const vector = new DyFM_Vector2_Util({ x: 1, y: 2 });
|
|
316
|
+
* vector.newXY(3, 4);
|
|
317
|
+
* ```
|
|
318
|
+
*/
|
|
319
|
+
newXY(newX: number, newY: number): this {
|
|
320
|
+
this._x = newX;
|
|
321
|
+
this._y = newY;
|
|
322
|
+
|
|
323
|
+
this.calcMagnitude();
|
|
324
|
+
|
|
325
|
+
return this;
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
/**
|
|
329
|
+
* returns a new DyFM_Vector2_Util with the new values
|
|
330
|
+
*
|
|
331
|
+
* @example
|
|
332
|
+
* ```ts
|
|
333
|
+
* const vector = new DyFM_Vector2_Util({ x: 1, y: 2 });
|
|
334
|
+
* DyFM_Vector2_Util.newValues(vector, { x: 3, y: 4 });
|
|
335
|
+
* ```
|
|
336
|
+
*/
|
|
337
|
+
static newValues(to: DyFM_Vector2, newV: DyFM_Vector2): DyFM_Vector2 {
|
|
338
|
+
to.x = newV.x;
|
|
339
|
+
to.y = newV.y;
|
|
340
|
+
|
|
341
|
+
return to;
|
|
342
|
+
}
|
|
343
|
+
static readonly newXY = this.newValues;
|
|
344
|
+
|
|
345
|
+
//// AI-ed UNCHECKED
|
|
346
|
+
/**
|
|
347
|
+
* returns the angle between two vectors
|
|
348
|
+
*
|
|
349
|
+
* @example
|
|
350
|
+
* ```ts
|
|
351
|
+
* const angle = DyFM_Vector2_Util.angle({ x: 1, y: 2 }, { x: 3, y: 4 });
|
|
352
|
+
* console.log(angle); // 45
|
|
353
|
+
* ```
|
|
354
|
+
*/
|
|
355
|
+
static angle(from: DyFM_Vector2, to: DyFM_Vector2): number {
|
|
356
|
+
return DyFM_Trigonometry.radiansToAngle(DyFM_Vector2_Util.angleRad(from, to));
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
/**
|
|
360
|
+
* returns the angle between two vectors in radians
|
|
361
|
+
*
|
|
362
|
+
* @example
|
|
363
|
+
* ```ts
|
|
364
|
+
* const angleRad = DyFM_Vector2_Util.angleRad({ x: 1, y: 2 }, { x: 3, y: 4 });
|
|
365
|
+
* console.log(angleRad); // 0.7853981633974483
|
|
366
|
+
* ```
|
|
367
|
+
*/
|
|
368
|
+
static angleRad(from: DyFM_Vector2, to: DyFM_Vector2): number {
|
|
369
|
+
return Math.atan2(to.y - from.y, to.x - from.x);
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
/**
|
|
373
|
+
* returns the angle between two vectors
|
|
374
|
+
*
|
|
375
|
+
* @example
|
|
376
|
+
* ```ts
|
|
377
|
+
* const vector = new DyFM_Vector2_Util({ x: 1, y: 2 });
|
|
378
|
+
* const angle = vector.angle({ x: 3, y: 4 });
|
|
379
|
+
* console.log(angle); // 45
|
|
380
|
+
* ```
|
|
381
|
+
*/
|
|
382
|
+
angle(from: DyFM_Vector2, to: DyFM_Vector2): number {
|
|
383
|
+
return DyFM_Vector2_Util.angle(from, to);
|
|
384
|
+
}
|
|
385
|
+
/**
|
|
386
|
+
* returns the angle between two vectors in degrees
|
|
387
|
+
*
|
|
388
|
+
* @example
|
|
389
|
+
* ```ts
|
|
390
|
+
* const angle = DyFM_Vector2_Util.deg({ x: 1, y: 2 });
|
|
391
|
+
* console.log(angle); // 45
|
|
392
|
+
*/
|
|
393
|
+
static deg(vector: DyFM_Vector2): number {
|
|
394
|
+
return DyFM_Trigonometry.radiansToAngle(DyFM_Vector2_Util.rad(vector));
|
|
395
|
+
}
|
|
396
|
+
/**
|
|
397
|
+
* returns the angle between two vectors in radians
|
|
398
|
+
*
|
|
399
|
+
* @example
|
|
400
|
+
* ```ts
|
|
401
|
+
* const angleRad = DyFM_Vector2_Util.rad({ x: 1, y: 2 });
|
|
402
|
+
* console.log(angleRad); // 0.7853981633974483
|
|
403
|
+
* ```
|
|
404
|
+
*/
|
|
405
|
+
static rad(vector: DyFM_Vector2): number {
|
|
406
|
+
return Math.atan2(vector.y, vector.x);
|
|
407
|
+
}
|
|
408
|
+
/**
|
|
409
|
+
* returns the vector angle in degrees
|
|
410
|
+
*
|
|
411
|
+
* @example
|
|
412
|
+
* ```ts
|
|
413
|
+
* const vector = new DyFM_Vector2_Util({ x: 1, y: 2 });
|
|
414
|
+
* const deg = vector.deg();
|
|
415
|
+
* console.log(deg); // 45
|
|
416
|
+
* ```
|
|
417
|
+
*/
|
|
418
|
+
deg(): number {
|
|
419
|
+
return DyFM_Vector2_Util.deg(this);
|
|
420
|
+
}
|
|
421
|
+
|
|
422
|
+
/**
|
|
423
|
+
* returns math floor of the vector
|
|
424
|
+
*
|
|
425
|
+
* @example
|
|
426
|
+
* ```ts
|
|
427
|
+
* const vector = DyFM_Vector2_Util.floor({ x: 1.5, y: 2.5 });
|
|
428
|
+
* console.log(vector); // { x: 1, y: 2 }
|
|
429
|
+
* ```
|
|
430
|
+
*/
|
|
431
|
+
static floor(v: DyFM_Vector2): DyFM_Vector2_Util {
|
|
432
|
+
return new DyFM_Vector2_Util(Math.floor(v.x), Math.floor(v.y));
|
|
433
|
+
}
|
|
434
|
+
/**
|
|
435
|
+
* returns math floor of the vector
|
|
436
|
+
*
|
|
437
|
+
* @example
|
|
438
|
+
* ```ts
|
|
439
|
+
* const vector = new DyFM_Vector2_Util({ x: 1.5, y: 2.5 });
|
|
440
|
+
* const floor = vector.floor();
|
|
441
|
+
* console.log(floor); // { x: 1, y: 2 }
|
|
442
|
+
* ```
|
|
443
|
+
*/
|
|
444
|
+
floor(): DyFM_Vector2_Util {
|
|
445
|
+
return DyFM_Vector2_Util.floor(this);
|
|
446
|
+
}
|
|
447
|
+
/////
|
|
448
|
+
|
|
449
|
+
/**
|
|
450
|
+
* returns the direction vector from one point to another
|
|
451
|
+
*
|
|
452
|
+
* @example
|
|
453
|
+
* ```ts
|
|
454
|
+
* const direction = DyFM_Vector2_Util.direction({ x: 1, y: 2 }, { x: 3, y: 4 });
|
|
455
|
+
* console.log(direction); // { x: 2, y: 2 }
|
|
456
|
+
* ```
|
|
457
|
+
*/
|
|
458
|
+
static direction(from: DyFM_Vector2, to: DyFM_Vector2): DyFM_Vector2_Util {
|
|
459
|
+
return DyFM_Vector2_Util.minus(to, from);
|
|
460
|
+
}
|
|
461
|
+
/**
|
|
462
|
+
* returns the direction vector from one point to another
|
|
463
|
+
*
|
|
464
|
+
* @example
|
|
465
|
+
* ```ts
|
|
466
|
+
* const vector = new DyFM_Vector2_Util({ x: 1, y: 2 });
|
|
467
|
+
* const direction = vector.direction({ x: 3, y: 4 });
|
|
468
|
+
* console.log(direction); // { x: 2, y: 2 }
|
|
469
|
+
* ```
|
|
470
|
+
*/
|
|
471
|
+
direction(to: DyFM_Vector2): DyFM_Vector2_Util {
|
|
472
|
+
return DyFM_Vector2_Util.direction(this, to);
|
|
473
|
+
}
|
|
474
|
+
|
|
475
|
+
/**
|
|
476
|
+
* returns a normalized vector
|
|
477
|
+
*
|
|
478
|
+
* @example
|
|
479
|
+
* ```ts
|
|
480
|
+
* const vector = DyFM_Vector2_Util.normalize({ x: 1, y: 2 });
|
|
481
|
+
* console.log(vector); // { x: 0.4472135954999579, y: 0.8944271909999159 }
|
|
482
|
+
* ```
|
|
483
|
+
*/
|
|
484
|
+
static normalize(v: DyFM_Vector2): DyFM_Vector2_Util {
|
|
485
|
+
const v_U = new DyFM_Vector2_Util(v);
|
|
486
|
+
|
|
487
|
+
return v_U.multiply(1 / v_U.magintude);
|
|
488
|
+
}
|
|
489
|
+
/**
|
|
490
|
+
* returns a normalized vector
|
|
491
|
+
*
|
|
492
|
+
* @example
|
|
493
|
+
* ```ts
|
|
494
|
+
* const vector = new DyFM_Vector2_Util({ x: 1, y: 2 });
|
|
495
|
+
* vector.normalize();
|
|
496
|
+
* console.log(vector); // { x: 0.4472135954999579, y: 0.8944271909999159 }
|
|
497
|
+
* ```
|
|
498
|
+
*/
|
|
499
|
+
normalize(): void {
|
|
500
|
+
this.newValues(DyFM_Vector2_Util.normalize(this));
|
|
501
|
+
}
|
|
502
|
+
/**
|
|
503
|
+
* this will return a new instance,
|
|
504
|
+
* if you want to change the current instance, use normalize()
|
|
505
|
+
*
|
|
506
|
+
* @example
|
|
507
|
+
* ```ts
|
|
508
|
+
* const vector = new DyFM_Vector2_Util({ x: 1, y: 2 });
|
|
509
|
+
* const normalized = vector.normalized();
|
|
510
|
+
* console.log(normalized); // { x: 0.4472135954999579, y: 0.8944271909999159 }
|
|
511
|
+
* ```
|
|
512
|
+
*/
|
|
513
|
+
normalized(): DyFM_Vector2_Util {
|
|
514
|
+
return DyFM_Vector2_Util.normalize(this);
|
|
515
|
+
}
|
|
516
|
+
|
|
517
|
+
/**
|
|
518
|
+
* returns the magnitude of the vector
|
|
519
|
+
*
|
|
520
|
+
* @example
|
|
521
|
+
* ```ts
|
|
522
|
+
* const vector = new DyFM_Vector2_Util({ x: 1, y: 2 });
|
|
523
|
+
* const magnitude = vector.magnitude();
|
|
524
|
+
* console.log(magnitude); // 2.23606797749979
|
|
525
|
+
* ```
|
|
526
|
+
*/
|
|
527
|
+
private calcMagnitude(): void {
|
|
528
|
+
this._magintude = DyFM_Trigonometry.getHypotenuse(this._x, this._y);
|
|
529
|
+
}
|
|
530
|
+
|
|
531
|
+
/**
|
|
532
|
+
* returns a new vector with the same values
|
|
533
|
+
*
|
|
534
|
+
* @example
|
|
535
|
+
* ```ts
|
|
536
|
+
* const vector = new DyFM_Vector2_Util({ x: 1, y: 2 });
|
|
537
|
+
* const clone = vector.clone();
|
|
538
|
+
* console.log(clone); // { x: 1, y: 2 }
|
|
539
|
+
* ```
|
|
540
|
+
*/
|
|
541
|
+
clone(): DyFM_Vector2_Util {
|
|
542
|
+
return new DyFM_Vector2_Util(this._x, this._y);
|
|
543
|
+
}
|
|
544
|
+
|
|
545
|
+
/**
|
|
546
|
+
* returns true if the vector has changed
|
|
547
|
+
*
|
|
548
|
+
* @example
|
|
549
|
+
* ```ts
|
|
550
|
+
* const vector1 = new DyFM_Vector2_Util({ x: 1, y: 2 });
|
|
551
|
+
* const vector2 = new DyFM_Vector2_Util({ x: 3, y: 4 });
|
|
552
|
+
* const isChanged = DyFM_Vector2_Util.isChanged(vector1, vector2);
|
|
553
|
+
* console.log(isChanged); // true
|
|
554
|
+
* ```
|
|
555
|
+
*/
|
|
556
|
+
static isChanged(a: DyFM_Vector2_Util, b: DyFM_Vector2_Util): boolean {
|
|
557
|
+
return a.x !== b.x || a.y !== b.y;
|
|
558
|
+
}
|
|
559
|
+
|
|
560
|
+
/**
|
|
561
|
+
* returns true if the vectors are equal
|
|
562
|
+
*
|
|
563
|
+
* @example
|
|
564
|
+
* ```ts
|
|
565
|
+
* const vector1 = new DyFM_Vector2_Util({ x: 1, y: 2 });
|
|
566
|
+
* const vector2 = new DyFM_Vector2_Util({ x: 1, y: 2 });
|
|
567
|
+
* const isEqual = DyFM_Vector2_Util.isEqual(vector1, vector2);
|
|
568
|
+
* console.log(isEqual); // true
|
|
569
|
+
* ```
|
|
570
|
+
*/
|
|
571
|
+
static isEqual(a: DyFM_Vector2, b: DyFM_Vector2): boolean {
|
|
572
|
+
return a.x === b.x && a.y === b.y;
|
|
573
|
+
}
|
|
574
|
+
|
|
575
|
+
/**
|
|
576
|
+
* returns true if the vectors have changed
|
|
577
|
+
*
|
|
578
|
+
* @example
|
|
579
|
+
* ```ts
|
|
580
|
+
* const vector1 = new DyFM_Vector2_Util({ x: 1, y: 2 });
|
|
581
|
+
* const vector2 = new DyFM_Vector2_Util({ x: 1, y: 2 });
|
|
582
|
+
* const isVectorChanged = DyFM_Vector2_Util.vectorChanged(vector1, vector2);
|
|
583
|
+
* console.log(isVectorChanged); // false
|
|
584
|
+
* ```
|
|
585
|
+
*/
|
|
586
|
+
static vectorChanged(a: DyFM_Vector2, b: DyFM_Vector2): boolean {
|
|
587
|
+
return a.x !== b.x || a.y !== b.y;
|
|
588
|
+
}
|
|
589
|
+
|
|
590
|
+
/**
|
|
591
|
+
* returns a new vector with the absolute values of the original vector
|
|
592
|
+
*
|
|
593
|
+
* @example
|
|
594
|
+
* ```ts
|
|
595
|
+
* const vector = new DyFM_Vector2_Util({ x: 1, y: 2 });
|
|
596
|
+
* const vector = DyFM_Vector2_Util.abs(vector);
|
|
597
|
+
* console.log(vector);
|
|
598
|
+
* ```
|
|
599
|
+
*/
|
|
600
|
+
static abs(v: DyFM_Vector2): DyFM_Vector2_Util {
|
|
601
|
+
return new DyFM_Vector2_Util(Math.abs(v.x), Math.abs(v.y));
|
|
602
|
+
}
|
|
603
|
+
abs(): this {
|
|
604
|
+
return this.newXY(Math.abs(this.x), Math.abs(this.y));
|
|
605
|
+
}
|
|
606
|
+
|
|
607
|
+
/**
|
|
608
|
+
* returns a new vector with the rounded values of the original vector
|
|
609
|
+
*
|
|
610
|
+
* @example
|
|
611
|
+
* ```ts
|
|
612
|
+
* const vector = new DyFM_Vector2_Util({ x: 1.5, y: 2.5 });
|
|
613
|
+
* const rounded = DyFM_Vector2_Util.round(vector);
|
|
614
|
+
* const rounded2 = DyFM_Vector2_Util.round(vector,3);
|
|
615
|
+
* ```
|
|
616
|
+
*/
|
|
617
|
+
static round(v: DyFM_Vector2, decimals: number = 0): DyFM_Vector2_Util {
|
|
618
|
+
return new DyFM_Vector2_Util(
|
|
619
|
+
DyFM_Math.round(v.x, decimals),
|
|
620
|
+
DyFM_Math.round(v.y, decimals)
|
|
621
|
+
);
|
|
622
|
+
}
|
|
623
|
+
|
|
624
|
+
/**
|
|
625
|
+
* returns a instance of DyFM_Vector2 from a DyFM_Vector2_Util
|
|
626
|
+
*
|
|
627
|
+
* @example
|
|
628
|
+
* ```ts
|
|
629
|
+
* const vector = new DyFM_Vector2_Util({ x: 1, y: 2 });
|
|
630
|
+
* const vector2 = DyFM_Vector2_Util.toVector2(vector);
|
|
631
|
+
* console.log(vector2);
|
|
632
|
+
* ```
|
|
633
|
+
*/
|
|
634
|
+
static toVector2(v: DyFM_Vector2_Util): DyFM_Vector2 {
|
|
635
|
+
return (new DyFM_Vector2_Util(v)).get();
|
|
636
|
+
}
|
|
637
|
+
|
|
638
|
+
/**
|
|
639
|
+
* returns a instance of DyFM_Vector2 from a DyFM_Vector2_Util
|
|
640
|
+
*/
|
|
641
|
+
get(): DyFM_Vector2 {
|
|
642
|
+
return { x: this.x, y: this.y };
|
|
643
|
+
}
|
|
644
|
+
getVector2 = this.get;
|
|
645
|
+
toVector2 = this.get;
|
|
646
|
+
|
|
647
|
+
/**
|
|
648
|
+
* returns a new vector with the same values
|
|
649
|
+
*/
|
|
650
|
+
static clone(v: DyFM_Vector2): DyFM_Vector2 {
|
|
651
|
+
return { x: v.x, y: v.y };
|
|
652
|
+
}
|
|
653
|
+
}
|