@chemistry/crystalview 1.0.9 → 3.1.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.
Files changed (89) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +61 -31
  3. package/dist/{src/camera → camera}/Camera.d.ts +69 -63
  4. package/dist/camera/Camera.d.ts.map +1 -0
  5. package/dist/camera/Camera.js +257 -0
  6. package/dist/camera/Camera.js.map +1 -0
  7. package/dist/camera/ICamera.d.ts +9 -0
  8. package/dist/camera/ICamera.d.ts.map +1 -0
  9. package/dist/camera/ICamera.js +2 -0
  10. package/dist/camera/ICamera.js.map +1 -0
  11. package/dist/{src/crystal-view.d.ts → crystal-view.d.ts} +25 -24
  12. package/dist/crystal-view.d.ts.map +1 -0
  13. package/dist/crystal-view.js +181 -0
  14. package/dist/crystal-view.js.map +1 -0
  15. package/dist/crystalview.css +47 -0
  16. package/dist/index.d.ts +2 -0
  17. package/dist/index.d.ts.map +1 -0
  18. package/dist/index.js +2 -0
  19. package/dist/index.js.map +1 -0
  20. package/dist/{src/molecule3d → molecule3d}/Atom.d.ts +14 -13
  21. package/dist/molecule3d/Atom.d.ts.map +1 -0
  22. package/dist/molecule3d/Atom.js +19 -0
  23. package/dist/molecule3d/Atom.js.map +1 -0
  24. package/dist/{src/molecule3d → molecule3d}/Bond.d.ts +8 -7
  25. package/dist/molecule3d/Bond.d.ts.map +1 -0
  26. package/dist/molecule3d/Bond.js +11 -0
  27. package/dist/molecule3d/Bond.js.map +1 -0
  28. package/dist/{src/molecule3d → molecule3d}/CellAtom.d.ts +96 -96
  29. package/dist/molecule3d/CellAtom.d.ts.map +1 -0
  30. package/dist/molecule3d/CellAtom.js +132 -0
  31. package/dist/molecule3d/CellAtom.js.map +1 -0
  32. package/dist/{src/molecule3d → molecule3d}/Link.d.ts +15 -14
  33. package/dist/molecule3d/Link.d.ts.map +1 -0
  34. package/dist/molecule3d/Link.js +17 -0
  35. package/dist/molecule3d/Link.js.map +1 -0
  36. package/dist/{src/molecule3d → molecule3d}/Marker.d.ts +9 -8
  37. package/dist/molecule3d/Marker.d.ts.map +1 -0
  38. package/dist/molecule3d/Marker.js +11 -0
  39. package/dist/molecule3d/Marker.js.map +1 -0
  40. package/dist/{src/molecule3d → molecule3d}/MarkerContact.d.ts +7 -6
  41. package/dist/molecule3d/MarkerContact.d.ts.map +1 -0
  42. package/dist/molecule3d/MarkerContact.js +9 -0
  43. package/dist/molecule3d/MarkerContact.js.map +1 -0
  44. package/dist/{src/molecule3d → molecule3d}/Molecule3D.d.ts +45 -44
  45. package/dist/molecule3d/Molecule3D.d.ts.map +1 -0
  46. package/dist/molecule3d/Molecule3D.js +139 -0
  47. package/dist/molecule3d/Molecule3D.js.map +1 -0
  48. package/dist/{src/molecule3d → molecule3d}/MoleculeBuilder.d.ts +20 -19
  49. package/dist/molecule3d/MoleculeBuilder.d.ts.map +1 -0
  50. package/dist/molecule3d/MoleculeBuilder.js +131 -0
  51. package/dist/molecule3d/MoleculeBuilder.js.map +1 -0
  52. package/dist/molecule3d/MoleculeConnector.d.ts +10 -0
  53. package/dist/molecule3d/MoleculeConnector.d.ts.map +1 -0
  54. package/dist/molecule3d/MoleculeConnector.js +107 -0
  55. package/dist/molecule3d/MoleculeConnector.js.map +1 -0
  56. package/dist/{src/molecule3d → molecule3d}/UnitCell.d.ts +36 -35
  57. package/dist/molecule3d/UnitCell.d.ts.map +1 -0
  58. package/dist/molecule3d/UnitCell.js +238 -0
  59. package/dist/molecule3d/UnitCell.js.map +1 -0
  60. package/dist/molecule3d/io/IMoleculeReader.d.ts +8 -0
  61. package/dist/molecule3d/io/IMoleculeReader.d.ts.map +1 -0
  62. package/dist/molecule3d/io/IMoleculeReader.js +2 -0
  63. package/dist/molecule3d/io/IMoleculeReader.js.map +1 -0
  64. package/dist/{src/molecule3d → molecule3d}/io/MoleculeReaderJCIF.d.ts +12 -11
  65. package/dist/molecule3d/io/MoleculeReaderJCIF.d.ts.map +1 -0
  66. package/dist/molecule3d/io/MoleculeReaderJCIF.js +115 -0
  67. package/dist/molecule3d/io/MoleculeReaderJCIF.js.map +1 -0
  68. package/dist/{src/painter → painter}/CanvasContext.d.ts +15 -14
  69. package/dist/painter/CanvasContext.d.ts.map +1 -0
  70. package/dist/painter/CanvasContext.js +68 -0
  71. package/dist/painter/CanvasContext.js.map +1 -0
  72. package/dist/painter/Painter.d.ts +36 -0
  73. package/dist/painter/Painter.d.ts.map +1 -0
  74. package/dist/painter/Painter.js +237 -0
  75. package/dist/painter/Painter.js.map +1 -0
  76. package/dist/ui/ContextMenu.d.ts +24 -0
  77. package/dist/ui/ContextMenu.d.ts.map +1 -0
  78. package/dist/ui/ContextMenu.js +147 -0
  79. package/dist/ui/ContextMenu.js.map +1 -0
  80. package/dist/{src/ui → ui}/ContextMenuItem.d.ts +18 -17
  81. package/dist/ui/ContextMenuItem.d.ts.map +1 -0
  82. package/dist/ui/ContextMenuItem.js +72 -0
  83. package/dist/ui/ContextMenuItem.js.map +1 -0
  84. package/package.json +68 -87
  85. package/dist/crystal-view.min.js +0 -24
  86. package/dist/src/molecule3d/MoleculeConnector.d.ts +0 -9
  87. package/dist/src/painter/Painter.d.ts +0 -35
  88. package/dist/src/ui/ContextMenu.d.ts +0 -24
  89. package/package-lock.json +0 -9410
