@chemistry/math 2.9.0 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/vec3.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { ICloneable, IEquatable } from "@chemistry/common";
1
+ import { ICloneable, IEquatable } from '@chemistry/common';
2
2
  export interface IVec3 {
3
3
  x: number;
4
4
  y: number;
@@ -27,3 +27,4 @@ export declare class Vec3 implements IVec3, ICloneable<Vec3>, IEquatable<Vec3> {
27
27
  clone(): Vec3;
28
28
  toString(): string;
29
29
  }
30
+ //# sourceMappingURL=vec3.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vec3.d.ts","sourceRoot":"","sources":["../src/vec3.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,UAAU,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpE,MAAM,WAAW,KAAK;IACpB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,qBAAa,IAAK,YAAW,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC;WACtD,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,GAAG,IAAI;WAI7B,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,GAAG,IAAI;WAI7B,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,GAAG,MAAM;WAI/B,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,GAAG,IAAI;WAQ/B,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,GAAG,OAAO;WAQnC,UAAU,CAAC,EAAE,EAAE,IAAI,GAAG,IAAI;IAOjC,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;gBAEL,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;IAM3C,IAAW,MAAM,IAAI,MAAM,CAE1B;IAED,IAAW,UAAU,IAAI,MAAM,CAE9B;IAED,IAAW,GAAG,IAAI,MAAM,CAEvB;IAEM,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIxB,SAAS,IAAI,IAAI;IASjB,GAAG,CAAC,GAAG,EAAE,IAAI,GAAG,MAAM;IAItB,GAAG,CAAC,GAAG,EAAE,IAAI,GAAG,IAAI;IAIpB,GAAG,CAAC,MAAM,EAAE,IAAI,GAAG,IAAI;IAIvB,MAAM,CAAC,GAAG,EAAE,IAAI,GAAG,OAAO;IAI1B,KAAK,IAAI,IAAI;IAIb,QAAQ,IAAI,MAAM;CAG1B"}
package/dist/vec3.js ADDED
@@ -0,0 +1,71 @@
1
+ import { EPSILON } from '@chemistry/common';
2
+ export class Vec3 {
3
+ static add(v1, v2) {
4
+ return new Vec3(v1.x + v2.x, v1.y + v2.y, v1.z + v2.z);
5
+ }
6
+ static sub(v1, v2) {
7
+ return new Vec3(v1.x - v2.x, v1.y - v2.y, v1.z - v2.z);
8
+ }
9
+ static dot(v1, v2) {
10
+ return v1.x * v2.x + v1.y * v2.y + v1.z * v2.z;
11
+ }
12
+ static cross(v1, v2) {
13
+ return new Vec3(v1.y * v2.z - v1.z * v2.y, v1.z * v2.x - v1.x * v2.z, v1.x * v2.y - v1.y * v2.x);
14
+ }
15
+ static equals(v1, v2) {
16
+ return (Math.abs(v1.x - v2.x) < EPSILON &&
17
+ Math.abs(v1.y - v2.y) < EPSILON &&
18
+ Math.abs(v1.z - v2.z) < EPSILON);
19
+ }
20
+ static getDecimal(v1) {
21
+ const x = v1.x - Math.floor(v1.x);
22
+ const y = v1.y - Math.floor(v1.y);
23
+ const z = v1.z - Math.floor(v1.z);
24
+ return new Vec3(x, y, z);
25
+ }
26
+ constructor(x, y, z) {
27
+ this.x = x;
28
+ this.y = y;
29
+ this.z = z;
30
+ }
31
+ get length() {
32
+ return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);
33
+ }
34
+ get lengthPow2() {
35
+ return this.x * this.x + this.y * this.y + this.z * this.z;
36
+ }
37
+ get avg() {
38
+ return (this.x + this.y + this.z) / 3;
39
+ }
40
+ scale(num) {
41
+ return new Vec3(this.x * num, this.y * num, this.z * num);
42
+ }
43
+ normalize() {
44
+ const len = this.length;
45
+ if (len === 0) {
46
+ throw new Error('Can not normalize zero vector');
47
+ }
48
+ else {
49
+ return new Vec3(this.x / len, this.y / len, this.z / len);
50
+ }
51
+ }
52
+ dot(vec) {
53
+ return Vec3.dot(this, vec);
54
+ }
55
+ sub(vec) {
56
+ return Vec3.sub(this, vec);
57
+ }
58
+ add(vector) {
59
+ return Vec3.add(this, vector);
60
+ }
61
+ equals(vec) {
62
+ return Vec3.equals(this, vec);
63
+ }
64
+ clone() {
65
+ return new Vec3(this.x, this.y, this.z);
66
+ }
67
+ toString() {
68
+ return '(' + this.x.toFixed(3) + ',' + this.y.toFixed(3) + ',' + this.z.toFixed(3) + ')';
69
+ }
70
+ }
71
+ //# sourceMappingURL=vec3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vec3.js","sourceRoot":"","sources":["../src/vec3.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,39 +1,50 @@
1
1
  {
2
- "name": "@chemistry/math",
3
- "version": "2.9.0",
4
- "description": "Math support for @chemistry project",
5
- "author": {
6
- "name": "Volodymyr Vreshch",
7
- "url": "http://vreshch.com/"
8
- },
9
- "license": "MIT",
10
- "keywords": [
11
- "cheminformatics",
12
- "crystallography",
13
- "math"
14
- ],
15
- "engines": {
16
- "node": ">=6.0.0"
17
- },
18
- "repository": "https://github.com/chemistry/chemical-libraries/tree/master/packages/math",
19
- "publishConfig": {
20
- "registry": "https://registry.npmjs.org/",
21
- "access": "public"
22
- },
23
- "private": false,
24
- "files": [
25
- "package-lock.json",
26
- "package.json",
27
- "dist",
28
- "README.md"
29
- ],
30
- "main": "dist/math.js",
31
- "typings": "dist/index.d.ts",
32
- "scripts": {
33
- "build": "webpack-cli --config webpack.config.js --mode production"
34
- },
35
- "dependencies": {
36
- "@chemistry/common": "^2.9.0"
37
- },
38
- "gitHead": "a3e69dc70e47ea81923fcff53cb738acf0d4d7c1"
2
+ "name": "@chemistry/math",
3
+ "version": "3.0.1",
4
+ "description": "Math support for @chemistry project",
5
+ "type": "module",
6
+ "author": {
7
+ "name": "Volodymyr Vreshch",
8
+ "url": "https://vreshch.com/"
9
+ },
10
+ "license": "MIT",
11
+ "keywords": [
12
+ "cheminformatics",
13
+ "crystallography",
14
+ "math"
15
+ ],
16
+ "engines": {
17
+ "node": ">=20.0.0"
18
+ },
19
+ "repository": {
20
+ "type": "git",
21
+ "url": "https://github.com/chemistry/chemical-libraries.git",
22
+ "directory": "packages/math"
23
+ },
24
+ "publishConfig": {
25
+ "registry": "https://registry.npmjs.org/",
26
+ "access": "public"
27
+ },
28
+ "private": false,
29
+ "sideEffects": false,
30
+ "files": [
31
+ "package.json",
32
+ "dist",
33
+ "README.md"
34
+ ],
35
+ "main": "./dist/index.js",
36
+ "types": "./dist/index.d.ts",
37
+ "exports": {
38
+ ".": {
39
+ "types": "./dist/index.d.ts",
40
+ "import": "./dist/index.js"
41
+ }
42
+ },
43
+ "scripts": {
44
+ "build": "tsc",
45
+ "type-check": "tsc --noEmit"
46
+ },
47
+ "dependencies": {
48
+ "@chemistry/common": "^3.0.0"
49
+ }
39
50
  }
