molstar
Version:
A comprehensive macromolecular library.
40 lines (39 loc) • 1.5 kB
JavaScript
/**
* Copyright (c) 2019-2020 mol* contributors, licensed under MIT, See LICENSE file for more info.
*
* @author Alexander Rose <alexander.rose@weirdbyte.de>
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.Cell = void 0;
var linear_algebra_1 = require("../../linear-algebra");
function Cell() {
return Cell.empty();
}
exports.Cell = Cell;
(function (Cell) {
function create(size, anglesInRadians) {
return { size: size, anglesInRadians: anglesInRadians };
}
Cell.create = create;
function empty() {
return create((0, linear_algebra_1.Vec3)(), (0, linear_algebra_1.Vec3)());
}
Cell.empty = empty;
function fromBasis(x, y, z) {
var a = linear_algebra_1.Vec3.magnitude(x);
var b = linear_algebra_1.Vec3.magnitude(y);
var c = linear_algebra_1.Vec3.magnitude(z);
var alpha = Math.acos(linear_algebra_1.Vec3.dot(y, z) / (b * c));
var beta = Math.acos(linear_algebra_1.Vec3.dot(x, z) / (a * c));
var gamma = Math.acos(linear_algebra_1.Vec3.dot(x, y) / (a * b));
if (a <= 0 || b <= 0 || c <= 0 || alpha >= Math.PI || beta >= Math.PI || gamma >= Math.PI) {
return empty();
}
else {
return create(linear_algebra_1.Vec3.create(a, b, c), linear_algebra_1.Vec3.create(alpha, beta, gamma));
}
}
Cell.fromBasis = fromBasis;
})(Cell || (Cell = {}));
exports.Cell = Cell;
;