@@ -0,0 +1,131 @@
1
+ import { Bond } from './Bond.js';
2
+ import { Marker } from './Marker.js';
3
+ import { MarkerContact } from './MarkerContact.js';
4
+ import { UnitCell } from './UnitCell.js';
5
+ export class MoleculeBuilder {
6
+ molecule;
7
+ constructor(molecule) {
8
+ this.molecule = molecule;
9
+ }
10
+ /**
11
+ * Add Unique Atoms to Molecule
12
+ */
13
+ addUniqueAtoms() {
14
+ this.addAtomsBySymetry(['x,y,z']);
15
+ }
16
+ addAtomsBySymetry(symetryList) {
17
+ for (const catom of this.molecule.cellAtoms) {
18
+ for (const symetryCode of symetryList) {
19
+ const symetry = UnitCell.getMatrixFromSymetry(symetryCode);
20
+ // Add atom with bonds
21
+ this.addAtomWithBonds(catom, symetry);
22
+ }
23
+ }
24
+ this.addMarkers();
25
+ }
26
+ addAtomWithBonds(catom, symetry) {
27
+ const markers = [];
28
+ // build atoms connectivity
29
+ this.molecule.buildConnectivity();
30
+ // Predict inserted atom position
31
+ const predictedPostion = symetry.project(catom.fractional);
32
+ const zatom = catom.getChild(predictedPostion);
33
+ let atom;
34
+ // Atom with predicted position not found
35
+ if (!zatom) {
36
+ // Create Atom and Add it as Chield
37
+ atom = catom.createAtom(symetry, true);
38
+ this.molecule.addAtom(atom);
39
+ }
40
+ else {
41
+ atom = zatom;
42
+ }
43
+ // let makers = [];
44
+ // loop throught links
45
+ const links = catom.getLinks();
46
+ for (const link of links) {
47
+ // connected atom
48
+ const conAtom = link.atom;
49
+ // connected atom predicted position
50
+ const predicted = symetry.project(link.fractional);
51
+ const xatom = conAtom.getChild(predicted);
52
+ // Atom alredy exists ..
53
+ if (xatom) {
54
+ const bond = new Bond(atom, xatom, 1);
55
+ this.molecule.bonds.push(bond);
56
+ }
57
+ else {
58
+ markers.push({
59
+ atom: conAtom,
60
+ symetry,
61
+ });
62
+ }
63
+ }
64
+ return markers;
65
+ }
66
+ extendByMarker(marker) {
67
+ const markersList = [];
68
+ markersList.push({
69
+ atom: marker.cellAtom,
70
+ symetry: marker.symetry,
71
+ });
72
+ const sym = marker.symetry;
73
+ let j = 1000;
74
+ while (markersList.length > 0 && j > 0) {
75
+ j--;
76
+ const currentMarker = markersList.shift();
77
+ if (!currentMarker) {
78
+ continue;
79
+ }
80
+ if (!currentMarker.symetry.equals(sym)) {
81
+ continue;
82
+ }
83
+ {
84
+ const markers = this.addAtomWithBonds(currentMarker.atom, currentMarker.symetry);
85
+ markersList.push(...markers);
86
+ }
87
+ }
88
+ this.addMarkers();
89
+ }
90
+ addMarkers() {
91
+ const cellAtoms = this.molecule.cellAtoms;
92
+ const unitCell = this.molecule.unitCell;
93
+ const markersPositions = [];
94
+ this.molecule.markers = [];
95
+ this.molecule.markersContacts = [];
96
+ const markers = this.molecule.markers;
97
+ const markersContacts = this.molecule.markersContacts;
98
+ const inList = (position) => {
99
+ for (const mposition of markersPositions) {
100
+ if (mposition.equals(position)) {
101
+ return true;
102
+ }
103
+ }
104
+ return false;
105
+ };
106
+ // Loop througt all cell atoms
107
+ for (const catom of cellAtoms) {
108
+ for (const atom of catom.children) {
109
+ const atomSymetry = atom.symetry;
110
+ for (const link of catom.links) {
111
+ const conAtom = link.atom;
112
+ const symetry = link.symetry;
113
+ const totalSymetry = atomSymetry.multiply(symetry);
114
+ // var predicted1 = totalSymetry.multiple(conAtom.fractional);
115
+ let predicted = symetry.project(conAtom.fractional);
116
+ predicted = atomSymetry.project(predicted);
117
+ const xatom = conAtom.getChild(predicted);
118
+ if (!xatom) {
119
+ const mPosition = unitCell.fractToOrth(predicted);
120
+ if (!inList(mPosition)) {
121
+ markersPositions.push(mPosition);
122
+ markers.push(new Marker(mPosition, totalSymetry, conAtom));
123
+ markersContacts.push(new MarkerContact(atom.position, mPosition));
124
+ }
125
+ }
126
+ }
127
+ }
128
+ }
129
+ }
130
+ }
131
+ //# sourceMappingURL=MoleculeBuilder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MoleculeBuilder.js","sourceRoot":"","sources":["../../src/molecule3d/MoleculeBuilder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { Molecule3D } from './Molecule3D.js';
2
+ export declare class MoleculeConnector {
3
+ private molecule;
4
+ constructor(molecule: Molecule3D);
5
+ buildConnectivity(): void;
6
+ private calculateCellLinks;
7
+ private isSutableByAssembly;
8
+ private isConnected;
9
+ }
10
+ //# sourceMappingURL=MoleculeConnector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MoleculeConnector.d.ts","sourceRoot":"","sources":["../../src/molecule3d/MoleculeConnector.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAK7C,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAa;gBAEjB,QAAQ,EAAE,UAAU;IAIzB,iBAAiB;IAWxB,OAAO,CAAC,kBAAkB;IA4F1B,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,WAAW;CAWpB"}
@@ -0,0 +1,107 @@
1
+ import { Vec3 } from '@chemistry/math';
2
+ const CW_BOND_FROM = 0.4;
3
+ const CW_BOND_TO = 1.2;
4
+ export class MoleculeConnector {
5
+ molecule;
6
+ constructor(molecule) {
7
+ this.molecule = molecule;
8
+ }
9
+ buildConnectivity() {
10
+ // no atoms ?
11
+ if (this.molecule.cellAtoms.length === 0) {
12
+ return;
13
+ }
14
+ // ORDER IS IMPORTANT
15
+ // Calculate Cell Links
16
+ this.calculateCellLinks();
17
+ }
18
+ calculateCellLinks() {
19
+ const cellAtoms = this.molecule.cellAtoms;
20
+ const unitCell = this.molecule.unitCell;
21
+ let maxRCow = -Infinity;
22
+ // get atom with bigest RcoW
23
+ for (const atom of cellAtoms) {
24
+ maxRCow = Math.max(atom.element.RCow, maxRCow);
25
+ }
26
+ // Maximal posible length
27
+ const maxRCow2 = maxRCow * 2 * CW_BOND_TO;
28
+ // Detect min and Max vectors of the cell atoms
29
+ let p1 = new Vec3(Infinity, Infinity, Infinity);
30
+ let p2 = new Vec3(-Infinity, -Infinity, -Infinity);
31
+ for (const atom of cellAtoms) {
32
+ p1.x = Math.min(p1.x, atom.position.x);
33
+ p1.y = Math.min(p1.y, atom.position.y);
34
+ p1.z = Math.min(p1.z, atom.position.z);
35
+ p2.x = Math.max(p2.x, atom.position.x);
36
+ p2.y = Math.max(p2.y, atom.position.y);
37
+ p2.z = Math.max(p2.z, atom.position.z);
38
+ }
39
+ // Double RVdW and fill by atoms
40
+ const vRcow = new Vec3(2 * maxRCow, 2 * maxRCow, 2 * maxRCow);
41
+ p1 = p1.sub(vRcow);
42
+ p2 = p2.add(vRcow);
43
+ const symetryList = unitCell.symetryList;
44
+ const translations = unitCell.transactionsFromOrthBox(p1, p2);
45
+ // Loop througt all cell atoms
46
+ for (let i = 0; i < cellAtoms.length; i++) {
47
+ const catom = cellAtoms[i];
48
+ // Loop throught all Symetries
49
+ for (const symetry of symetryList) {
50
+ // fill unit cell
51
+ const pre1 = symetry.project(catom.fractional);
52
+ // The atom inside unit cell
53
+ const pre2 = Vec3.getDecimal(pre1);
54
+ // Translation from orign to get atom
55
+ const transFromOrign = Vec3.sub(pre1, pre2);
56
+ for (const tr of translations) {
57
+ const pre3 = Vec3.add(pre2, tr); // new fractional coordinates
58
+ // Orth position prediction
59
+ const pred = unitCell.fractToOrth(pre3);
60
+ const px = p1.x <= pred.x && p2.x >= pred.x;
61
+ const py = p1.y <= pred.y && p2.y >= pred.y;
62
+ const pz = p1.z <= pred.z && p2.z >= pred.z;
63
+ if (px && py && pz) {
64
+ const trans = Vec3.sub(tr, transFromOrign);
65
+ for (let m = i + 1; m < cellAtoms.length; m++) {
66
+ const catom2 = cellAtoms[m];
67
+ if (!this.isSutableByAssembly(catom, catom2)) {
68
+ continue;
69
+ }
70
+ const disV = new Vec3(Math.abs(catom2.position.x - pred.x), Math.abs(catom2.position.y - pred.y), Math.abs(catom2.position.z - pred.z));
71
+ const covBond = disV.x <= maxRCow2 && disV.y <= maxRCow2 && disV.z <= maxRCow2;
72
+ if (!covBond) {
73
+ continue;
74
+ }
75
+ if (this.isConnected(catom2, catom, pred)) {
76
+ const sym = symetry.translate(trans);
77
+ const symInverse = sym.inverse();
78
+ catom2.addLink(catom, sym);
79
+ catom.addLink(catom2, symInverse);
80
+ }
81
+ }
82
+ }
83
+ }
84
+ }
85
+ }
86
+ }
87
+ isSutableByAssembly(atom1, atom2) {
88
+ if (atom1.assembly || atom2.assembly || atom1.group || atom2.group) {
89
+ if (atom1.group && atom1.group !== '-1' && atom1.group !== '1') {
90
+ return false;
91
+ }
92
+ if (atom2.group && atom2.group !== '-1' && atom2.group !== '1') {
93
+ return false;
94
+ }
95
+ return true;
96
+ }
97
+ return true;
98
+ }
99
+ isConnected(atom1, atom2, pred) {
100
+ const disV = new Vec3(atom1.position.x - pred.x, atom1.position.y - pred.y, atom1.position.z - pred.z);
101
+ const l = disV.length;
102
+ const r = atom1.element.RCow + atom2.element.RCow;
103
+ const hasBond = l <= r * CW_BOND_TO && l >= r * CW_BOND_FROM;
104
+ return hasBond;
105
+ }
106
+ }
107
+ //# sourceMappingURL=MoleculeConnector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MoleculeConnector.js","sourceRoot":"","sources":["../../src/molecule3d/MoleculeConnector.ts"],"names":[],"mappings":"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"}
@@ -1,35 +1,36 @@
1
- import { Matrix3x4, Vec3 } from "@chemistry/math";
2
- import { SpaceGroup } from "@crystallography/space-groups";
3
- export declare class UnitCell {
4
- /**
5
- * Will construct Transformation Matrix from Crystallographic notation
6
- * e.g. x,y,z -x+1/2, -y, z+1/2
7
- */
8
- static getMatrixFromSymetry(symetryCode: string): Matrix3x4;
9
- a: number;
10
- b: number;
11
- c: number;
12
- alpha: number;
13
- beta: number;
14
- gamma: number;
15
- spaceGroup: SpaceGroup;
16
- volume: number;
17
- symetryList: Matrix3x4[];
18
- private mOrthMatrix;
19
- private mOrthMatrixInvert;
20
- constructor(a: number, b: number, c: number, alpha: number, beta: number, gamma: number, spaceGroup: SpaceGroup);
21
- /**
22
- * Convert fractional coordinates to Orth
23
- */
24
- fractToOrth(coord: Vec3): Vec3;
25
- /**
26
- * Convert Orth coordinates to fractional
27
- */
28
- orthToFract(coord: Vec3): Vec3;
29
- /**
30
- * Based on Orth box conner coordinates Return
31
- * posible tranactions to get evry posible dot from this box
32
- */
33
- transactionsFromOrthBox(point1: Vec3, point2: Vec3): Vec3[];
34
- private init();
35
- }
1
+ import { Matrix3x4, Vec3 } from '@chemistry/math';
2
+ import type { SpaceGroupInfo } from '@chemistry/space-groups';
3
+ export declare class UnitCell {
4
+ /**
5
+ * Will construct Transformation Matrix from Crystallographic notation
6
+ * e.g. x,y,z -x+1/2, -y, z+1/2
7
+ */
8
+ static getMatrixFromSymetry(symetryCode: string): Matrix3x4;
9
+ a: number;
10
+ b: number;
11
+ c: number;
12
+ alpha: number;
13
+ beta: number;
14
+ gamma: number;
15
+ spaceGroup: SpaceGroupInfo;
16
+ volume: number;
17
+ symetryList: Matrix3x4[];
18
+ private mOrthMatrix;
19
+ private mOrthMatrixInvert;
20
+ constructor(a: number, b: number, c: number, alpha: number, beta: number, gamma: number, spaceGroup: SpaceGroupInfo);
21
+ /**
22
+ * Convert fractional coordinates to Orth
23
+ */
24
+ fractToOrth(coord: Vec3): Vec3;
25
+ /**
26
+ * Convert Orth coordinates to fractional
27
+ */
28
+ orthToFract(coord: Vec3): Vec3;
29
+ /**
30
+ * Based on Orth box conner coordinates Return
31
+ * posible tranactions to get evry posible dot from this box
32
+ */
33
+ transactionsFromOrthBox(point1: Vec3, point2: Vec3): Vec3[];
34
+ private init;
35
+ }
36
+ //# sourceMappingURL=UnitCell.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UnitCell.d.ts","sourceRoot":"","sources":["../../src/molecule3d/UnitCell.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,SAAS,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,qBAAa,QAAQ;IACnB;;;OAGG;WACW,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS;IAiI3D,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,cAAc,CAAC;IAE3B,MAAM,EAAG,MAAM,CAAC;IAChB,WAAW,EAAG,SAAS,EAAE,CAAC;IACjC,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,iBAAiB,CAAa;gBAGpC,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,cAAc;IAa5B;;OAEG;IACI,WAAW,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI;IAIrC;;OAEG;IACI,WAAW,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI;IAIrC;;;OAGG;IACI,uBAAuB,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,GAAG,IAAI,EAAE;IAqDlE,OAAO,CAAC,IAAI;CAsCb"}
@@ -0,0 +1,238 @@
1
+ import { Matrix3x3, Matrix3x4, Vec3 } from '@chemistry/math';
2
+ export class UnitCell {
3
+ /**
4
+ * Will construct Transformation Matrix from Crystallographic notation
5
+ * e.g. x,y,z -x+1/2, -y, z+1/2
6
+ */
7
+ static getMatrixFromSymetry(symetryCode) {
8
+ function replaceAll(str, find, replace) {
9
+ return str.replace(new RegExp(find.replace(/[-/\\^$*+?.()|[\]{}]/g, '\\$&'), 'g'), replace);
10
+ }
11
+ function prseSym1(str) {
12
+ const res = [0, 0, 0, 0];
13
+ const spl = str.split('+');
14
+ // loop throught all splits
15
+ for (const sp2 of spl) {
16
+ const res2 = prseSym2(sp2);
17
+ res[0] = res[0] + res2[0];
18
+ res[1] = res[1] + res2[1];
19
+ res[2] = res[2] + res2[2];
20
+ res[3] = res[3] + res2[3];
21
+ }
22
+ return res;
23
+ }
24
+ function prseSym2(str) {
25
+ const res = [0, 0, 0, 0];
26
+ const spl = str.split('-');
27
+ let res2;
28
+ // -x-y, _x-z
29
+ for (let i = 0; i < spl.length; i++) {
30
+ if (i === 0 && spl[i] === '') {
31
+ continue;
32
+ }
33
+ let znak = -1;
34
+ if (i === 0) {
35
+ znak = 1;
36
+ }
37
+ res2 = prseSym3(spl[i]);
38
+ res[0] = res[0] + res2[0] * znak;
39
+ res[1] = res[1] + res2[1] * znak;
40
+ res[2] = res[2] + res2[2] * znak;
41
+ res[3] = res[3] + res2[3] * znak;
42
+ }
43
+ return res;
44
+ }
45
+ // Parse Symetry 3
46
+ function prseSym3(str) {
47
+ const res = [0, 0, 0, 0];
48
+ if (str.includes('x')) {
49
+ // 1/2x,0.25*x
50
+ res[0] = prseSym5(str, 'x');
51
+ }
52
+ else if (str.includes('y')) {
53
+ res[1] = prseSym5(str, 'y');
54
+ }
55
+ else if (str.includes('z')) {
56
+ res[2] = prseSym5(str, 'z');
57
+ }
58
+ else {
59
+ // : 1/2 0.33 + 1
60
+ res[3] = prseSym4(str);
61
+ }
62
+ return res;
63
+ }
64
+ function prseSym4(str) {
65
+ let res;
66
+ if (str.includes('/')) {
67
+ // 1/2
68
+ const xpl = str.split('/');
69
+ res = parseFloat(xpl[0]) / parseFloat(xpl[1]);
70
+ }
71
+ else {
72
+ const stp = str.replace('.', ',');
73
+ res = parseFloat(stp);
74
+ }
75
+ return res;
76
+ }
77
+ function prseSym5(str, ch) {
78
+ let res = 0;
79
+ if (str.includes(ch)) {
80
+ if (str.includes('*')) {
81
+ // 1/2x,0.25*x
82
+ const xpl = str.split('*');
83
+ res = prseSym4(xpl[0]);
84
+ if (xpl[1] !== ch) {
85
+ throw new Error('Incorect formula');
86
+ }
87
+ }
88
+ else {
89
+ if (ch === str) {
90
+ return 1;
91
+ }
92
+ res = prseSym4(str.replace(ch, '')); // Replace(ch.ToString(), "")
93
+ }
94
+ }
95
+ return res;
96
+ }
97
+ const s = replaceAll(symetryCode.toLowerCase(), ' ', '');
98
+ const pils = s.split(',');
99
+ if (pils.length !== 3) {
100
+ throw new Error('can not parse symetry code : ' + symetryCode);
101
+ }
102
+ const xv = prseSym1(pils[0]);
103
+ const yv = prseSym1(pils[1]);
104
+ const zv = prseSym1(pils[2]);
105
+ // Double check if the matrix were parsed correctly
106
+ for (let i = 0; i < 4; i++) {
107
+ let r = typeof xv[i] !== 'number' || !isFinite(xv[i]);
108
+ r = r || typeof yv[i] !== 'number' || !isFinite(yv[i]);
109
+ r = r || typeof zv[i] !== 'number' || !isFinite(zv[i]);
110
+ if (r) {
111
+ throw new Error('can not parse symetry code : ' + symetryCode);
112
+ }
113
+ }
114
+ return new Matrix3x4([
115
+ xv[0],
116
+ xv[1],
117
+ xv[2],
118
+ xv[3],
119
+ yv[0],
120
+ yv[1],
121
+ yv[2],
122
+ yv[3],
123
+ zv[0],
124
+ zv[1],
125
+ zv[2],
126
+ zv[3],
127
+ ]);
128
+ }
129
+ a;
130
+ b;
131
+ c;
132
+ alpha;
133
+ beta;
134
+ gamma;
135
+ spaceGroup;
136
+ volume;
137
+ symetryList;
138
+ mOrthMatrix;
139
+ mOrthMatrixInvert;
140
+ constructor(a, b, c, alpha, beta, gamma, spaceGroup) {
141
+ this.a = a;
142
+ this.b = b;
143
+ this.c = c;
144
+ this.alpha = alpha;
145
+ this.beta = beta;
146
+ this.gamma = gamma;
147
+ this.spaceGroup = spaceGroup;
148
+ this.init();
149
+ }
150
+ /**
151
+ * Convert fractional coordinates to Orth
152
+ */
153
+ fractToOrth(coord) {
154
+ return this.mOrthMatrix.project(coord);
155
+ }
156
+ /**
157
+ * Convert Orth coordinates to fractional
158
+ */
159
+ orthToFract(coord) {
160
+ return this.mOrthMatrixInvert.project(coord);
161
+ }
162
+ /**
163
+ * Based on Orth box conner coordinates Return
164
+ * posible tranactions to get evry posible dot from this box
165
+ */
166
+ transactionsFromOrthBox(point1, point2) {
167
+ // Normalize points
168
+ const p1 = new Vec3(Math.min(point1.x, point2.x), Math.min(point1.y, point2.y), Math.min(point1.z, point2.z));
169
+ const p2 = new Vec3(Math.max(point1.x, point2.x), Math.max(point1.y, point2.y), Math.max(point1.z, point2.z));
170
+ // Create vectors of the box
171
+ const v1 = new Vec3(p1.x, p1.y, p1.z);
172
+ const v2 = new Vec3(p2.x, p1.y, p1.z);
173
+ const v3 = new Vec3(p1.x, p2.y, p1.z);
174
+ const v4 = new Vec3(p1.x, p1.y, p2.z);
175
+ const v5 = new Vec3(p2.x, p2.y, p1.z);
176
+ const v6 = new Vec3(p2.x, p1.y, p2.z);
177
+ const v7 = new Vec3(p1.x, p2.y, p2.z);
178
+ const v8 = new Vec3(p2.x, p2.y, p2.z);
179
+ // VP 1 - VP2
180
+ const vp1 = this.orthToFract(v1);
181
+ const vp2 = this.orthToFract(v2);
182
+ const vp3 = this.orthToFract(v3);
183
+ const vp4 = this.orthToFract(v4);
184
+ const vp5 = this.orthToFract(v5);
185
+ const vp6 = this.orthToFract(v6);
186
+ const vp7 = this.orthToFract(v7);
187
+ const vp8 = this.orthToFract(v8);
188
+ const MinX = Math.floor(Math.min(vp1.x, vp2.x, vp3.x, vp4.x, vp5.x, vp6.x, vp7.x, vp8.x));
189
+ const MinY = Math.floor(Math.min(vp1.y, vp2.y, vp3.y, vp4.y, vp5.y, vp6.y, vp7.y, vp8.y));
190
+ const MinZ = Math.floor(Math.min(vp1.z, vp2.z, vp3.z, vp4.z, vp5.z, vp6.z, vp7.z, vp8.z));
191
+ const MaxX = Math.ceil(Math.max(vp1.x, vp2.x, vp3.x, vp4.x, vp5.x, vp6.x, vp7.x, vp8.x));
192
+ const MaxY = Math.ceil(Math.max(vp1.y, vp2.y, vp3.y, vp4.y, vp5.y, vp6.y, vp7.y, vp8.y));
193
+ const MaxZ = Math.ceil(Math.max(vp1.z, vp2.z, vp3.z, vp4.z, vp5.z, vp6.z, vp7.z, vp8.z));
194
+ const res = [];
195
+ // Create range of posible translations;
196
+ for (let i = MinX; i < MaxX; i++) {
197
+ for (let j = MinY; j < MaxY; j++) {
198
+ for (let k = MinZ; k < MaxZ; k++) {
199
+ res.push(new Vec3(i, j, k));
200
+ }
201
+ }
202
+ }
203
+ return res;
204
+ }
205
+ init() {
206
+ // PREPARE PROJECTION MATRIXES
207
+ const pAlpha = this.alpha * 0.017453292519943295; // pi/180 ;
208
+ const pBeta = this.beta * 0.017453292519943295;
209
+ const pGamma = this.gamma * 0.017453292519943295;
210
+ const v = Math.sqrt(1 -
211
+ Math.cos(pAlpha) * Math.cos(pAlpha) -
212
+ Math.cos(pBeta) * Math.cos(pBeta) -
213
+ Math.cos(pGamma) * Math.cos(pGamma) +
214
+ 2 * Math.cos(pAlpha) * Math.cos(pBeta) * Math.cos(pGamma));
215
+ const cc = Math.sin(pGamma) / this.c / v;
216
+ const alphaa = Math.acos((Math.cos(pBeta) * Math.cos(pGamma) - Math.cos(pAlpha)) / Math.sin(pBeta) / Math.sin(pGamma));
217
+ this.mOrthMatrix = new Matrix3x3();
218
+ this.mOrthMatrix.set(0, 0, this.a);
219
+ this.mOrthMatrix.set(0, 1, this.b * Math.cos(pGamma));
220
+ this.mOrthMatrix.set(0, 2, this.c * Math.cos(pBeta));
221
+ this.mOrthMatrix.set(1, 0, 0);
222
+ this.mOrthMatrix.set(1, 1, this.b * Math.sin(pGamma));
223
+ this.mOrthMatrix.set(1, 2, -this.c * Math.sin(pBeta) * Math.cos(alphaa));
224
+ this.mOrthMatrix.set(2, 0, 0);
225
+ this.mOrthMatrix.set(2, 1, 0);
226
+ this.mOrthMatrix.set(2, 2, 1 / cc);
227
+ this.mOrthMatrixInvert = Matrix3x3.inverse(this.mOrthMatrix);
228
+ this.volume = v;
229
+ this.symetryList = [];
230
+ // PREPARE Symetry LIST
231
+ //
232
+ for (const symStr of this.spaceGroup.s) {
233
+ const sym = UnitCell.getMatrixFromSymetry(symStr);
234
+ this.symetryList.push(sym);
235
+ }
236
+ }
237
+ }
238
+ //# sourceMappingURL=UnitCell.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UnitCell.js","sourceRoot":"","sources":["../../src/molecule3d/UnitCell.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { Molecule3D } from '../Molecule3D.js';
2
+ export interface IMoleculeReader {
3
+ name: string;
4
+ extension: string[];
5
+ description: string;
6
+ loadMolecule(molecule: Molecule3D, data: string | object): void;
7
+ }
8
+ //# sourceMappingURL=IMoleculeReader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IMoleculeReader.d.ts","sourceRoot":"","sources":["../../../src/molecule3d/io/IMoleculeReader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;CACjE"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=IMoleculeReader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IMoleculeReader.js","sourceRoot":"","sources":["../../../src/molecule3d/io/IMoleculeReader.ts"],"names":[],"mappings":""}
@@ -1,11 +1,12 @@
1
- import { Molecule3D } from "../Molecule3D";
2
- import { IMoleculeReader } from "./IMoleculeReader";
3
- export declare class MoleculeReaderJCIF implements IMoleculeReader {
4
- name: string;
5
- extension: string[];
6
- description: string;
7
- constructor();
8
- loadMolecule(molecule: Molecule3D, data: object): void;
9
- private remapCoordLoop(data);
10
- private extractCoordLoop(data);
11
- }
1
+ import { Molecule3D } from '../Molecule3D.js';
2
+ import { IMoleculeReader } from './IMoleculeReader.js';
3
+ export declare class MoleculeReaderJCIF implements IMoleculeReader {
4
+ name: string;
5
+ extension: string[];
6
+ description: string;
7
+ constructor();
8
+ loadMolecule(molecule: Molecule3D, data: object): void;
9
+ private remapCoordLoop;
10
+ private extractCoordLoop;
11
+ }
12
+ //# sourceMappingURL=MoleculeReaderJCIF.d.ts.map