package/LICENSE.md DELETED
@@ -1,22 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2019 Volodymyr Vreshch
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining
6
- a copy of this software and associated documentation files (the
7
- "Software"), to deal in the Software without restriction, including
8
- without limitation the rights to use, copy, modify, merge, publish,
9
- distribute, sublicense, and/or sell copies of the Software, and to
10
- permit persons to whom the Software is furnished to do so, subject to
11
- the following conditions:
12
-
13
- The above copyright notice and this permission notice shall be
14
- included in all copies or substantial portions of the Software.
15
-
16
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
package/dist/math.js DELETED
@@ -1,2 +0,0 @@
1
- !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("math",[],t):"object"==typeof exports?exports.math=t():e.math=t()}("undefined"!=typeof self?self:this,(function(){return function(e){var t={};function n(s){if(t[s])return t[s].exports;var i=t[s]={i:s,l:!1,exports:{}};return e[s].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,s){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:s})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var s=Object.create(null);if(n.r(s),Object.defineProperty(s,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(s,i,function(t){return e[t]}.bind(null,i));return s},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=2)}([function(e,t,n){"undefined"!=typeof self&&self,e.exports=function(e){var t={};function n(s){if(t[s])return t[s].exports;var i=t[s]={i:s,l:!1,exports:{}};return e[s].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,s){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:s})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var s=Object.create(null);if(n.r(s),Object.defineProperty(s,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(s,i,function(t){return e[t]}.bind(null,i));return s},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=0)}([function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){for(var n in e)t.hasOwnProperty(n)||(t[n]=e[n])}(n(1))},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EPSILON=1e-8}])},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var s=n(0),i=function(){function e(e,t,n){this.x=e,this.y=t,this.z=n}return e.add=function(t,n){return new e(t.x+n.x,t.y+n.y,t.z+n.z)},e.sub=function(t,n){return new e(t.x-n.x,t.y-n.y,t.z-n.z)},e.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z},e.cross=function(t,n){return new e(t.y*n.z-t.z*n.y,t.z*n.x-t.x*n.z,t.x*n.y-t.y*n.x)},e.equals=function(e,t){return Math.abs(e.x-t.x)<s.EPSILON&&Math.abs(e.y-t.y)<s.EPSILON&&Math.abs(e.z-t.z)<s.EPSILON},e.getDecimal=function(t){return new e(t.x-Math.floor(t.x),t.y-Math.floor(t.y),t.z-Math.floor(t.z))},Object.defineProperty(e.prototype,"length",{get:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"lengthPow2",{get:function(){return this.x*this.x+this.y*this.y+this.z*this.z},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"avg",{get:function(){return(this.x+this.y+this.z)/3},enumerable:!0,configurable:!0}),e.prototype.scale=function(t){return new e(this.x*t,this.y*t,this.z*t)},e.prototype.normalize=function(){var t=this.length;if(0===t)throw new Error("Can not normalize zero vector");return new e(this.x/t,this.y/t,this.z/t)},e.prototype.dot=function(t){return e.dot(this,t)},e.prototype.sub=function(t){return e.sub(this,t)},e.prototype.add=function(t){return e.add(this,t)},e.prototype.equals=function(t){return e.equals(this,t)},e.prototype.clone=function(){return new e(this.x,this.y,this.z)},e.prototype.toString=function(){return"("+this.x.toFixed(3)+","+this.y.toFixed(3)+","+this.z.toFixed(3)+")"},e}();t.Vec3=i},function(e,t,n){"use strict";function s(e){for(var n in e)t.hasOwnProperty(n)||(t[n]=e[n])}Object.defineProperty(t,"__esModule",{value:!0}),s(n(3)),s(n(4)),s(n(5)),s(n(1)),s(n(7))},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var s=n(0),i=n(1),r=function(){function e(e){this.elements=e&&9===e.length?e.slice(0):[1,0,0,0,1,0,0,0,1]}return e.equals=function(e,t){return Math.abs(e.elements[0]-t.elements[0])<s.EPSILON&&Math.abs(e.elements[1]-t.elements[1])<s.EPSILON&&Math.abs(e.elements[2]-t.elements[2])<s.EPSILON&&Math.abs(e.elements[3]-t.elements[3])<s.EPSILON&&Math.abs(e.elements[4]-t.elements[4])<s.EPSILON&&Math.abs(e.elements[5]-t.elements[5])<s.EPSILON&&Math.abs(e.elements[6]-t.elements[6])<s.EPSILON&&Math.abs(e.elements[7]-t.elements[7])<s.EPSILON&&Math.abs(e.elements[8]-t.elements[8])<s.EPSILON},e.inverse=function(t){var n=t.determinant();if(0===n)throw new Error("Matrix not invertable");return new e([(t.get(1,1)*t.get(2,2)-t.get(1,2)*t.get(2,1))/n,(-t.get(0,1)*t.get(2,2)+t.get(0,2)*t.get(2,1))/n,(t.get(0,1)*t.get(1,2)-t.get(0,2)*t.get(1,1))/n,(-t.get(1,0)*t.get(2,2)+t.get(1,2)*t.get(2,0))/n,(t.get(0,0)*t.get(2,2)-t.get(0,2)*t.get(2,0))/n,(-t.get(0,0)*t.get(1,2)+t.get(0,2)*t.get(1,0))/n,(t.get(1,0)*t.get(2,1)-t.get(1,1)*t.get(2,0))/n,(-t.get(0,0)*t.get(2,1)+t.get(0,1)*t.get(2,0))/n,(t.get(0,0)*t.get(1,1)-t.get(0,1)*t.get(1,0))/n])},e.prototype.set=function(e,t,n){if(e>3||e<0||t>3||t<0)throw new Error("Wrong coefficients");this.elements[3*e+t]=n},e.prototype.get=function(e,t){if(e>3||e<0||t>3||t<0)throw new Error("Wrong coefficients");return this.elements[3*e+t]},e.prototype.scale=function(t){return new e([this.elements[0]*t,this.elements[1]*t,this.elements[2]*t,this.elements[3]*t,this.elements[4]*t,this.elements[5]*t,this.elements[6]*t,this.elements[7]*t,this.elements[8]*t])},e.prototype.project=function(e){return new i.Vec3(this.elements[0]*e.x+this.elements[1]*e.y+this.elements[2]*e.z,this.elements[3]*e.x+this.elements[4]*e.y+this.elements[5]*e.z,this.elements[6]*e.x+this.elements[7]*e.y+this.elements[8]*e.z)},e.prototype.multiply=function(t){return new e([this.elements[0]*t.elements[0]+this.elements[3]*t.elements[1]+this.elements[6]*t.elements[2],this.elements[1]*t.elements[0]+this.elements[4]*t.elements[1]+this.elements[7]*t.elements[2],this.elements[2]*t.elements[0]+this.elements[5]*t.elements[1]+this.elements[8]*t.elements[2],this.elements[0]*t.elements[3]+this.elements[3]*t.elements[4]+this.elements[6]*t.elements[5],this.elements[1]*t.elements[3]+this.elements[4]*t.elements[4]+this.elements[7]*t.elements[5],this.elements[2]*t.elements[3]+this.elements[5]*t.elements[4]+this.elements[8]*t.elements[5],this.elements[0]*t.elements[6]+this.elements[3]*t.elements[7]+this.elements[6]*t.elements[8],this.elements[1]*t.elements[6]+this.elements[4]*t.elements[7]+this.elements[7]*t.elements[8],this.elements[2]*t.elements[6]+this.elements[5]*t.elements[7]+this.elements[8]*t.elements[8]])},e.prototype.determinant=function(){var e=this.get(0,0)*(this.get(1,1)*this.get(2,2)-this.get(2,1)*this.get(1,2));return e-=this.get(1,0)*(this.get(0,1)*this.get(2,2)-this.get(2,1)*this.get(0,2)),e+=this.get(2,0)*(this.get(0,1)*this.get(1,2)-this.get(1,1)*this.get(0,2))},e.prototype.clone=function(){return new e(this.elements.slice(0))},e.prototype.equals=function(t){return e.equals(this,t)},e.prototype.toString=function(){return"("+[this.elements[0].toFixed(3),this.elements[1].toFixed(3),this.elements[2].toFixed(3),this.elements[3].toFixed(3),this.elements[4].toFixed(3),this.elements[5].toFixed(3),this.elements[6].toFixed(3),this.elements[7].toFixed(3),this.elements[8].toFixed(3)].join(",")+")"},e}();t.Matrix3x3=r},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var s=n(0),i=n(1),r=function(){function e(e){this.elements=e&&12===e.length?e.slice(0):[1,0,0,0,0,1,0,0,0,0,1,0]}return e.add=function(t,n){var s=t.elements,i=n.elements;return new e([s[0]+i[0],s[1]+i[1],s[2]+i[2],s[3]+i[3],s[4]+i[4],s[5]+i[5],s[6]+i[6],s[7]+i[7],s[8]+i[8],s[9]+i[9],s[10]+i[10],s[11]+i[11]])},e.sub=function(t,n){var s=t.elements,i=n.elements;return new e([s[0]-i[0],s[1]-i[1],s[2]-i[2],s[3]-i[3],s[4]-i[4],s[5]-i[5],s[6]-i[6],s[7]-i[7],s[8]-i[8],s[9]-i[9],s[10]-i[10],s[11]-i[11]])},e.inverse=function(t){var n,s,i=[],r=t.elements.slice(0,12);for(r[12]=0,r[13]=0,r[14]=0,r[15]=1,i[0]=r[5]*r[10]*r[15]-r[5]*r[14]*r[11]-r[6]*r[9]*r[15]+r[6]*r[13]*r[11]+r[7]*r[9]*r[14]-r[7]*r[13]*r[10],i[1]=-r[1]*r[10]*r[15]+r[1]*r[14]*r[11]+r[2]*r[9]*r[15]-r[2]*r[13]*r[11]-r[3]*r[9]*r[14]+r[3]*r[13]*r[10],i[2]=r[1]*r[6]*r[15]-r[1]*r[14]*r[7]-r[2]*r[5]*r[15]+r[2]*r[13]*r[7]+r[3]*r[5]*r[14]-r[3]*r[13]*r[6],i[3]=-r[1]*r[6]*r[11]+r[1]*r[10]*r[7]+r[2]*r[5]*r[11]-r[2]*r[9]*r[7]-r[3]*r[5]*r[10]+r[3]*r[9]*r[6],i[4]=-r[4]*r[10]*r[15]+r[4]*r[14]*r[11]+r[6]*r[8]*r[15]-r[6]*r[12]*r[11]-r[7]*r[8]*r[14]+r[7]*r[12]*r[10],i[5]=r[0]*r[10]*r[15]-r[0]*r[14]*r[11]-r[2]*r[8]*r[15]+r[2]*r[12]*r[11]+r[3]*r[8]*r[14]-r[3]*r[12]*r[10],i[6]=-r[0]*r[6]*r[15]+r[0]*r[14]*r[7]+r[2]*r[4]*r[15]-r[2]*r[12]*r[7]-r[3]*r[4]*r[14]+r[3]*r[12]*r[6],i[7]=r[0]*r[6]*r[11]-r[0]*r[10]*r[7]-r[2]*r[4]*r[11]+r[2]*r[8]*r[7]+r[3]*r[4]*r[10]-r[3]*r[8]*r[6],i[8]=r[4]*r[9]*r[15]-r[4]*r[13]*r[11]-r[5]*r[8]*r[15]+r[5]*r[12]*r[11]+r[7]*r[8]*r[13]-r[7]*r[12]*r[9],i[9]=-r[0]*r[9]*r[15]+r[0]*r[13]*r[11]+r[1]*r[8]*r[15]-r[1]*r[12]*r[11]-r[3]*r[8]*r[13]+r[3]*r[12]*r[9],i[10]=r[0]*r[5]*r[15]-r[0]*r[13]*r[7]-r[1]*r[4]*r[15]+r[1]*r[12]*r[7]+r[3]*r[4]*r[13]-r[3]*r[12]*r[5],i[11]=-r[0]*r[5]*r[11]+r[0]*r[9]*r[7]+r[1]*r[4]*r[11]-r[1]*r[8]*r[7]-r[3]*r[4]*r[9]+r[3]*r[8]*r[5],i[12]=-r[4]*r[9]*r[14]+r[4]*r[13]*r[10]+r[5]*r[8]*r[14]-r[5]*r[12]*r[10]-r[6]*r[8]*r[13]+r[6]*r[12]*r[9],i[13]=r[0]*r[9]*r[14]-r[0]*r[13]*r[10]-r[1]*r[8]*r[14]+r[1]*r[12]*r[10]+r[2]*r[8]*r[13]-r[2]*r[12]*r[9],i[14]=-r[0]*r[5]*r[14]+r[0]*r[13]*r[6]+r[1]*r[4]*r[14]-r[1]*r[12]*r[6]-r[2]*r[4]*r[13]+r[2]*r[12]*r[5],i[15]=r[0]*r[5]*r[10]-r[0]*r[9]*r[6]-r[1]*r[4]*r[10]+r[1]*r[8]*r[6]+r[2]*r[4]*r[9]-r[2]*r[8]*r[5],s=r[0]*i[0]+r[1]*i[4]+r[2]*i[8]+r[3]*i[12],n=0;n<16;n++)i[n]/=s;return new e(i.slice(0,12))},e.isE=function(e){return Math.abs(e.elements[0]-1)<s.EPSILON&&Math.abs(e.elements[1]-0)<s.EPSILON&&Math.abs(e.elements[2]-0)<s.EPSILON&&Math.abs(e.elements[3]-0)<s.EPSILON&&Math.abs(e.elements[4]-0)<s.EPSILON&&Math.abs(e.elements[5]-1)<s.EPSILON&&Math.abs(e.elements[6]-0)<s.EPSILON&&Math.abs(e.elements[7]-0)<s.EPSILON&&Math.abs(e.elements[8]-0)<s.EPSILON&&Math.abs(e.elements[9]-0)<s.EPSILON&&Math.abs(e.elements[10]-1)<s.EPSILON&&Math.abs(e.elements[11]-0)<s.EPSILON},e.equals=function(e,t){return Math.abs(e.elements[0]-t.elements[0])<s.EPSILON&&Math.abs(e.elements[1]-t.elements[1])<s.EPSILON&&Math.abs(e.elements[2]-t.elements[2])<s.EPSILON&&Math.abs(e.elements[3]-t.elements[3])<s.EPSILON&&Math.abs(e.elements[4]-t.elements[4])<s.EPSILON&&Math.abs(e.elements[5]-t.elements[5])<s.EPSILON&&Math.abs(e.elements[6]-t.elements[6])<s.EPSILON&&Math.abs(e.elements[7]-t.elements[7])<s.EPSILON&&Math.abs(e.elements[8]-t.elements[8])<s.EPSILON&&Math.abs(e.elements[9]-t.elements[9])<s.EPSILON&&Math.abs(e.elements[10]-t.elements[10])<s.EPSILON&&Math.abs(e.elements[11]-t.elements[11])<s.EPSILON},e.prototype.set=function(e,t,n){if(e>3||e<0||t>4||t<0)throw new Error("Wrong coefficients");this.elements[4*e+t]=n},e.prototype.get=function(e,t){if(e>3||e<0||t>4||t<0)throw new Error("Incorrect coeficients");return this.elements[4*e+t]},e.prototype.add=function(t){return e.add(this,t)},e.prototype.sub=function(t){return e.sub(this,t)},e.prototype.translate=function(t){var n=this.elements.slice(0);return n[3]=n[3]+t.x,n[7]=n[7]+t.y,n[11]=n[11]+t.z,new e(n)},e.prototype.scale=function(t){return new e([this.elements[0]*t,this.elements[1]*t,this.elements[2]*t,this.elements[3]*t,this.elements[4]*t,this.elements[5]*t,this.elements[6]*t,this.elements[7]*t,this.elements[8]*t,this.elements[9]*t,this.elements[10]*t,this.elements[11]*t])},e.prototype.project=function(e){return new i.Vec3(this.elements[0]*e.x+this.elements[1]*e.y+this.elements[2]*e.z+this.elements[3],this.elements[4]*e.x+this.elements[5]*e.y+this.elements[6]*e.z+this.elements[7],this.elements[8]*e.x+this.elements[9]*e.y+this.elements[10]*e.z+this.elements[11])},e.prototype.multiply=function(t){var n=[0,0,0,0,0,0,0,0,0,0,0,0];return n[0]=t.elements[0]*this.elements[0]+t.elements[4]*this.elements[1]+t.elements[8]*this.elements[2],n[1]=t.elements[1]*this.elements[0]+t.elements[5]*this.elements[1]+t.elements[9]*this.elements[2],n[2]=t.elements[2]*this.elements[0]+t.elements[6]*this.elements[1]+t.elements[10]*this.elements[2],n[3]=t.elements[3]*this.elements[0]+t.elements[7]*this.elements[1]+t.elements[11]*this.elements[2]+this.elements[3],n[4]=t.elements[0]*this.elements[4]+t.elements[4]*this.elements[5]+t.elements[8]*this.elements[6],n[5]=t.elements[1]*this.elements[4]+t.elements[5]*this.elements[5]+t.elements[9]*this.elements[6],n[6]=t.elements[2]*this.elements[4]+t.elements[6]*this.elements[5]+t.elements[10]*this.elements[6],n[7]=t.elements[3]*this.elements[4]+t.elements[7]*this.elements[5]+t.elements[11]*this.elements[6]+this.elements[7],n[8]=t.elements[0]*this.elements[8]+t.elements[4]*this.elements[9]+t.elements[8]*this.elements[10],n[9]=t.elements[1]*this.elements[8]+t.elements[5]*this.elements[9]+t.elements[9]*this.elements[10],n[10]=t.elements[2]*this.elements[8]+t.elements[6]*this.elements[9]+t.elements[10]*this.elements[10],n[11]=t.elements[3]*this.elements[8]+t.elements[7]*this.elements[9]+t.elements[11]*this.elements[10]+this.elements[11],new e(n)},e.prototype.inverse=function(){return e.inverse(this)},e.prototype.isE=function(){return e.isE(this)},e.prototype.equals=function(t){return e.equals(this,t)},e.prototype.clone=function(){return new e(this.elements)},e.prototype.toString=function(){return"("+this.elements.slice(0,12).map((function(e){return e.toFixed(3)}))+")"},e.prototype.toSymetryCode=function(){function e(e){return(Math.round(1e3*e)/1e3).toString()}function t(e){return Math.abs(e-1)<.001}function n(n,s,i,r){var o=[];return 0!==n&&(t(Math.abs(n))?o.push(n>0?"x":"-x"):o.push(e(n)+"x")),0!==s&&(t(Math.abs(s))?o.push(s>0?"y":"-y"):o.push(e(s)+"y")),0!==i&&(t(Math.abs(i))?o.push(i>0?"z":"-z"):o.push(e(i)+"z")),0!==r&&o.push(e(r)),o.reduce((function(e,t){return t&&"-"===t.charAt(0)?e+t:""===e?t:e+"+"+t}),"")}return n(this.elements[0],this.elements[1],this.elements[2],this.elements[3])+","+n(this.elements[4],this.elements[5],this.elements[6],this.elements[7])+","+n(this.elements[8],this.elements[9],this.elements[10],this.elements[11])},e}();t.Matrix3x4=r},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var s=n(0),i=n(6),r=n(1),o=function(){function e(e){if(e&&e.length){if(16!==e.length)throw new Error("Wrong array length. expected 16");this.elements=e.slice(0)}else this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}return e.equals=function(e,t){return Math.abs(e.elements[0]-t.elements[0])<s.EPSILON&&Math.abs(e.elements[1]-t.elements[1])<s.EPSILON&&Math.abs(e.elements[2]-t.elements[2])<s.EPSILON&&Math.abs(e.elements[3]-t.elements[3])<s.EPSILON&&Math.abs(e.elements[4]-t.elements[4])<s.EPSILON&&Math.abs(e.elements[5]-t.elements[5])<s.EPSILON&&Math.abs(e.elements[6]-t.elements[6])<s.EPSILON&&Math.abs(e.elements[7]-t.elements[7])<s.EPSILON&&Math.abs(e.elements[8]-t.elements[8])<s.EPSILON&&Math.abs(e.elements[9]-t.elements[9])<s.EPSILON&&Math.abs(e.elements[10]-t.elements[10])<s.EPSILON&&Math.abs(e.elements[11]-t.elements[11])<s.EPSILON&&Math.abs(e.elements[12]-t.elements[12])<s.EPSILON&&Math.abs(e.elements[13]-t.elements[13])<s.EPSILON&&Math.abs(e.elements[14]-t.elements[14])<s.EPSILON&&Math.abs(e.elements[15]-t.elements[15])<s.EPSILON},e.fromScale=function(t){return new e([t,0,0,0,0,t,0,0,0,0,t,0,0,0,0,1])},e.fromQuaternion=function(t){var n=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],s=t.X()+t.X(),i=t.Y()+t.Y(),r=t.Z()+t.Z(),o=t.X()*s,l=t.X()*i,h=t.X()*r,u=t.Y()*i,m=t.Y()*r,a=t.Z()*r,c=t.W()*s,f=t.W()*i,g=t.W()*r;return n[3]=n[7]=n[11]=n[12]=n[13]=n[14]=0,n[15]=1,n[0]=1-(u+a),n[4]=l+g,n[8]=h-f,n[1]=l-g,n[5]=1-(o+a),n[9]=m+c,n[2]=h+f,n[6]=m-c,n[10]=1-(o+u),new e(n)},e.fromMultiplication=function(t,n){var s=t.elements,i=n.elements;return new e([s[0]*i[0]+s[1]*i[4]+s[2]*i[8]+s[3]*i[12],s[0]*i[1]+s[1]*i[5]+s[2]*i[9]+s[3]*i[13],s[0]*i[2]+s[1]*i[6]+s[2]*i[10]+s[3]*i[14],s[0]*i[3]+s[1]*i[7]+s[2]*i[11]+s[3]*i[15],s[4]*i[0]+s[5]*i[4]+s[6]*i[8]+s[7]*i[12],s[4]*i[1]+s[5]*i[5]+s[6]*i[9]+s[7]*i[13],s[4]*i[2]+s[5]*i[6]+s[6]*i[10]+s[7]*i[14],s[4]*i[3]+s[5]*i[7]+s[6]*i[11]+s[7]*i[15],s[8]*i[0]+s[9]*i[4]+s[10]*i[8]+s[11]*i[12],s[8]*i[1]+s[9]*i[5]+s[10]*i[9]+s[11]*i[13],s[8]*i[2]+s[9]*i[6]+s[10]*i[10]+s[11]*i[14],s[8]*i[3]+s[9]*i[7]+s[10]*i[11]+s[11]*i[15],s[12]*i[0]+s[13]*i[4]+s[14]*i[8]+s[15]*i[12],s[12]*i[1]+s[13]*i[5]+s[14]*i[9]+s[15]*i[13],s[12]*i[2]+s[13]*i[6]+s[14]*i[10]+s[15]*i[14],s[12]*i[3]+s[13]*i[7]+s[14]*i[11]+s[15]*i[15]])},e.fromTranslation=function(t){return new e([1,0,0,0,0,1,0,0,0,0,1,0,t.x,t.y,t.z,1])},e.fromRotation=function(t,n){var s=i.Quaternion.fromAxisAngle(t,n);return e.fromQuaternion(s)},e.prototype.toString=function(){return"("+this.elements.slice(0,16).map((function(e){return e.toFixed(3)}))+")"},e.prototype.set=function(e,t,n){if(e>4||e<0||t>4||t<0)throw new Error("Incorrect coeficients");this.elements[e+4*t]=n},e.prototype.get=function(e,t){if(e>4||e<0||t>4||t<0)throw new Error("Incorrect coeficients");return this.elements[e+4*t]},e.prototype.project=function(e){var t=this.elements[0]*e.x+this.elements[4]*e.y+this.elements[8]*e.z+this.elements[12],n=this.elements[1]*e.x+this.elements[5]*e.y+this.elements[9]*e.z+this.elements[13],s=this.elements[2]*e.x+this.elements[6]*e.y+this.elements[10]*e.z+this.elements[14];return new r.Vec3(t,n,s)},e.prototype.rotate=function(t,n){var s=i.Quaternion.fromAxisAngle(t,n),r=e.fromQuaternion(s);return e.fromMultiplication(this,r)},e.prototype.translate=function(t){var n=this.elements;return new e([n[0],n[1],n[2],n[3],n[4],n[5],n[6],n[7],n[8],n[9],n[10],n[11],n[12]+t.x,n[13]+t.y,n[14]+t.z,n[15]])},e.prototype.extractTranslation=function(){return new r.Vec3(this.elements[12],this.elements[13],this.elements[14])},e.prototype.extractScale=function(){var t=this.elements;return new e([t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8],t[9],t[10],t[11],0,0,0,1]).project(new r.Vec3(1,1,1)).length/Math.sqrt(3)},e.prototype.inverse=function(){var t,n,s=new Array(16),i=this.elements;for(s[0]=i[5]*i[10]*i[15]-i[5]*i[14]*i[11]-i[6]*i[9]*i[15]+i[6]*i[13]*i[11]+i[7]*i[9]*i[14]-i[7]*i[13]*i[10],s[1]=-i[1]*i[10]*i[15]+i[1]*i[14]*i[11]+i[2]*i[9]*i[15]-i[2]*i[13]*i[11]-i[3]*i[9]*i[14]+i[3]*i[13]*i[10],s[2]=i[1]*i[6]*i[15]-i[1]*i[14]*i[7]-i[2]*i[5]*i[15]+i[2]*i[13]*i[7]+i[3]*i[5]*i[14]-i[3]*i[13]*i[6],s[3]=-i[1]*i[6]*i[11]+i[1]*i[10]*i[7]+i[2]*i[5]*i[11]-i[2]*i[9]*i[7]-i[3]*i[5]*i[10]+i[3]*i[9]*i[6],s[4]=-i[4]*i[10]*i[15]+i[4]*i[14]*i[11]+i[6]*i[8]*i[15]-i[6]*i[12]*i[11]-i[7]*i[8]*i[14]+i[7]*i[12]*i[10],s[5]=i[0]*i[10]*i[15]-i[0]*i[14]*i[11]-i[2]*i[8]*i[15]+i[2]*i[12]*i[11]+i[3]*i[8]*i[14]-i[3]*i[12]*i[10],s[6]=-i[0]*i[6]*i[15]+i[0]*i[14]*i[7]+i[2]*i[4]*i[15]-i[2]*i[12]*i[7]-i[3]*i[4]*i[14]+i[3]*i[12]*i[6],s[7]=i[0]*i[6]*i[11]-i[0]*i[10]*i[7]-i[2]*i[4]*i[11]+i[2]*i[8]*i[7]+i[3]*i[4]*i[10]-i[3]*i[8]*i[6],s[8]=i[4]*i[9]*i[15]-i[4]*i[13]*i[11]-i[5]*i[8]*i[15]+i[5]*i[12]*i[11]+i[7]*i[8]*i[13]-i[7]*i[12]*i[9],s[9]=-i[0]*i[9]*i[15]+i[0]*i[13]*i[11]+i[1]*i[8]*i[15]-i[1]*i[12]*i[11]-i[3]*i[8]*i[13]+i[3]*i[12]*i[9],s[10]=i[0]*i[5]*i[15]-i[0]*i[13]*i[7]-i[1]*i[4]*i[15]+i[1]*i[12]*i[7]+i[3]*i[4]*i[13]-i[3]*i[12]*i[5],s[11]=-i[0]*i[5]*i[11]+i[0]*i[9]*i[7]+i[1]*i[4]*i[11]-i[1]*i[8]*i[7]-i[3]*i[4]*i[9]+i[3]*i[8]*i[5],s[12]=-i[4]*i[9]*i[14]+i[4]*i[13]*i[10]+i[5]*i[8]*i[14]-i[5]*i[12]*i[10]-i[6]*i[8]*i[13]+i[6]*i[12]*i[9],s[13]=i[0]*i[9]*i[14]-i[0]*i[13]*i[10]-i[1]*i[8]*i[14]+i[1]*i[12]*i[10]+i[2]*i[8]*i[13]-i[2]*i[12]*i[9],s[14]=-i[0]*i[5]*i[14]+i[0]*i[13]*i[6]+i[1]*i[4]*i[14]-i[1]*i[12]*i[6]-i[2]*i[4]*i[13]+i[2]*i[12]*i[5],s[15]=i[0]*i[5]*i[10]-i[0]*i[9]*i[6]-i[1]*i[4]*i[10]+i[1]*i[8]*i[6]+i[2]*i[4]*i[9]-i[2]*i[8]*i[5],n=i[0]*s[0]+i[1]*s[4]+i[2]*s[8]+i[3]*s[12],t=0;t<16;t++)s[t]/=n;return new e(s)},e.prototype.determinant=function(){return this.get(0,3)*this.get(1,2)*this.get(2,1)*this.get(3,0)-this.get(0,1)*this.get(1,3)*this.get(2,1)*this.get(3,0)-this.get(0,3)*this.get(1,1)*this.get(2,2)*this.get(3,0)+this.get(0,1)*this.get(1,3)*this.get(2,2)*this.get(3,0)+this.get(0,1)*this.get(1,1)*this.get(2,3)*this.get(3,0)-this.get(0,1)*this.get(1,2)*this.get(2,3)*this.get(3,0)-this.get(0,3)*this.get(1,2)*this.get(2,0)*this.get(3,1)+this.get(0,1)*this.get(1,3)*this.get(2,0)*this.get(3,1)+this.get(0,3)*this.get(1,0)*this.get(2,2)*this.get(3,1)-this.get(0,0)*this.get(1,3)*this.get(2,2)*this.get(3,1)-this.get(0,1)*this.get(1,0)*this.get(2,3)*this.get(3,1)+this.get(0,0)*this.get(1,2)*this.get(2,3)*this.get(3,1)+this.get(0,3)*this.get(1,1)*this.get(2,0)*this.get(3,2)-this.get(0,1)*this.get(1,3)*this.get(2,0)*this.get(3,2)-this.get(0,3)*this.get(1,0)*this.get(2,1)*this.get(3,2)+this.get(0,0)*this.get(1,3)*this.get(2,1)*this.get(3,2)+this.get(0,1)*this.get(1,0)*this.get(2,3)*this.get(3,2)-this.get(0,0)*this.get(1,1)*this.get(2,3)*this.get(3,2)-this.get(0,1)*this.get(1,1)*this.get(2,0)*this.get(3,3)+this.get(0,1)*this.get(1,2)*this.get(2,0)*this.get(3,3)+this.get(0,1)*this.get(1,0)*this.get(2,1)*this.get(3,3)-this.get(0,0)*this.get(1,2)*this.get(2,1)*this.get(3,3)-this.get(0,1)*this.get(1,0)*this.get(2,2)*this.get(3,3)+this.get(0,0)*this.get(1,1)*this.get(2,2)*this.get(3,3)},e.prototype.clone=function(){return new e(this.elements)},e.prototype.equals=function(t){return e.equals(this,t)},e}();t.Transform3D=o},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var s=function(){function e(e,t,n,s){this.data=[e,t,n,s]}return e.fromAxisAngle=function(t,n){var s=.5*n,i=t.scale(Math.sin(s));return new e(i.x,i.y,i.z,Math.cos(s))},e.prototype.X=function(){return this.data[0]},e.prototype.Y=function(){return this.data[1]},e.prototype.Z=function(){return this.data[2]},e.prototype.W=function(){return this.data[3]},e}();t.Quaternion=s},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var s=n(0),i=function(){function e(e,t){this.x=e,this.y=t}return e.add=function(t,n){return new e(t.x+n.x,t.y+n.y)},e.sub=function(t,n){return new e(t.x-n.x,t.y-n.y)},e.dot=function(e,t){return e.x*t.x+e.y*t.y},e.equals=function(e,t){return Math.abs(e.x-t.x)<s.EPSILON&&Math.abs(e.y-t.y)<s.EPSILON},Object.defineProperty(e.prototype,"length",{get:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"lengthPow2",{get:function(){return this.x*this.x+this.y*this.y},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"avg",{get:function(){return(this.x+this.y)/3},enumerable:!0,configurable:!0}),e.prototype.scale=function(t){return new e(this.x*t,this.y*t)},e.prototype.normalize=function(){var t=this.length;if(0===t)throw new Error("Can not normalize zero vector");return new e(this.x/t,this.y/t)},e.prototype.dot=function(t){return e.dot(this,t)},e.prototype.sub=function(t){return e.sub(this,t)},e.prototype.add=function(t){return e.add(this,t)},e.prototype.equals=function(t){return e.equals(this,t)},e.prototype.clone=function(){return new e(this.x,this.y)},e.prototype.toString=function(){return"("+this.x.toFixed(3)+","+this.y.toFixed(3)+")"},e}();t.Vec2=i}])}));
2
- //# sourceMappingURL=math.js.map
package/dist/math.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["webpack://math/webpack/universalModuleDefinition","webpack://math/webpack/bootstrap","webpack://math/./node_modules/@chemistry/common/dist/common.js","webpack://math/./src/vec3.ts","webpack://math/./src/index.ts","webpack://math/./src/matrix3x3.ts","webpack://math/./src/matrix3x4.ts","webpack://math/./src/transform3d.ts","webpack://math/./src/quaternion.ts","webpack://math/./src/vec2.ts"],"names":["root","factory","exports","module","define","amd","self","this","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","e","default","EPSILON","x","y","z","add","v1","v2","Vec3","sub","dot","cross","equals","Math","abs","getDecimal","floor","sqrt","scale","num","normalize","len","length","Error","vec","vector","clone","toString","toFixed","elements","slice","m1","m2","inverse","matrix","determinant","Matrix3x3","set","j","val","mult","project","multiply","result","join","matrix1","matrix2","Matrix3x4","det","isE","translate","v","map","element","toSymetryCode","formatSymNumber","round","closeToOne","codePart1","arr","push","reduce","curr","next","charAt","fromScale","Transform3D","fromQuaternion","quaternion","x2","X","y2","Y","z2","Z","xx","xy","xz","yy","yz","zz","wx","W","wy","wz","fromMultiplication","transform1","transform2","fromTranslation","translation","fromRotation","axis","angle","quat","Quaternion","fromAxisAngle","row","col","position","rotate","extractTranslation","extractScale","Array","transform","w","data","f","pt","sin","cos","Vec2"],"mappings":"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AAE,IAAMA,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,GAAKA,EAAE,GAAKA,EAAE,IACpEA,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,GAAKA,EAAE,GAAKA,EAAE,IAAMA,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAEhEU,EAAE,GAAMV,EAAE,GAAKA,EAAE,GAAMA,EAAE,IAAMA,EAAE,GAAKA,EAAE,IAAMA,EAAE,GAAMA,EAAE,GAAKA,EAAE,GAAKA,EAAE,IACpEA,EAAE,GAAKA,EAAE,IAAMA,EAAE,GAAMA,EAAE,GAAKA,EAAE,GAAKA,EAAE,IAAMA,EAAE,GAAKA,EAAE,IAAMA,EAAE,GAEhEU,EAAE,IAAMV,EAAE,GAAKA,EAAE,GAAMA,EAAE,IAAMA,EAAE,GAAKA,EAAE,IAAMA,EAAE,GAAMA,EAAE,GAAKA,EAAE,GAAKA,EAAE,IACpEA,EAAE,GAAKA,EAAE,GAAMA,EAAE,GAAMA,EAAE,GAAKA,EAAE,GAAKA,EAAE,IAAMA,EAAE,GAAKA,EAAE,GAAMA,EAAE,GAEhEU,EAAE,IAAMV,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,GAAKA,EAAE,GAAKA,EAAE,IACpEA,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,GAAKA,EAAE,GAAKA,EAAE,IAAMA,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAEhEU,EAAE,GAAMV,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,GAAKA,EAAE,GAAKA,EAAE,IACpEA,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,GAAKA,EAAE,GAAKA,EAAE,IAAMA,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAEhEU,EAAE,IAAMV,EAAE,GAAKA,EAAE,GAAMA,EAAE,IAAMA,EAAE,GAAKA,EAAE,IAAMA,EAAE,GAAMA,EAAE,GAAKA,EAAE,GAAKA,EAAE,IACpEA,EAAE,GAAKA,EAAE,IAAMA,EAAE,GAAMA,EAAE,GAAKA,EAAE,GAAKA,EAAE,IAAMA,EA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G,GAAKjB,KAAKiB,IAAI,EAAG,GAAKjB,KAAKiB,IAAI,EAAG,GAC/DjB,KAAKiB,IAAI,EAAG,GAAKjB,KAAKiB,IAAI,EAAG,GAAKjB,KAAKiB,IAAI,EAAG,GAAKjB,KAAKiB,IAAI,EAAG,GAC/DjB,KAAKiB,IAAI,EAAG,GAAKjB,KAAKiB,IAAI,EAAG,GAAKjB,KAAKiB,IAAI,EAAG,GAAKjB,KAAKiB,IAAI,EAAG,GAC/DjB,KAAKiB,IAAI,EAAG,GAAKjB,KAAKiB,IAAI,EAAG,GAAKjB,KAAKiB,IAAI,EAAG,GAAKjB,KAAKiB,IAAI,EAAG,GAC/DjB,KAAKiB,IAAI,EAAG,GAAKjB,KAAKiB,IAAI,EAAG,GAAKjB,KAAKiB,IAAI,EAAG,GAAKjB,KAAKiB,IAAI,EAAG,GAC/DjB,KAAKiB,IAAI,EAAG,GAAKjB,KAAKiB,IAAI,EAAG,GAAKjB,KAAKiB,IAAI,EAAG,GAAKjB,KAAKiB,IAAI,EAAG,GAC/DjB,KAAKiB,IAAI,EAAG,GAAKjB,KAAKiB,IAAI,EAAG,GAAKjB,KAAKiB,IAAI,EAAG,GAAKjB,KAAKiB,IAAI,EAAG,GAC/DjB,KAAKiB,IAAI,EAAG,GAAKjB,KAAKiB,IAAI,EAAG,GAAKjB,KAAKiB,IAAI,EAAG,GAAKjB,KAAKiB,IAAI,EAAG,GAC/DjB,KAAKiB,IAAI,EAAG,GAAKjB,KAAKiB,IAAI,EAAG,GAAKjB,KAAKiB,IAAI,EAAG,GAAKjB,KAAKiB,IAAI,EAAG,GAC/DjB,KAAKiB,IAAI,EAAG,GAAKjB,KAAKiB,IAAI,EAAG,GAAKjB,KAAKiB,IAAI,EAAG,GAAKjB,KAAKiB,IAAI,EAAG,GAC/DjB,KAAKiB,IAAI,EAAG,GAAKjB,KAAKiB,IAAI,EAAG,GAAKjB,KAAKiB,IAAI,EAAG,GAAKjB,KAAKiB,IAAI,EAAG,GAC/DjB,KAAKiB,IAAI,EAAG,GAAKjB,KAAKiB,IAAI,EAAG,GAAKjB,KAAKiB,IAAI,EAAG,GAAKjB,KAAKiB,IAAI,EAAG,GAC/DjB,KAAKiB,IAAI,EAAG,GAAKjB,KAAKiB,IAAI,EAAG,GAAKjB,KAAKiB,IAAI,EAAG,GAAKjB,KAAKiB,IAAI,EAAG,GAC/DjB,KAAKiB,IAAI,EAAG,GAAKjB,KAAKiB,IAAI,EAAG,GAAKjB,KAAKiB,IAAI,EAAG,GAAKjB,KAAKiB,IAAI,EAAG,GAC/DjB,KAAKiB,IAAI,EAAG,GAAKjB,KAAKiB,IAAI,EAAG,GAAKjB,KAAKiB,IAAI,EAAG,GAAKjB,KAAKiB,IAAI,EAAG,IAMlE,YAAA8C,MAAP,WACI,OAAO,IAAIwC,EAAYvG,KAAKkE,WAGzB,YAAAjB,OAAP,SAAc2F,GACV,OAAOrC,EAAYtD,OAAOjD,KAAM4I,IAExC,EA5QA,GAAa,EAAArC,e,8ECRb,iBAaI,WAAYhE,EAAWC,EAAWC,EAAWoG,GACzC7I,KAAK8I,KAAO,CAACvG,EAAGC,EAAGC,EAAGoG,GA8B9B,OAvCkB,EAAAT,cAAd,SAA4BJ,EAAYC,GACpC,IAAMc,EAAY,GAARd,EACJe,EAAKhB,EAAKzE,MAAML,KAAK+F,IAAIF,IAC/B,OAAO,IAAIZ,EAAWa,EAAGzG,EAAGyG,EAAGxG,EAAGwG,EAAGvG,EAAGS,KAAKgG,IAAIH,KAY9C,YAAApC,EAAP,WACI,OAAO3G,KAAK8I,KAAK,IAMd,YAAAjC,EAAP,WACI,OAAO7G,KAAK8I,KAAK,IAMd,YAAA/B,EAAP,WACI,OAAO/G,KAAK8I,KAAK,IAMd,YAAAvB,EAAP,WACI,OAAOvH,KAAK8I,KAAK,IAEzB,EA5CA,GAAa,EAAAX,c,8ECJb,WAOA,aAsBI,WAAY5F,EAAWC,GACnBxC,KAAKuC,EAAIA,EACTvC,KAAKwC,EAAIA,EAmDjB,OAzEkB,EAAAE,IAAd,SAAkBC,EAAUC,GACxB,OAAO,IAAIuG,EAAKxG,EAAGJ,EAAIK,EAAGL,EAAGI,EAAGH,EAAII,EAAGJ,IAG7B,EAAAM,IAAd,SAAkBH,EAAUC,GACxB,OAAO,IAAIuG,EAAKxG,EAAGJ,EAAIK,EAAGL,EAAGI,EAAGH,EAAII,EAAGJ,IAG7B,EAAAO,IAAd,SAAkBJ,EAAUC,GACxB,OAAQD,EAAGJ,EAAIK,EAAGL,EAAKI,EAAGH,EAAII,EAAGJ,GAGvB,EAAAS,OAAd,SAAqBN,EAAUC,GAC3B,OAAQM,KAAKC,IAAIR,EAAGJ,EAAIK,EAAGL,GAAK,EAAAD,SACxBY,KAAKC,IAAIR,EAAGH,EAAII,EAAGJ,GAAK,EAAAF,SAWpC,sBAAW,qBAAM,C,IAAjB,WACI,OAAOY,KAAKI,KAAKtD,KAAKuC,EAAIvC,KAAKuC,EAAIvC,KAAKwC,EAAIxC,KAAKwC,I,gCAGrD,sBAAW,yBAAU,C,IAArB,WACI,OAAQxC,KAAKuC,EAAIvC,KAAKuC,EAAIvC,KAAKwC,EAAIxC,KAAKwC,G,gCAG5C,sBAAW,kBAAG,C,IAAd,WACI,OAAQxC,KAAKuC,EAAIvC,KAAKwC,GAAK,G,gCAGxB,YAAAe,MAAP,SAAaC,GACT,OAAO,IAAI2F,EAAKnJ,KAAKuC,EAAIiB,EAAKxD,KAAKwC,EAAIgB,IAGpC,YAAAC,UAAP,WACI,IAAMC,EAAM1D,KAAK2D,OACjB,GAAY,IAARD,EACA,MAAM,IAAIE,MAAM,iCAEhB,OAAO,IAAIuF,EAAKnJ,KAAKuC,EAAImB,EAAK1D,KAAKwC,EAAIkB,IAIxC,YAAAX,IAAP,SAAWc,GACP,OAAOsF,EAAKpG,IAAI/C,KAAM6D,IAGnB,YAAAf,IAAP,SAAWe,GACP,OAAOsF,EAAKrG,IAAI9C,KAAM6D,IAGnB,YAAAnB,IAAP,SAAWoB,GACP,OAAOqF,EAAKzG,IAAI1C,KAAM8D,IAGnB,YAAAb,OAAP,SAAcY,GACV,OAAOsF,EAAKlG,OAAOjD,KAAM6D,IAGtB,YAAAE,MAAP,WACI,OAAO,IAAIoF,EAAKnJ,KAAKuC,EAAGvC,KAAKwC,IAG1B,YAAAwB,SAAP,WACI,MAAO,IAAMhE,KAAKuC,EAAE0B,QAAQ,GAAK,IAAMjE,KAAKwC,EAAEyB,QAAQ,GAAK,KAEnE,EA3EA,GAAa,EAAAkF","file":"math.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"math\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"math\"] = factory();\n\telse\n\t\troot[\"math\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 2);\n","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(\"common\",[],t):\"object\"==typeof exports?exports.common=t():e.common=t()}(\"undefined\"!=typeof self?self:this,function(){return function(e){var t={};function n(o){if(t[o])return t[o].exports;var r=t[o]={i:o,l:!1,exports:{}};return e[o].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},n.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var r in e)n.d(o,r,function(t){return e[t]}.bind(null,r));return o},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\"a\",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=\"\",n(n.s=0)}([function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),function(e){for(var n in e)t.hasOwnProperty(n)||(t[n]=e[n])}(n(1))},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.EPSILON=1e-8}])});\n//# sourceMappingURL=common.js.map","import { EPSILON, ICloneable, IEquatable } from \"@chemistry/common\";\n\nexport interface IVec3 {\n x: number;\n y: number;\n z: number;\n}\n\nexport class Vec3 implements IVec3, ICloneable<Vec3>, IEquatable<Vec3> {\n\n public static add(v1: Vec3, v2: Vec3): Vec3 {\n return new Vec3(v1.x + v2.x, v1.y + v2.y, v1.z + v2.z);\n }\n\n public static sub(v1: Vec3, v2: Vec3): Vec3 {\n return new Vec3(v1.x - v2.x, v1.y - v2.y, v1.z - v2.z);\n }\n\n public static dot(v1: Vec3, v2: Vec3): number {\n return (v1.x * v2.x + v1.y * v2.y + v1.z * v2.z);\n }\n\n public static cross(v1: Vec3, v2: Vec3): Vec3 {\n return new Vec3(v1.y * v2.z - v1.z * v2.y, v1.z * v2.x - v1.x * v2.z, v1.x * v2.y - v1.y * v2.x);\n }\n\n public static equals(v1: Vec3, v2: Vec3): boolean {\n return (Math.abs(v1.x - v2.x) < EPSILON)\n && (Math.abs(v1.y - v2.y) < EPSILON)\n && (Math.abs(v1.z - v2.z) < EPSILON);\n }\n\n public static getDecimal(v1: Vec3): Vec3 {\n const x: number = v1.x - Math.floor(v1.x);\n const y: number = v1.y - Math.floor(v1.y);\n const z: number = v1.z - Math.floor(v1.z);\n return new Vec3(x, y, z);\n }\n\n public x: number;\n public y: number;\n public z: number;\n\n constructor(x: number, y: number, z: number) {\n this.x = x;\n this.y = y;\n this.z = z;\n }\n\n public get length(): number {\n return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);\n }\n\n public get lengthPow2(): number {\n return (this.x * this.x + this.y * this.y + this.z * this.z);\n }\n\n public get avg(): number {\n return (this.x + this.y + this.z) / 3;\n }\n\n public scale(num: number): Vec3 {\n return new Vec3(this.x * num, this.y * num, this.z * num);\n }\n\n public normalize() {\n const len = this.length;\n if (len === 0) {\n throw new Error(\"Can not normalize zero vector\");\n } else {\n return new Vec3(this.x / len, this.y / len, this.z / len);\n }\n }\n\n public dot(vec: Vec3): number {\n return Vec3.dot(this, vec);\n }\n\n public sub(vec: Vec3): Vec3 {\n return Vec3.sub(this, vec);\n }\n\n public add(vector: Vec3): Vec3 {\n return Vec3.add(this, vector);\n }\n\n public equals(vec: Vec3) {\n return Vec3.equals(this, vec);\n }\n\n public clone() {\n return new Vec3(this.x, this.y, this.z);\n }\n\n public toString() {\n return \"(\" + this.x.toFixed(3) + \",\" + this.y.toFixed(3) + \",\" + this.z.toFixed(3) + \")\";\n }\n}\n","export * from \"./matrix3x3\";\nexport * from \"./matrix3x4\";\nexport * from \"./transform3d\";\nexport * from \"./vec3\";\nexport * from \"./vec2\";\n","import { EPSILON, ICloneable, IEquatable } from \"@chemistry/common\";\nimport { Vec3 } from \"./vec3\";\n\nexport class Matrix3x3 implements ICloneable<Matrix3x3>, IEquatable<Matrix3x3> {\n\n public static equals(m1: Matrix3x3, m2: Matrix3x3): boolean {\n return (Math.abs(m1.elements[0] - m2.elements[0]) < EPSILON)\n && (Math.abs(m1.elements[1] - m2.elements[1]) < EPSILON)\n && (Math.abs(m1.elements[2] - m2.elements[2]) < EPSILON)\n && (Math.abs(m1.elements[3] - m2.elements[3]) < EPSILON)\n && (Math.abs(m1.elements[4] - m2.elements[4]) < EPSILON)\n && (Math.abs(m1.elements[5] - m2.elements[5]) < EPSILON)\n && (Math.abs(m1.elements[6] - m2.elements[6]) < EPSILON)\n && (Math.abs(m1.elements[7] - m2.elements[7]) < EPSILON)\n && (Math.abs(m1.elements[8] - m2.elements[8]) < EPSILON);\n }\n\n public static inverse(matrix: Matrix3x3): Matrix3x3 {\n\n const d = matrix.determinant();\n if (d === 0) {\n throw new Error(\"Matrix not invertable\");\n }\n\n return new Matrix3x3([\n (matrix.get(1, 1) * matrix.get(2, 2) - matrix.get(1, 2) * matrix.get(2, 1)) / d,\n (-matrix.get(0, 1) * matrix.get(2, 2) + matrix.get(0, 2) * matrix.get(2, 1)) / d,\n (matrix.get(0, 1) * matrix.get(1, 2) - matrix.get(0, 2) * matrix.get(1, 1)) / d,\n (-matrix.get(1, 0) * matrix.get(2, 2) + matrix.get(1, 2) * matrix.get(2, 0)) / d,\n (matrix.get(0, 0) * matrix.get(2, 2) - matrix.get(0, 2) * matrix.get(2, 0)) / d,\n (-matrix.get(0, 0) * matrix.get(1, 2) + matrix.get(0, 2) * matrix.get(1, 0)) / d,\n (matrix.get(1, 0) * matrix.get(2, 1) - matrix.get(1, 1) * matrix.get(2, 0)) / d,\n (-matrix.get(0, 0) * matrix.get(2, 1) + matrix.get(0, 1) * matrix.get(2, 0)) / d,\n (matrix.get(0, 0) * matrix.get(1, 1) - matrix.get(0, 1) * matrix.get(1, 0)) / d,\n ]);\n }\n\n // | 0 1 2 |\n // | 3 4 5 |\n // | 6 7 8 |\n protected elements: number[];\n\n constructor(elements?: number[]) {\n this.elements = (elements && elements.length === 9) ? elements.slice(0) : [1, 0, 0, 0, 1, 0, 0, 0, 1];\n }\n\n /**\n * Set value to specified element of the matrix\n */\n public set(i: number, j: number, val: number) {\n if ((i > 3) || (i < 0) || (j > 3) || (j < 0)) {\n throw new Error(\"Wrong coefficients\");\n }\n this.elements[i * 3 + j] = val;\n }\n\n /**\n * return specified element of the matrix\n */\n public get(i: number, j: number): number {\n if ((i > 3) || (i < 0) || (j > 3) || (j < 0)) {\n throw new Error(\"Wrong coefficients\");\n }\n return this.elements[i * 3 + j];\n }\n\n public scale(mult: number): Matrix3x3 {\n return new Matrix3x3 ([\n this.elements[0] * mult,\n this.elements[1] * mult,\n this.elements[2] * mult,\n this.elements[3] * mult,\n this.elements[4] * mult,\n this.elements[5] * mult,\n this.elements[6] * mult,\n this.elements[7] * mult,\n this.elements[8] * mult,\n ]);\n }\n\n public project(mult: Vec3): Vec3 {\n return new Vec3 (\n this.elements[0] * mult.x + this.elements[1] * mult.y + this.elements[2] * mult.z,\n this.elements[3] * mult.x + this.elements[4] * mult.y + this.elements[5] * mult.z,\n this.elements[6] * mult.x + this.elements[7] * mult.y + this.elements[8] * mult.z,\n );\n }\n\n /**\n * Returns matrix multiplication result to scalar, vector or another matrix\n */\n public multiply(mult: Matrix3x3): Matrix3x3 {\n return new Matrix3x3([\n this.elements[0] * mult.elements[0] + this.elements[3] * mult.elements[1] + this.elements[6] * mult.elements[2],\n this.elements[1] * mult.elements[0] + this.elements[4] * mult.elements[1] + this.elements[7] * mult.elements[2],\n this.elements[2] * mult.elements[0] + this.elements[5] * mult.elements[1] + this.elements[8] * mult.elements[2],\n this.elements[0] * mult.elements[3] + this.elements[3] * mult.elements[4] + this.elements[6] * mult.elements[5],\n this.elements[1] * mult.elements[3] + this.elements[4] * mult.elements[4] + this.elements[7] * mult.elements[5],\n this.elements[2] * mult.elements[3] + this.elements[5] * mult.elements[4] + this.elements[8] * mult.elements[5],\n this.elements[0] * mult.elements[6] + this.elements[3] * mult.elements[7] + this.elements[6] * mult.elements[8],\n this.elements[1] * mult.elements[6] + this.elements[4] * mult.elements[7] + this.elements[7] * mult.elements[8],\n this.elements[2] * mult.elements[6] + this.elements[5] * mult.elements[7] + this.elements[8] * mult.elements[8],\n ]);\n }\n\n /**\n * Returns matrix determinant\n */\n public determinant(): number {\n let result = this.get(0, 0) * (this.get(1, 1) * this.get(2, 2) - this.get(2, 1) * this.get(1, 2));\n result -= this.get(1, 0) * (this.get(0, 1) * this.get(2, 2) - this.get(2, 1) * this.get(0, 2));\n result += this.get(2, 0) * (this.get(0, 1) * this.get(1, 2) - this.get(1, 1) * this.get(0, 2));\n return result;\n }\n\n /**\n * Clone the matrix\n */\n public clone(): Matrix3x3 {\n return new Matrix3x3(this.elements.slice(0));\n }\n\n /**\n * Compare 2 matrixes\n */\n public equals(matrix: Matrix3x3): boolean {\n return Matrix3x3.equals(this, matrix);\n }\n\n /**\n * Returns string representation of the matrix\n */\n public toString(): string {\n return \"(\" + [\n this.elements[0].toFixed(3),\n this.elements[1].toFixed(3),\n this.elements[2].toFixed(3),\n this.elements[3].toFixed(3),\n this.elements[4].toFixed(3),\n this.elements[5].toFixed(3),\n this.elements[6].toFixed(3),\n this.elements[7].toFixed(3),\n this.elements[8].toFixed(3),\n ].join(\",\") + \")\";\n }\n}\n","import { EPSILON, ICloneable, IEquatable } from \"@chemistry/common\";\nimport { Vec3 } from \"./vec3\";\n\n/**\n * Simple Class to work with special type of matrix.\n * | x1 x2 x3 x4 |\n * | x5 x6 x7 x8 |\n * | x8 x10 x11 x12|\n * | 0 0 0 1 |\n */\nexport class Matrix3x4 implements ICloneable<Matrix3x4>, IEquatable<Matrix3x4> {\n\n public static add(matrix1: Matrix3x4, matrix2: Matrix3x4): Matrix3x4 {\n const m1 = matrix1.elements;\n const m2 = matrix2.elements;\n return new Matrix3x4([\n m1[0] + m2[0],\n m1[1] + m2[1],\n m1[2] + m2[2],\n m1[3] + m2[3],\n m1[4] + m2[4],\n m1[5] + m2[5],\n m1[6] + m2[6],\n m1[7] + m2[7],\n m1[8] + m2[8],\n m1[9] + m2[9],\n m1[10] + m2[10],\n m1[11] + m2[11],\n ]);\n }\n\n public static sub(matrix1: Matrix3x4, matrix2: Matrix3x4): Matrix3x4 {\n const m1 = matrix1.elements;\n const m2 = matrix2.elements;\n return new Matrix3x4([\n m1[0] - m2[0],\n m1[1] - m2[1],\n m1[2] - m2[2],\n m1[3] - m2[3],\n m1[4] - m2[4],\n m1[5] - m2[5],\n m1[6] - m2[6],\n m1[7] - m2[7],\n m1[8] - m2[8],\n m1[9] - m2[9],\n m1[10] - m2[10],\n m1[11] - m2[11],\n ]);\n }\n\n public static inverse(matrix: Matrix3x4): Matrix3x4 {\n const r = [];\n let i;\n let det;\n const m = matrix.elements.slice(0, 12);\n m[12] = 0;\n m[13] = 0;\n m[14] = 0;\n m[15] = 1;\n\n r[0] = m[5] * m[10] * m[15] - m[5] * m[14] * m[11] - m[6] * m[9] * m[15]\n + m[6] * m[13] * m[11] + m[7] * m[9] * m[14] - m[7] * m[13] * m[10];\n\n r[1] = -m[1] * m[10] * m[15] + m[1] * m[14] * m[11] + m[2] * m[9] * m[15]\n - m[2] * m[13] * m[11] - m[3] * m[9] * m[14] + m[3] * m[13] * m[10];\n\n r[2] = m[1] * m[6] * m[15] - m[1] * m[14] * m[7] - m[2] * m[5] * m[15]\n + m[2] * m[13] * m[7] + m[3] * m[5] * m[14] - m[3] * m[13] * m[6];\n\n r[3] = -m[1] * m[6] * m[11] + m[1] * m[10] * m[7] + m[2] * m[5] * m[11]\n - m[2] * m[9] * m[7] - m[3] * m[5] * m[10] + m[3] * m[9] * m[6];\n\n r[4] = -m[4] * m[10] * m[15] + m[4] * m[14] * m[11] + m[6] * m[8] * m[15]\n - m[6] * m[12] * m[11] - m[7] * m[8] * m[14] + m[7] * m[12] * m[10];\n\n r[5] = m[0] * m[10] * m[15] - m[0] * m[14] * m[11] - m[2] * m[8] * m[15]\n + m[2] * m[12] * m[11] + m[3] * m[8] * m[14] - m[3] * m[12] * m[10];\n\n r[6] = -m[0] * m[6] * m[15] + m[0] * m[14] * m[7] + m[2] * m[4] * m[15]\n - m[2] * m[12] * m[7] - m[3] * m[4] * m[14] + m[3] * m[12] * m[6];\n\n r[7] = m[0] * m[6] * m[11] - m[0] * m[10] * m[7] - m[2] * m[4] * m[11]\n + m[2] * m[8] * m[7] + m[3] * m[4] * m[10] - m[3] * m[8] * m[6];\n\n r[8] = m[4] * m[9] * m[15] - m[4] * m[13] * m[11] - m[5] * m[8] * m[15]\n + m[5] * m[12] * m[11] + m[7] * m[8] * m[13] - m[7] * m[12] * m[9];\n\n r[9] = -m[0] * m[9] * m[15] + m[0] * m[13] * m[11] + m[1] * m[8] * m[15]\n - m[1] * m[12] * m[11] - m[3] * m[8] * m[13] + m[3] * m[12] * m[9];\n\n r[10] = m[0] * m[5] * m[15] - m[0] * m[13] * m[7] - m[1] * m[4] * m[15]\n + m[1] * m[12] * m[7] + m[3] * m[4] * m[13] - m[3] * m[12] * m[5];\n\n r[11] = -m[0] * m[5] * m[11] + m[0] * m[9] * m[7] + m[1] * m[4] * m[11]\n - m[1] * m[8] * m[7] - m[3] * m[4] * m[9] + m[3] * m[8] * m[5];\n\n r[12] = -m[4] * m[9] * m[14] + m[4] * m[13] * m[10] + m[5] * m[8] * m[14]\n - m[5] * m[12] * m[10] - m[6] * m[8] * m[13] + m[6] * m[12] * m[9];\n\n r[13] = m[0] * m[9] * m[14] - m[0] * m[13] * m[10] - m[1] * m[8] * m[14]\n + m[1] * m[12] * m[10] + m[2] * m[8] * m[13] - m[2] * m[12] * m[9];\n\n r[14] = -m[0] * m[5] * m[14] + m[0] * m[13] * m[6] + m[1] * m[4] * m[14]\n - m[1] * m[12] * m[6] - m[2] * m[4] * m[13] + m[2] * m[12] * m[5];\n\n r[15] = m[0] * m[5] * m[10] - m[0] * m[9] * m[6] - m[1] * m[4] * m[10]\n + m[1] * m[8] * m[6] + m[2] * m[4] * m[9] - m[2] * m[8] * m[5];\n\n det = m[0] * r[0] + m[1] * r[4] + m[2] * r[8] + m[3] * r[12];\n for (i = 0; i < 16; i++) {\n r[i] /= det;\n }\n return new Matrix3x4(r.slice(0, 12));\n }\n\n public static isE(matrix: Matrix3x4): boolean {\n return (Math.abs(matrix.elements[0] - 1) < EPSILON)\n && (Math.abs(matrix.elements[1] - 0) < EPSILON)\n && (Math.abs(matrix.elements[2] - 0) < EPSILON)\n && (Math.abs(matrix.elements[3] - 0) < EPSILON)\n && (Math.abs(matrix.elements[4] - 0) < EPSILON)\n && (Math.abs(matrix.elements[5] - 1) < EPSILON)\n && (Math.abs(matrix.elements[6] - 0) < EPSILON)\n && (Math.abs(matrix.elements[7] - 0) < EPSILON)\n && (Math.abs(matrix.elements[8] - 0) < EPSILON)\n && (Math.abs(matrix.elements[9] - 0) < EPSILON)\n && (Math.abs(matrix.elements[10] - 1) < EPSILON)\n && (Math.abs(matrix.elements[11] - 0) < EPSILON);\n }\n\n public static equals(matrix1: Matrix3x4, matrix2: Matrix3x4): boolean {\n return (Math.abs(matrix1.elements[0] - matrix2.elements[0]) < EPSILON)\n && (Math.abs(matrix1.elements[1] - matrix2.elements[1]) < EPSILON)\n && (Math.abs(matrix1.elements[2] - matrix2.elements[2]) < EPSILON)\n && (Math.abs(matrix1.elements[3] - matrix2.elements[3]) < EPSILON)\n && (Math.abs(matrix1.elements[4] - matrix2.elements[4]) < EPSILON)\n && (Math.abs(matrix1.elements[5] - matrix2.elements[5]) < EPSILON)\n && (Math.abs(matrix1.elements[6] - matrix2.elements[6]) < EPSILON)\n && (Math.abs(matrix1.elements[7] - matrix2.elements[7]) < EPSILON)\n && (Math.abs(matrix1.elements[8] - matrix2.elements[8]) < EPSILON)\n && (Math.abs(matrix1.elements[9] - matrix2.elements[9]) < EPSILON)\n && (Math.abs(matrix1.elements[10] - matrix2.elements[10]) < EPSILON)\n && (Math.abs(matrix1.elements[11] - matrix2.elements[11]) < EPSILON);\n }\n\n protected elements: number[];\n\n constructor(elements?: number[]) {\n this.elements = (elements && elements.length === 12) ? elements.slice(0) : [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0];\n }\n\n /**\n * Set value to specified element of the matrix\n */\n public set(i: number, j: number, val: number) {\n if ((i > 3) || (i < 0) || (j > 4) || (j < 0)) {\n throw new Error(\"Wrong coefficients\");\n }\n this.elements[i * 4 + j] = val;\n }\n\n /**\n * return specified element of the matrix\n * @param {Number} i row\n * @param {Number} j column\n * @return {Number}\n */\n public get(i: number, j: number) {\n if ((i > 3) || (i < 0) || (j > 4) || (j < 0)) {\n throw new Error(\"Incorrect coeficients\");\n }\n return this.elements[i * 4 + j];\n }\n\n public add(matrix: Matrix3x4): Matrix3x4 {\n return Matrix3x4.add(this, matrix);\n }\n\n public sub(matrix: Matrix3x4): Matrix3x4 {\n return Matrix3x4.sub(this, matrix);\n }\n\n public translate(v: Vec3): Matrix3x4 {\n const elements = this.elements.slice(0);\n elements[3] = elements[3] + v.x;\n elements[7] = elements[7] + v.y;\n elements[11] = elements[11] + v.z;\n return new Matrix3x4(elements);\n }\n\n public scale(mult: number): Matrix3x4 {\n return new Matrix3x4([\n this.elements[0] * mult,\n this.elements[1] * mult,\n this.elements[2] * mult,\n this.elements[3] * mult,\n this.elements[4] * mult,\n this.elements[5] * mult,\n this.elements[6] * mult,\n this.elements[7] * mult,\n this.elements[8] * mult,\n this.elements[9] * mult,\n this.elements[10] * mult,\n this.elements[11] * mult,\n ]);\n }\n\n public project(mult: Vec3): Vec3 {\n return new Vec3(\n this.elements[0] * mult.x + this.elements[1] * mult.y + this.elements[2] * mult.z + this.elements[3],\n this.elements[4] * mult.x + this.elements[5] * mult.y + this.elements[6] * mult.z + this.elements[7],\n this.elements[8] * mult.x + this.elements[9] * mult.y + this.elements[10] * mult.z + this.elements[11],\n );\n }\n\n public multiply(mult: Matrix3x4) {\n const elements = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n elements[0] = mult.elements[0] * this.elements[0] + mult.elements[4] * this.elements[1] + mult.elements[8] * this.elements[2];\n elements[1] = mult.elements[1] * this.elements[0] + mult.elements[5] * this.elements[1] + mult.elements[9] * this.elements[2];\n elements[2] = mult.elements[2] * this.elements[0] + mult.elements[6] * this.elements[1] + mult.elements[10] * this.elements[2];\n elements[3] = mult.elements[3] * this.elements[0] + mult.elements[7] * this.elements[1] + mult.elements[11] * this.elements[2]\n + this.elements[3];\n\n elements[4] = mult.elements[0] * this.elements[4] + mult.elements[4] * this.elements[5] + mult.elements[8] * this.elements[6];\n elements[5] = mult.elements[1] * this.elements[4] + mult.elements[5] * this.elements[5] + mult.elements[9] * this.elements[6];\n elements[6] = mult.elements[2] * this.elements[4] + mult.elements[6] * this.elements[5] + mult.elements[10] * this.elements[6];\n elements[7] = mult.elements[3] * this.elements[4] + mult.elements[7] * this.elements[5] + mult.elements[11] * this.elements[6]\n + this.elements[7];\n\n elements[8] = mult.elements[0] * this.elements[8] + mult.elements[4] * this.elements[9] + mult.elements[8] * this.elements[10];\n elements[9] = mult.elements[1] * this.elements[8] + mult.elements[5] * this.elements[9] + mult.elements[9] * this.elements[10];\n elements[10] = mult.elements[2] * this.elements[8] + mult.elements[6] * this.elements[9] + mult.elements[10] * this.elements[10];\n elements[11] = mult.elements[3] * this.elements[8] + mult.elements[7] * this.elements[9] + mult.elements[11] * this.elements[10]\n + this.elements[11];\n return new Matrix3x4(elements);\n }\n\n public inverse(): Matrix3x4 {\n return Matrix3x4.inverse(this);\n }\n\n public isE() {\n return Matrix3x4.isE(this);\n }\n\n public equals(matrix: Matrix3x4): boolean {\n return Matrix3x4.equals(this, matrix);\n }\n\n public clone(): Matrix3x4 {\n return new Matrix3x4(this.elements);\n }\n\n public toString(): string {\n return \"(\" + this.elements.slice(0, 12).map((element) => element.toFixed(3)) + \")\";\n }\n\n /**\n * Return transformation matrix as symetry code (common in Crystallography)\n * e.g. 1-x,1-y,1-z\n */\n public toSymetryCode(): string {\n\n function formatSymNumber(num: number): string {\n return (Math.round(num * 1000) / 1000).toString();\n }\n function closeToOne(num: number) {\n return (Math.abs(num - 1) < 0.001);\n }\n\n function codePart1(x: number, y: number, z: number, l: number): string {\n const arr = [];\n\n if (x !== 0) {\n if (closeToOne(Math.abs(x))) {\n arr.push(x > 0 ? \"x\" : \"-x\");\n } else {\n arr.push(formatSymNumber(x) + \"x\");\n }\n }\n if (y !== 0) {\n if (closeToOne(Math.abs(y))) {\n arr.push(y > 0 ? \"y\" : \"-y\");\n } else {\n arr.push(formatSymNumber(y) + \"y\");\n }\n }\n if (z !== 0) {\n if (closeToOne(Math.abs(z))) {\n arr.push(z > 0 ? \"z\" : \"-z\");\n } else {\n arr.push(formatSymNumber(z) + \"z\");\n }\n }\n if (l !== 0) {\n arr.push(formatSymNumber(l));\n }\n\n return arr.reduce((curr, next) => {\n if (next && next.charAt(0) === \"-\") {\n return curr + next;\n }\n if (curr === \"\") {\n return next;\n }\n return curr + \"+\" + next;\n }, \"\");\n }\n const sx = codePart1(this.elements[0], this.elements[1], this.elements[2], this.elements[3]);\n const sy = codePart1(this.elements[4], this.elements[5], this.elements[6], this.elements[7]);\n const sz = codePart1(this.elements[8], this.elements[9], this.elements[10], this.elements[11]);\n return sx + \",\" + sy + \",\" + sz;\n }\n\n}\n","import { EPSILON, ICloneable, IEquatable } from \"@chemistry/common\";\nimport { Quaternion } from \"./quaternion\";\nimport { Vec3 } from \"./vec3\";\n\n/**\n * Class to work with Matrix4x4 (When normalized have proberty A^-1 = A^t)\n * (used for transformation in 3D)\n * | 0 4 8 12 | | RS R R T |\n * | 1 5 9 13 | | R RS R T |\n * | 2 6 10 14 | = | R R RS T |\n * | 3 7 11 15 | | 0 0 0 1 |\n */\nexport class Transform3D implements ICloneable<Transform3D> {\n\n public static equals(matrix1: Transform3D, matrix2: Transform3D): boolean {\n return (Math.abs(matrix1.elements[0] - matrix2.elements[0]) < EPSILON)\n && (Math.abs(matrix1.elements[1] - matrix2.elements[1]) < EPSILON)\n && (Math.abs(matrix1.elements[2] - matrix2.elements[2]) < EPSILON)\n && (Math.abs(matrix1.elements[3] - matrix2.elements[3]) < EPSILON)\n && (Math.abs(matrix1.elements[4] - matrix2.elements[4]) < EPSILON)\n && (Math.abs(matrix1.elements[5] - matrix2.elements[5]) < EPSILON)\n && (Math.abs(matrix1.elements[6] - matrix2.elements[6]) < EPSILON)\n && (Math.abs(matrix1.elements[7] - matrix2.elements[7]) < EPSILON)\n && (Math.abs(matrix1.elements[8] - matrix2.elements[8]) < EPSILON)\n && (Math.abs(matrix1.elements[9] - matrix2.elements[9]) < EPSILON)\n && (Math.abs(matrix1.elements[10] - matrix2.elements[10]) < EPSILON)\n && (Math.abs(matrix1.elements[11] - matrix2.elements[11]) < EPSILON)\n && (Math.abs(matrix1.elements[12] - matrix2.elements[12]) < EPSILON)\n && (Math.abs(matrix1.elements[13] - matrix2.elements[13]) < EPSILON)\n && (Math.abs(matrix1.elements[14] - matrix2.elements[14]) < EPSILON)\n && (Math.abs(matrix1.elements[15] - matrix2.elements[15]) < EPSILON);\n }\n\n /**\n * Return Transformation from Scale\n */\n public static fromScale(scale: number): Transform3D {\n return new Transform3D([scale, 0, 0, 0, 0, scale, 0, 0, 0, 0, scale, 0, 0, 0, 0, 1]);\n }\n\n /**\n * Return Transformation from Quaternion\n */\n public static fromQuaternion(quaternion: Quaternion): Transform3D {\n const elements = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\n const x2 = quaternion.X() + quaternion.X();\n const y2 = quaternion.Y() + quaternion.Y();\n const z2 = quaternion.Z() + quaternion.Z();\n const xx = quaternion.X() * x2;\n const xy = quaternion.X() * y2;\n const xz = quaternion.X() * z2;\n const yy = quaternion.Y() * y2;\n const yz = quaternion.Y() * z2;\n const zz = quaternion.Z() * z2;\n const wx = quaternion.W() * x2;\n const wy = quaternion.W() * y2;\n const wz = quaternion.W() * z2;\n elements[3] = elements[7] = elements[11] = elements[12] = elements[13] = elements[14] = 0; elements[15] = 1;\n elements[0] = 1 - (yy + zz); elements[4] = xy + wz; elements[8] = xz - wy;\n elements[1] = xy - wz; elements[5] = 1 - (xx + zz); elements[9] = yz + wx;\n elements[2] = xz + wy; elements[6] = yz - wx; elements[10] = 1 - (xx + yy);\n return new Transform3D(elements);\n }\n\n public static fromMultiplication(transform1: Transform3D, transform2: Transform3D): Transform3D {\n const m1 = transform1.elements;\n const m2 = transform2.elements;\n\n return new Transform3D([\n m1[0] * m2[0] + m1[1] * m2[4] + m1[2] * m2[8] + m1[3] * m2[12],\n m1[0] * m2[1] + m1[1] * m2[5] + m1[2] * m2[9] + m1[3] * m2[13],\n m1[0] * m2[2] + m1[1] * m2[6] + m1[2] * m2[10] + m1[3] * m2[14],\n m1[0] * m2[3] + m1[1] * m2[7] + m1[2] * m2[11] + m1[3] * m2[15],\n m1[4] * m2[0] + m1[5] * m2[4] + m1[6] * m2[8] + m1[7] * m2[12],\n m1[4] * m2[1] + m1[5] * m2[5] + m1[6] * m2[9] + m1[7] * m2[13],\n m1[4] * m2[2] + m1[5] * m2[6] + m1[6] * m2[10] + m1[7] * m2[14],\n m1[4] * m2[3] + m1[5] * m2[7] + m1[6] * m2[11] + m1[7] * m2[15],\n m1[8] * m2[0] + m1[9] * m2[4] + m1[10] * m2[8] + m1[11] * m2[12],\n m1[8] * m2[1] + m1[9] * m2[5] + m1[10] * m2[9] + m1[11] * m2[13],\n m1[8] * m2[2] + m1[9] * m2[6] + m1[10] * m2[10] + m1[11] * m2[14],\n m1[8] * m2[3] + m1[9] * m2[7] + m1[10] * m2[11] + m1[11] * m2[15],\n m1[12] * m2[0] + m1[13] * m2[4] + m1[14] * m2[8] + m1[15] * m2[12],\n m1[12] * m2[1] + m1[13] * m2[5] + m1[14] * m2[9] + m1[15] * m2[13],\n m1[12] * m2[2] + m1[13] * m2[6] + m1[14] * m2[10] + m1[15] * m2[14],\n m1[12] * m2[3] + m1[13] * m2[7] + m1[14] * m2[11] + m1[15] * m2[15],\n ]);\n }\n\n /**\n * Return Transformation by Translation\n */\n public static fromTranslation(translation: Vec3): Transform3D {\n return new Transform3D([\n 1, 0, 0, 0,\n 0, 1, 0, 0,\n 0, 0, 1, 0,\n translation.x,\n translation.y,\n translation.z,\n 1,\n ]);\n }\n\n /**\n * Return Transformation from rootation about an axis\n */\n public static fromRotation(axis: Vec3, angle: number): Transform3D {\n const quat = Quaternion.fromAxisAngle(axis, angle);\n return Transform3D.fromQuaternion(quat);\n }\n\n protected elements: number[];\n\n constructor(elements?: number[]) {\n if (elements && elements.length) {\n if (elements.length !== 16) {\n throw new Error (\"Wrong array length. expected 16\");\n }\n this.elements = elements.slice(0);\n return;\n }\n\n this.elements = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\n }\n\n public toString(): string {\n return \"(\" + this.elements.slice(0, 16).map((element) => element.toFixed(3)) + \")\";\n }\n\n /**\n * Set value to specified element of the matrix\n */\n public set(row: number, col: number, value: number) {\n if ((row > 4) || (row < 0) || (col > 4) || (col < 0)) {\n throw new Error(\"Incorrect coeficients\");\n }\n this.elements[row + col * 4] = value;\n }\n\n /**\n * Return specified element of the matrix\n */\n public get(row: number, col: number): number {\n if ((row > 4) || (row < 0) || (col > 4) || (col < 0)) {\n throw new Error(\"Incorrect coeficients\");\n }\n return this.elements[row + col * 4];\n }\n\n /**\n * Multipy vector to the Matrix\n */\n public project(position: Vec3): Vec3 {\n const x = this.elements[0] * position.x + this.elements[4] * position.y + this.elements[8] * position.z + this.elements[12];\n const y = this.elements[1] * position.x + this.elements[5] * position.y + this.elements[9] * position.z + this.elements[13];\n const z = this.elements[2] * position.x + this.elements[6] * position.y + this.elements[10] * position.z + this.elements[14];\n return new Vec3(x, y, z);\n }\n\n public rotate(axis: Vec3, angle: number): Transform3D {\n const quat = Quaternion.fromAxisAngle(axis, angle);\n const x = Transform3D.fromQuaternion(quat);\n return Transform3D.fromMultiplication(this, x);\n }\n /**\n * Add translational component to current transformation\n */\n public translate(vec: Vec3): Transform3D {\n const m = this.elements;\n return new Transform3D([m[0], m[1], m[2], m[3], m[4], m[5], m[6], m[7], m[8], m[9], m[10],\n m[11], (m[12] + vec.x), (m[13] + vec.y), (m[14] + vec.z), m[15]]);\n }\n\n /**\n * Extract translational component of the transformation\n */\n public extractTranslation(): Vec3 {\n return new Vec3 (\n this.elements[12],\n this.elements[13],\n this.elements[14],\n );\n }\n\n public extractScale(): number {\n const m = this.elements;\n const t = new Transform3D([m[0], m[1], m[2], m[3], m[4], m[5], m[6], m[7], m[8], m[9], m[10], m[11], 0, 0, 0, 1]);\n const vec = t.project(new Vec3(1, 1, 1));\n return vec.length / Math.sqrt(3);\n }\n\n /**\n * Return Inverse to current transformation (by inverting matrix)\n * (allow to unproject vectors)\n */\n public inverse() {\n let i;\n let det;\n const r = new Array(16);\n const m = this.elements;\n\n r[0] = m[5] * m[10] * m[15] - m[5] * m[14] * m[11] - m[6] * m[9] * m[15] + m[6] * m[13] * m[11]\n + m[7] * m[9] * m[14] - m[7] * m[13] * m[10];\n r[1] = -m[1] * m[10] * m[15] + m[1] * m[14] * m[11] + m[2] * m[9] * m[15] - m[2] * m[13] * m[11]\n - m[3] * m[9] * m[14] + m[3] * m[13] * m[10];\n r[2] = m[1] * m[6] * m[15] - m[1] * m[14] * m[7] - m[2] * m[5] * m[15] + m[2] * m[13] * m[7]\n + m[3] * m[5] * m[14] - m[3] * m[13] * m[6];\n r[3] = -m[1] * m[6] * m[11] + m[1] * m[10] * m[7] + m[2] * m[5] * m[11] - m[2] * m[9] * m[7]\n - m[3] * m[5] * m[10] + m[3] * m[9] * m[6];\n r[4] = -m[4] * m[10] * m[15] + m[4] * m[14] * m[11] + m[6] * m[8] * m[15] - m[6] * m[12] * m[11]\n - m[7] * m[8] * m[14] + m[7] * m[12] * m[10];\n r[5] = m[0] * m[10] * m[15] - m[0] * m[14] * m[11] - m[2] * m[8] * m[15] + m[2] * m[12] * m[11]\n + m[3] * m[8] * m[14] - m[3] * m[12] * m[10];\n r[6] = -m[0] * m[6] * m[15] + m[0] * m[14] * m[7] + m[2] * m[4] * m[15] - m[2] * m[12] * m[7]\n - m[3] * m[4] * m[14] + m[3] * m[12] * m[6];\n r[7] = m[0] * m[6] * m[11] - m[0] * m[10] * m[7] - m[2] * m[4] * m[11] + m[2] * m[8] * m[7]\n + m[3] * m[4] * m[10] - m[3] * m[8] * m[6];\n r[8] = m[4] * m[9] * m[15] - m[4] * m[13] * m[11] - m[5] * m[8] * m[15] + m[5] * m[12] * m[11]\n + m[7] * m[8] * m[13] - m[7] * m[12] * m[9];\n r[9] = -m[0] * m[9] * m[15] + m[0] * m[13] * m[11] + m[1] * m[8] * m[15] - m[1] * m[12] * m[11]\n - m[3] * m[8] * m[13] + m[3] * m[12] * m[9];\n r[10] = m[0] * m[5] * m[15] - m[0] * m[13] * m[7] - m[1] * m[4] * m[15] + m[1] * m[12] * m[7]\n + m[3] * m[4] * m[13] - m[3] * m[12] * m[5];\n r[11] = -m[0] * m[5] * m[11] + m[0] * m[9] * m[7] + m[1] * m[4] * m[11] - m[1] * m[8] * m[7]\n - m[3] * m[4] * m[9] + m[3] * m[8] * m[5];\n r[12] = -m[4] * m[9] * m[14] + m[4] * m[13] * m[10] + m[5] * m[8] * m[14] - m[5] * m[12] * m[10]\n - m[6] * m[8] * m[13] + m[6] * m[12] * m[9];\n r[13] = m[0] * m[9] * m[14] - m[0] * m[13] * m[10] - m[1] * m[8] * m[14] + m[1] * m[12] * m[10]\n + m[2] * m[8] * m[13] - m[2] * m[12] * m[9];\n r[14] = -m[0] * m[5] * m[14] + m[0] * m[13] * m[6] + m[1] * m[4] * m[14] - m[1] * m[12] * m[6]\n - m[2] * m[4] * m[13] + m[2] * m[12] * m[5];\n r[15] = m[0] * m[5] * m[10] - m[0] * m[9] * m[6] - m[1] * m[4] * m[10] + m[1] * m[8] * m[6]\n + m[2] * m[4] * m[9] - m[2] * m[8] * m[5];\n det = m[0] * r[0] + m[1] * r[4] + m[2] * r[8] + m[3] * r[12];\n for (i = 0; i < 16; i++) {\n r[i] /= det;\n }\n return new Transform3D(r);\n }\n\n /**\n * Return determinant of transformation matrix\n */\n public determinant() {\n const value = this.get(0, 3) * this.get(1, 2) * this.get(2, 1) * this.get(3, 0)\n - this.get(0, 1) * this.get(1, 3) * this.get(2, 1) * this.get(3, 0)\n - this.get(0, 3) * this.get(1, 1) * this.get(2, 2) * this.get(3, 0)\n + this.get(0, 1) * this.get(1, 3) * this.get(2, 2) * this.get(3, 0)\n + this.get(0, 1) * this.get(1, 1) * this.get(2, 3) * this.get(3, 0)\n - this.get(0, 1) * this.get(1, 2) * this.get(2, 3) * this.get(3, 0)\n - this.get(0, 3) * this.get(1, 2) * this.get(2, 0) * this.get(3, 1)\n + this.get(0, 1) * this.get(1, 3) * this.get(2, 0) * this.get(3, 1)\n + this.get(0, 3) * this.get(1, 0) * this.get(2, 2) * this.get(3, 1)\n - this.get(0, 0) * this.get(1, 3) * this.get(2, 2) * this.get(3, 1)\n - this.get(0, 1) * this.get(1, 0) * this.get(2, 3) * this.get(3, 1)\n + this.get(0, 0) * this.get(1, 2) * this.get(2, 3) * this.get(3, 1)\n + this.get(0, 3) * this.get(1, 1) * this.get(2, 0) * this.get(3, 2)\n - this.get(0, 1) * this.get(1, 3) * this.get(2, 0) * this.get(3, 2)\n - this.get(0, 3) * this.get(1, 0) * this.get(2, 1) * this.get(3, 2)\n + this.get(0, 0) * this.get(1, 3) * this.get(2, 1) * this.get(3, 2)\n + this.get(0, 1) * this.get(1, 0) * this.get(2, 3) * this.get(3, 2)\n - this.get(0, 0) * this.get(1, 1) * this.get(2, 3) * this.get(3, 2)\n - this.get(0, 1) * this.get(1, 1) * this.get(2, 0) * this.get(3, 3)\n + this.get(0, 1) * this.get(1, 2) * this.get(2, 0) * this.get(3, 3)\n + this.get(0, 1) * this.get(1, 0) * this.get(2, 1) * this.get(3, 3)\n - this.get(0, 0) * this.get(1, 2) * this.get(2, 1) * this.get(3, 3)\n - this.get(0, 1) * this.get(1, 0) * this.get(2, 2) * this.get(3, 3)\n + this.get(0, 0) * this.get(1, 1) * this.get(2, 2) * this.get(3, 3);\n return value;\n }\n /**\n * Clone current transformation\n */\n public clone(): Transform3D {\n return new Transform3D(this.elements);\n }\n\n public equals(transform: Transform3D): boolean {\n return Transform3D.equals(this, transform);\n }\n}\n","import { Vec3 } from \"./vec3\";\n/**\n * Simple Class to work with Quaternion\n */\nexport class Quaternion {\n\n /**\n * Get Quaternion from Axis angle\n */\n public static fromAxisAngle(axis: Vec3, angle: number) {\n const f = angle * 0.5;\n const pt = axis.scale(Math.sin(f));\n return new Quaternion(pt.x, pt.y, pt.z, Math.cos(f));\n }\n\n protected data: number[];\n\n constructor(x: number, y: number, z: number, w: number) {\n this.data = [x, y, z, w];\n }\n\n /**\n * X Component\n */\n public X(): number {\n return this.data[0];\n }\n\n /**\n * Y Component\n */\n public Y(): number {\n return this.data[1];\n }\n\n /**\n * Z Component\n */\n public Z(): number {\n return this.data[2];\n }\n\n /**\n * W Component\n */\n public W(): number {\n return this.data[3];\n }\n}\n","import { EPSILON, ICloneable, IEquatable } from \"@chemistry/common\";\n\nexport interface IVec2 {\n x: number;\n y: number;\n}\n\nexport class Vec2 implements IVec2, ICloneable<Vec2>, IEquatable<Vec2> {\n\n public static add(v1: Vec2, v2: Vec2): Vec2 {\n return new Vec2(v1.x + v2.x, v1.y + v2.y);\n }\n\n public static sub(v1: Vec2, v2: Vec2): Vec2 {\n return new Vec2(v1.x - v2.x, v1.y - v2.y);\n }\n\n public static dot(v1: Vec2, v2: Vec2): number {\n return (v1.x * v2.x + v1.y * v2.y);\n }\n\n public static equals(v1: Vec2, v2: Vec2): boolean {\n return (Math.abs(v1.x - v2.x) < EPSILON)\n && (Math.abs(v1.y - v2.y) < EPSILON);\n }\n\n public x: number;\n public y: number;\n\n constructor(x: number, y: number) {\n this.x = x;\n this.y = y;\n }\n\n public get length(): number {\n return Math.sqrt(this.x * this.x + this.y * this.y);\n }\n\n public get lengthPow2(): number {\n return (this.x * this.x + this.y * this.y);\n }\n\n public get avg(): number {\n return (this.x + this.y) / 3;\n }\n\n public scale(num: number): Vec2 {\n return new Vec2(this.x * num, this.y * num);\n }\n\n public normalize() {\n const len = this.length;\n if (len === 0) {\n throw new Error(\"Can not normalize zero vector\");\n } else {\n return new Vec2(this.x / len, this.y / len);\n }\n }\n\n public dot(vec: Vec2): number {\n return Vec2.dot(this, vec);\n }\n\n public sub(vec: Vec2): Vec2 {\n return Vec2.sub(this, vec);\n }\n\n public add(vector: Vec2): Vec2 {\n return Vec2.add(this, vector);\n }\n\n public equals(vec: Vec2) {\n return Vec2.equals(this, vec);\n }\n\n public clone() {\n return new Vec2(this.x, this.y);\n }\n\n public toString() {\n return \"(\" + this.x.toFixed(3) + \",\" + this.y.toFixed(3) + \")\";\n }\n}\n"],"sourceRoot":""}
package/package-lock.json DELETED
@@ -1,13 +0,0 @@
1
- {
2
- "name": "@chemistry/math",
3
- "version": "2.9.0",
4
- "lockfileVersion": 1,
5
- "requires": true,
6
- "dependencies": {
7
- "@chemistry/common": {
8
- "version": "2.7.0",
9
- "resolved": "https://registry.npmjs.org/@chemistry/common/-/common-2.7.0.tgz",
10
- "integrity": "sha512-UqJ3xVuI6UonOpSyTEuHAkNS8EjvWqE4zsXNNw5h2HoDbLkLqsptTw3c5lrr4y93A2Cwu4h3bEUBWklh1KqcsQ=="
11
- }
12
- }
13
- }