@chemistry/crystalview 1.0.9 → 3.0.0
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/README.md +24 -20
- package/dist/{src/camera → camera}/Camera.d.ts +69 -63
- package/dist/camera/Camera.d.ts.map +1 -0
- package/dist/camera/Camera.js +225 -0
- package/dist/camera/Camera.js.map +1 -0
- package/dist/camera/ICamera.d.ts +9 -0
- package/dist/camera/ICamera.d.ts.map +1 -0
- package/dist/camera/ICamera.js +2 -0
- package/dist/camera/ICamera.js.map +1 -0
- package/dist/{src/crystal-view.d.ts → crystal-view.d.ts} +25 -24
- package/dist/crystal-view.d.ts.map +1 -0
- package/dist/crystal-view.js +169 -0
- package/dist/crystal-view.js.map +1 -0
- package/dist/crystalview.css +47 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/{src/molecule3d → molecule3d}/Atom.d.ts +14 -13
- package/dist/molecule3d/Atom.d.ts.map +1 -0
- package/dist/molecule3d/Atom.js +15 -0
- package/dist/molecule3d/Atom.js.map +1 -0
- package/dist/{src/molecule3d → molecule3d}/Bond.d.ts +8 -7
- package/dist/molecule3d/Bond.d.ts.map +1 -0
- package/dist/molecule3d/Bond.js +8 -0
- package/dist/molecule3d/Bond.js.map +1 -0
- package/dist/{src/molecule3d → molecule3d}/CellAtom.d.ts +96 -96
- package/dist/molecule3d/CellAtom.d.ts.map +1 -0
- package/dist/molecule3d/CellAtom.js +83 -0
- package/dist/molecule3d/CellAtom.js.map +1 -0
- package/dist/{src/molecule3d → molecule3d}/Link.d.ts +15 -14
- package/dist/molecule3d/Link.d.ts.map +1 -0
- package/dist/molecule3d/Link.js +9 -0
- package/dist/molecule3d/Link.js.map +1 -0
- package/dist/{src/molecule3d → molecule3d}/Marker.d.ts +9 -8
- package/dist/molecule3d/Marker.d.ts.map +1 -0
- package/dist/molecule3d/Marker.js +8 -0
- package/dist/molecule3d/Marker.js.map +1 -0
- package/dist/{src/molecule3d → molecule3d}/MarkerContact.d.ts +7 -6
- package/dist/molecule3d/MarkerContact.d.ts.map +1 -0
- package/dist/molecule3d/MarkerContact.js +7 -0
- package/dist/molecule3d/MarkerContact.js.map +1 -0
- package/dist/{src/molecule3d → molecule3d}/Molecule3D.d.ts +45 -44
- package/dist/molecule3d/Molecule3D.d.ts.map +1 -0
- package/dist/molecule3d/Molecule3D.js +126 -0
- package/dist/molecule3d/Molecule3D.js.map +1 -0
- package/dist/{src/molecule3d → molecule3d}/MoleculeBuilder.d.ts +20 -19
- package/dist/molecule3d/MoleculeBuilder.d.ts.map +1 -0
- package/dist/molecule3d/MoleculeBuilder.js +130 -0
- package/dist/molecule3d/MoleculeBuilder.js.map +1 -0
- package/dist/molecule3d/MoleculeConnector.d.ts +10 -0
- package/dist/molecule3d/MoleculeConnector.d.ts.map +1 -0
- package/dist/molecule3d/MoleculeConnector.js +106 -0
- package/dist/molecule3d/MoleculeConnector.js.map +1 -0
- package/dist/{src/molecule3d → molecule3d}/UnitCell.d.ts +36 -35
- package/dist/molecule3d/UnitCell.d.ts.map +1 -0
- package/dist/molecule3d/UnitCell.js +227 -0
- package/dist/molecule3d/UnitCell.js.map +1 -0
- package/dist/molecule3d/io/IMoleculeReader.d.ts +8 -0
- package/dist/molecule3d/io/IMoleculeReader.d.ts.map +1 -0
- package/dist/molecule3d/io/IMoleculeReader.js +2 -0
- package/dist/molecule3d/io/IMoleculeReader.js.map +1 -0
- package/dist/{src/molecule3d → molecule3d}/io/MoleculeReaderJCIF.d.ts +12 -11
- package/dist/molecule3d/io/MoleculeReaderJCIF.d.ts.map +1 -0
- package/dist/molecule3d/io/MoleculeReaderJCIF.js +112 -0
- package/dist/molecule3d/io/MoleculeReaderJCIF.js.map +1 -0
- package/dist/{src/painter → painter}/CanvasContext.d.ts +15 -14
- package/dist/painter/CanvasContext.d.ts.map +1 -0
- package/dist/painter/CanvasContext.js +67 -0
- package/dist/painter/CanvasContext.js.map +1 -0
- package/dist/painter/Painter.d.ts +36 -0
- package/dist/painter/Painter.d.ts.map +1 -0
- package/dist/painter/Painter.js +235 -0
- package/dist/painter/Painter.js.map +1 -0
- package/dist/ui/ContextMenu.d.ts +24 -0
- package/dist/ui/ContextMenu.d.ts.map +1 -0
- package/dist/ui/ContextMenu.js +140 -0
- package/dist/ui/ContextMenu.js.map +1 -0
- package/dist/{src/ui → ui}/ContextMenuItem.d.ts +18 -17
- package/dist/ui/ContextMenuItem.d.ts.map +1 -0
- package/dist/ui/ContextMenuItem.js +66 -0
- package/dist/ui/ContextMenuItem.js.map +1 -0
- package/package.json +68 -87
- package/dist/crystal-view.min.js +0 -24
- package/dist/src/molecule3d/MoleculeConnector.d.ts +0 -9
- package/dist/src/painter/Painter.d.ts +0 -35
- package/dist/src/ui/ContextMenu.d.ts +0 -24
- package/package-lock.json +0 -9410
|
@@ -1,35 +1,36 @@
|
|
|
1
|
-
import { Matrix3x4, Vec3 } from
|
|
2
|
-
import {
|
|
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:
|
|
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:
|
|
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,227 @@
|
|
|
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
|
+
constructor(a, b, c, alpha, beta, gamma, spaceGroup) {
|
|
130
|
+
this.a = a;
|
|
131
|
+
this.b = b;
|
|
132
|
+
this.c = c;
|
|
133
|
+
this.alpha = alpha;
|
|
134
|
+
this.beta = beta;
|
|
135
|
+
this.gamma = gamma;
|
|
136
|
+
this.spaceGroup = spaceGroup;
|
|
137
|
+
this.init();
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Convert fractional coordinates to Orth
|
|
141
|
+
*/
|
|
142
|
+
fractToOrth(coord) {
|
|
143
|
+
return this.mOrthMatrix.project(coord);
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Convert Orth coordinates to fractional
|
|
147
|
+
*/
|
|
148
|
+
orthToFract(coord) {
|
|
149
|
+
return this.mOrthMatrixInvert.project(coord);
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Based on Orth box conner coordinates Return
|
|
153
|
+
* posible tranactions to get evry posible dot from this box
|
|
154
|
+
*/
|
|
155
|
+
transactionsFromOrthBox(point1, point2) {
|
|
156
|
+
// Normalize points
|
|
157
|
+
const p1 = new Vec3(Math.min(point1.x, point2.x), Math.min(point1.y, point2.y), Math.min(point1.z, point2.z));
|
|
158
|
+
const p2 = new Vec3(Math.max(point1.x, point2.x), Math.max(point1.y, point2.y), Math.max(point1.z, point2.z));
|
|
159
|
+
// Create vectors of the box
|
|
160
|
+
const v1 = new Vec3(p1.x, p1.y, p1.z);
|
|
161
|
+
const v2 = new Vec3(p2.x, p1.y, p1.z);
|
|
162
|
+
const v3 = new Vec3(p1.x, p2.y, p1.z);
|
|
163
|
+
const v4 = new Vec3(p1.x, p1.y, p2.z);
|
|
164
|
+
const v5 = new Vec3(p2.x, p2.y, p1.z);
|
|
165
|
+
const v6 = new Vec3(p2.x, p1.y, p2.z);
|
|
166
|
+
const v7 = new Vec3(p1.x, p2.y, p2.z);
|
|
167
|
+
const v8 = new Vec3(p2.x, p2.y, p2.z);
|
|
168
|
+
// VP 1 - VP2
|
|
169
|
+
const vp1 = this.orthToFract(v1);
|
|
170
|
+
const vp2 = this.orthToFract(v2);
|
|
171
|
+
const vp3 = this.orthToFract(v3);
|
|
172
|
+
const vp4 = this.orthToFract(v4);
|
|
173
|
+
const vp5 = this.orthToFract(v5);
|
|
174
|
+
const vp6 = this.orthToFract(v6);
|
|
175
|
+
const vp7 = this.orthToFract(v7);
|
|
176
|
+
const vp8 = this.orthToFract(v8);
|
|
177
|
+
const MinX = Math.floor(Math.min(vp1.x, vp2.x, vp3.x, vp4.x, vp5.x, vp6.x, vp7.x, vp8.x));
|
|
178
|
+
const MinY = Math.floor(Math.min(vp1.y, vp2.y, vp3.y, vp4.y, vp5.y, vp6.y, vp7.y, vp8.y));
|
|
179
|
+
const MinZ = Math.floor(Math.min(vp1.z, vp2.z, vp3.z, vp4.z, vp5.z, vp6.z, vp7.z, vp8.z));
|
|
180
|
+
const MaxX = Math.ceil(Math.max(vp1.x, vp2.x, vp3.x, vp4.x, vp5.x, vp6.x, vp7.x, vp8.x));
|
|
181
|
+
const MaxY = Math.ceil(Math.max(vp1.y, vp2.y, vp3.y, vp4.y, vp5.y, vp6.y, vp7.y, vp8.y));
|
|
182
|
+
const MaxZ = Math.ceil(Math.max(vp1.z, vp2.z, vp3.z, vp4.z, vp5.z, vp6.z, vp7.z, vp8.z));
|
|
183
|
+
const res = [];
|
|
184
|
+
// Create range of posible translations;
|
|
185
|
+
for (let i = MinX; i < MaxX; i++) {
|
|
186
|
+
for (let j = MinY; j < MaxY; j++) {
|
|
187
|
+
for (let k = MinZ; k < MaxZ; k++) {
|
|
188
|
+
res.push(new Vec3(i, j, k));
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
return res;
|
|
193
|
+
}
|
|
194
|
+
init() {
|
|
195
|
+
// PREPARE PROJECTION MATRIXES
|
|
196
|
+
const pAlpha = this.alpha * 0.017453292519943295; // pi/180 ;
|
|
197
|
+
const pBeta = this.beta * 0.017453292519943295;
|
|
198
|
+
const pGamma = this.gamma * 0.017453292519943295;
|
|
199
|
+
const v = Math.sqrt(1 -
|
|
200
|
+
Math.cos(pAlpha) * Math.cos(pAlpha) -
|
|
201
|
+
Math.cos(pBeta) * Math.cos(pBeta) -
|
|
202
|
+
Math.cos(pGamma) * Math.cos(pGamma) +
|
|
203
|
+
2 * Math.cos(pAlpha) * Math.cos(pBeta) * Math.cos(pGamma));
|
|
204
|
+
const cc = Math.sin(pGamma) / this.c / v;
|
|
205
|
+
const alphaa = Math.acos((Math.cos(pBeta) * Math.cos(pGamma) - Math.cos(pAlpha)) / Math.sin(pBeta) / Math.sin(pGamma));
|
|
206
|
+
this.mOrthMatrix = new Matrix3x3();
|
|
207
|
+
this.mOrthMatrix.set(0, 0, this.a);
|
|
208
|
+
this.mOrthMatrix.set(0, 1, this.b * Math.cos(pGamma));
|
|
209
|
+
this.mOrthMatrix.set(0, 2, this.c * Math.cos(pBeta));
|
|
210
|
+
this.mOrthMatrix.set(1, 0, 0);
|
|
211
|
+
this.mOrthMatrix.set(1, 1, this.b * Math.sin(pGamma));
|
|
212
|
+
this.mOrthMatrix.set(1, 2, -this.c * Math.sin(pBeta) * Math.cos(alphaa));
|
|
213
|
+
this.mOrthMatrix.set(2, 0, 0);
|
|
214
|
+
this.mOrthMatrix.set(2, 1, 0);
|
|
215
|
+
this.mOrthMatrix.set(2, 2, 1 / cc);
|
|
216
|
+
this.mOrthMatrixInvert = Matrix3x3.inverse(this.mOrthMatrix);
|
|
217
|
+
this.volume = v;
|
|
218
|
+
this.symetryList = [];
|
|
219
|
+
// PREPARE Symetry LIST
|
|
220
|
+
//
|
|
221
|
+
for (const symStr of this.spaceGroup.s) {
|
|
222
|
+
const sym = UnitCell.getMatrixFromSymetry(symStr);
|
|
223
|
+
this.symetryList.push(sym);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
//# 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 @@
|
|
|
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 @@
|
|
|
1
|
+
{"version":3,"file":"IMoleculeReader.js","sourceRoot":"","sources":["../../../src/molecule3d/io/IMoleculeReader.ts"],"names":[],"mappings":""}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import { Molecule3D } from
|
|
2
|
-
import { IMoleculeReader } from
|
|
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
|
-
}
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MoleculeReaderJCIF.d.ts","sourceRoot":"","sources":["../../../src/molecule3d/io/MoleculeReaderJCIF.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AA+BvD,qBAAa,kBAAmB,YAAW,eAAe;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;;IAQpB,YAAY,CAAC,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM;IAsDtD,OAAO,CAAC,cAAc;IA4DtB,OAAO,CAAC,gBAAgB;CAQzB"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { SpaceGroup } from '@chemistry/space-groups';
|
|
2
|
+
import { UnitCell } from '../UnitCell.js';
|
|
3
|
+
export class MoleculeReaderJCIF {
|
|
4
|
+
constructor() {
|
|
5
|
+
this.name = 'jcif';
|
|
6
|
+
this.extension = ['jcif'];
|
|
7
|
+
this.description = 'jcif molecule format';
|
|
8
|
+
}
|
|
9
|
+
loadMolecule(molecule, data) {
|
|
10
|
+
molecule.clear();
|
|
11
|
+
const jcif = data;
|
|
12
|
+
const a = parseFloat(jcif.a);
|
|
13
|
+
const b = parseFloat(jcif.b);
|
|
14
|
+
const c = parseFloat(jcif.c);
|
|
15
|
+
const alpha = parseFloat(jcif.alpha);
|
|
16
|
+
const beta = parseFloat(jcif.beta);
|
|
17
|
+
const gamma = parseFloat(jcif.gamma);
|
|
18
|
+
if (!isFinite(a) ||
|
|
19
|
+
!isFinite(b) ||
|
|
20
|
+
!isFinite(c) ||
|
|
21
|
+
!isFinite(alpha) ||
|
|
22
|
+
!isFinite(beta) ||
|
|
23
|
+
!isFinite(gamma)) {
|
|
24
|
+
throw new Error('Wrong Unit Cell Params');
|
|
25
|
+
}
|
|
26
|
+
if (!jcif.sgHall && !jcif.sg) {
|
|
27
|
+
throw new Error('Space Group is not provided');
|
|
28
|
+
}
|
|
29
|
+
let spaceGroup = null;
|
|
30
|
+
if (jcif.sgHall) {
|
|
31
|
+
spaceGroup = SpaceGroup.getByHallName(jcif.sgHall);
|
|
32
|
+
}
|
|
33
|
+
if (!spaceGroup && jcif.sg) {
|
|
34
|
+
spaceGroup = SpaceGroup.getByHMName(jcif.sg);
|
|
35
|
+
}
|
|
36
|
+
if (!spaceGroup) {
|
|
37
|
+
throw new Error('Space Group not founnd');
|
|
38
|
+
}
|
|
39
|
+
// Create Unit Cell object
|
|
40
|
+
const unitCell = new UnitCell(a, b, c, alpha, beta, gamma, spaceGroup);
|
|
41
|
+
molecule.unitCell = unitCell;
|
|
42
|
+
const coordLoop = this.extractCoordLoop(jcif);
|
|
43
|
+
let atomRows = [];
|
|
44
|
+
if (coordLoop.length > 0) {
|
|
45
|
+
atomRows = this.remapCoordLoop(coordLoop[0]);
|
|
46
|
+
}
|
|
47
|
+
atomRows.forEach((atomData) => {
|
|
48
|
+
molecule.addCellAtom(atomData);
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
remapCoordLoop(data) {
|
|
52
|
+
const colsMap = {
|
|
53
|
+
_atom_site_U_iso_or_equiv: -1,
|
|
54
|
+
_atom_site_disorder_assembly: -1,
|
|
55
|
+
_atom_site_disorder_group: -1,
|
|
56
|
+
_atom_site_fract_x: -1,
|
|
57
|
+
_atom_site_fract_y: -1,
|
|
58
|
+
_atom_site_fract_z: -1,
|
|
59
|
+
_atom_site_label: -1,
|
|
60
|
+
_atom_site_occupancy: -1,
|
|
61
|
+
_atom_site_type_symbol: -1,
|
|
62
|
+
};
|
|
63
|
+
// Set position
|
|
64
|
+
Object.keys(colsMap).forEach((key) => {
|
|
65
|
+
colsMap[key] = data.columns.indexOf(key);
|
|
66
|
+
});
|
|
67
|
+
function getData(code, row) {
|
|
68
|
+
if (typeof colsMap[code] === 'number' && colsMap[code] !== -1) {
|
|
69
|
+
return row[colsMap[code]];
|
|
70
|
+
}
|
|
71
|
+
return undefined;
|
|
72
|
+
}
|
|
73
|
+
function getDataNum(code, row, defaultValue) {
|
|
74
|
+
const valueStr = getData(code, row);
|
|
75
|
+
if (valueStr === undefined) {
|
|
76
|
+
return defaultValue;
|
|
77
|
+
}
|
|
78
|
+
const value = parseFloat(valueStr);
|
|
79
|
+
if (!isFinite(value)) {
|
|
80
|
+
return defaultValue;
|
|
81
|
+
}
|
|
82
|
+
return value;
|
|
83
|
+
}
|
|
84
|
+
let atomRows = [];
|
|
85
|
+
if (Array.isArray(data.data)) {
|
|
86
|
+
atomRows = data.data.map((row) => {
|
|
87
|
+
const type = getData('_atom_site_type_symbol', row) ?? 'Q';
|
|
88
|
+
return {
|
|
89
|
+
assembly: getData('_atom_site_disorder_assembly', row) ?? '',
|
|
90
|
+
group: getData('_atom_site_disorder_group', row) ?? '',
|
|
91
|
+
label: getData('_atom_site_label', row) ?? type,
|
|
92
|
+
occupancy: getDataNum('_atom_site_occupancy', row, 1),
|
|
93
|
+
type,
|
|
94
|
+
uiso: getDataNum('_atom_site_U_iso_or_equiv', row, 0),
|
|
95
|
+
x: getDataNum('_atom_site_fract_x', row, 0),
|
|
96
|
+
y: getDataNum('_atom_site_fract_y', row, 0),
|
|
97
|
+
z: getDataNum('_atom_site_fract_z', row, 0),
|
|
98
|
+
};
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
return atomRows;
|
|
102
|
+
}
|
|
103
|
+
extractCoordLoop(data) {
|
|
104
|
+
if (Array.isArray(data.loops)) {
|
|
105
|
+
return data.loops.filter((loopItem) => {
|
|
106
|
+
return loopItem.columns.includes('_atom_site_fract_x');
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
return [];
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=MoleculeReaderJCIF.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MoleculeReaderJCIF.js","sourceRoot":"","sources":["../../../src/molecule3d/io/MoleculeReaderJCIF.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,15 @@
|
|
|
1
|
-
export declare class CanvasContext {
|
|
2
|
-
private context;
|
|
3
|
-
constructor(context: CanvasRenderingContext2D);
|
|
4
|
-
save(): void;
|
|
5
|
-
restore(): void;
|
|
6
|
-
center(): void;
|
|
7
|
-
getCenterX(): number;
|
|
8
|
-
getCenterY(): number;
|
|
9
|
-
clear(bgcolor: string): void;
|
|
10
|
-
circle(x: number, y: number, r: number, color: string): void;
|
|
11
|
-
line(x1: number, y1: number, x2: number, y2: number, color: string): void;
|
|
12
|
-
linedashed(x1: number, y1: number, x2: number, y2: number, color: string, dash: number[]): void;
|
|
13
|
-
text(text: string, x: number, y: number, color: string, font: string): void;
|
|
14
|
-
}
|
|
1
|
+
export declare class CanvasContext {
|
|
2
|
+
private context;
|
|
3
|
+
constructor(context: CanvasRenderingContext2D);
|
|
4
|
+
save(): void;
|
|
5
|
+
restore(): void;
|
|
6
|
+
center(): void;
|
|
7
|
+
getCenterX(): number;
|
|
8
|
+
getCenterY(): number;
|
|
9
|
+
clear(bgcolor: string): void;
|
|
10
|
+
circle(x: number, y: number, r: number, color: string): void;
|
|
11
|
+
line(x1: number, y1: number, x2: number, y2: number, color: string): void;
|
|
12
|
+
linedashed(x1: number, y1: number, x2: number, y2: number, color: string, dash: number[]): void;
|
|
13
|
+
text(text: string, x: number, y: number, color: string, font: string): void;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=CanvasContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CanvasContext.d.ts","sourceRoot":"","sources":["../../src/painter/CanvasContext.ts"],"names":[],"mappings":"AAAA,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAA2B;gBAE9B,OAAO,EAAE,wBAAwB;IAItC,IAAI;IAGJ,OAAO;IAIP,MAAM;IAMN,UAAU,IAAI,MAAM;IAIpB,UAAU,IAAI,MAAM;IAIpB,KAAK,CAAC,OAAO,EAAE,MAAM;IASrB,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAUrD,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAWlE,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;IAkBxF,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;CAO5E"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
export class CanvasContext {
|
|
2
|
+
constructor(context) {
|
|
3
|
+
this.context = context;
|
|
4
|
+
}
|
|
5
|
+
save() {
|
|
6
|
+
this.context.save();
|
|
7
|
+
}
|
|
8
|
+
restore() {
|
|
9
|
+
this.context.restore();
|
|
10
|
+
}
|
|
11
|
+
center() {
|
|
12
|
+
const ctx = this.context;
|
|
13
|
+
// Change coordinates; so (0,0) :: now corespond to coordinate center
|
|
14
|
+
ctx.translate(this.getCenterX(), this.getCenterY());
|
|
15
|
+
}
|
|
16
|
+
getCenterX() {
|
|
17
|
+
return this.context.canvas.width / 2;
|
|
18
|
+
}
|
|
19
|
+
getCenterY() {
|
|
20
|
+
return this.context.canvas.height / 2;
|
|
21
|
+
}
|
|
22
|
+
clear(bgcolor) {
|
|
23
|
+
const ctx = this.context;
|
|
24
|
+
const width = this.context.canvas.width;
|
|
25
|
+
const height = this.context.canvas.height;
|
|
26
|
+
ctx.fillStyle = bgcolor;
|
|
27
|
+
ctx.fillRect(0, 0, width, height);
|
|
28
|
+
}
|
|
29
|
+
circle(x, y, r, color) {
|
|
30
|
+
const ctx = this.context;
|
|
31
|
+
ctx.beginPath();
|
|
32
|
+
ctx.arc(x, y, r, 0, 2 * Math.PI, true);
|
|
33
|
+
ctx.closePath();
|
|
34
|
+
ctx.fillStyle = color;
|
|
35
|
+
ctx.fill();
|
|
36
|
+
}
|
|
37
|
+
line(x1, y1, x2, y2, color) {
|
|
38
|
+
const ctx = this.context;
|
|
39
|
+
ctx.beginPath();
|
|
40
|
+
ctx.moveTo(x1, y1);
|
|
41
|
+
ctx.lineTo(x2, y2);
|
|
42
|
+
ctx.strokeStyle = color;
|
|
43
|
+
ctx.lineWidth = 1;
|
|
44
|
+
ctx.stroke();
|
|
45
|
+
}
|
|
46
|
+
linedashed(x1, y1, x2, y2, color, dash) {
|
|
47
|
+
const ctx = this.context;
|
|
48
|
+
ctx.save();
|
|
49
|
+
if (ctx.setLineDash) {
|
|
50
|
+
ctx.setLineDash(dash);
|
|
51
|
+
}
|
|
52
|
+
ctx.beginPath();
|
|
53
|
+
ctx.moveTo(x1, y1);
|
|
54
|
+
ctx.lineTo(x2, y2);
|
|
55
|
+
ctx.strokeStyle = color;
|
|
56
|
+
ctx.lineWidth = 1;
|
|
57
|
+
ctx.stroke();
|
|
58
|
+
this.restore();
|
|
59
|
+
}
|
|
60
|
+
text(text, x, y, color, font) {
|
|
61
|
+
const ctx = this.context;
|
|
62
|
+
ctx.font = font;
|
|
63
|
+
ctx.fillStyle = color;
|
|
64
|
+
ctx.fillText(text, x, y);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=CanvasContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CanvasContext.js","sourceRoot":"","sources":["../../src/painter/CanvasContext.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { ICamera } from '../camera/ICamera.js';
|
|
2
|
+
import { Marker } from '../molecule3d/Marker.js';
|
|
3
|
+
import { Molecule3D } from '../molecule3d/Molecule3D.js';
|
|
4
|
+
export declare class Painter {
|
|
5
|
+
private context;
|
|
6
|
+
private options;
|
|
7
|
+
private zBuffer;
|
|
8
|
+
constructor(context: CanvasRenderingContext2D, options: {
|
|
9
|
+
bgcolor: string;
|
|
10
|
+
showUnitCell: boolean;
|
|
11
|
+
showMarkers: boolean;
|
|
12
|
+
showLabels: boolean;
|
|
13
|
+
});
|
|
14
|
+
draw(molecule: Molecule3D, camera: ICamera): void;
|
|
15
|
+
uprojectToMarker(data: {
|
|
16
|
+
molecule: Molecule3D;
|
|
17
|
+
camera: ICamera;
|
|
18
|
+
x: number;
|
|
19
|
+
y: number;
|
|
20
|
+
}): Marker | null;
|
|
21
|
+
private drawZBuffer;
|
|
22
|
+
private unitCellLine;
|
|
23
|
+
private drawBondLine;
|
|
24
|
+
private drawAtom;
|
|
25
|
+
private drawMarker;
|
|
26
|
+
private drawMarkerContact;
|
|
27
|
+
private drawLabel;
|
|
28
|
+
private prepareMarkers;
|
|
29
|
+
private prepareLabels;
|
|
30
|
+
private prepareMarkersContacts;
|
|
31
|
+
private prepareAxis;
|
|
32
|
+
private prepareUnitCell;
|
|
33
|
+
private prepareBonds;
|
|
34
|
+
private prepareAtoms;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=Painter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Painter.d.ts","sourceRoot":"","sources":["../../src/painter/Painter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAmBzD,qBAAa,OAAO;IAClB,OAAO,CAAC,OAAO,CAAgB;IAE/B,OAAO,CAAC,OAAO,CAKb;IACF,OAAO,CAAC,OAAO,CAAqB;gBAGlC,OAAO,EAAE,wBAAwB,EACjC,OAAO,EAAE;QACP,OAAO,EAAE,MAAM,CAAC;QAChB,YAAY,EAAE,OAAO,CAAC;QACtB,WAAW,EAAE,OAAO,CAAC;QACrB,UAAU,EAAE,OAAO,CAAC;KACrB;IAMI,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO;IAiC1C,gBAAgB,CAAC,IAAI,EAAE;QAC5B,QAAQ,EAAE,UAAU,CAAC;QACrB,MAAM,EAAE,OAAO,CAAC;QAChB,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;KACX,GAAG,MAAM,GAAG,IAAI;IA2BjB,OAAO,CAAC,WAAW;IA4BnB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,cAAc;IAatB,OAAO,CAAC,aAAa;IAoBrB,OAAO,CAAC,sBAAsB;IAgB9B,OAAO,CAAC,WAAW;IAenB,OAAO,CAAC,eAAe;IAuCvB,OAAO,CAAC,YAAY;IAkCpB,OAAO,CAAC,YAAY;CAgBrB"}
|