molstar
Version:
A comprehensive macromolecular library.
60 lines • 1.83 kB
JavaScript
/**
* Copyright (c) 2018-2021 mol* contributors, licensed under MIT, See LICENSE file for more info.
*
* @author Alexander Rose <alexander.rose@weirdbyte.de>
*/
export var halfPI = Math.PI / 2;
export var PiDiv180 = Math.PI / 180;
export function degToRad(deg) {
return deg * PiDiv180; // deg * Math.PI / 180
}
export function radToDeg(rad) {
return rad / PiDiv180; // rad * 180 / Math.PI
}
export function isPowerOfTwo(x) {
return (x !== 0) && (x & (x - 1)) === 0;
}
/** return the value that has the largest absolute value */
export function absMax() {
var values = [];
for (var _i = 0; _i < arguments.length; _i++) {
values[_i] = arguments[_i];
}
var max = 0;
var absMax = 0;
for (var i = 0, il = values.length; i < il; ++i) {
var value = values[i];
var abs = Math.abs(value);
if (abs > absMax) {
max = value;
absMax = abs;
}
}
return max;
}
/** Length of an arc with angle in radians */
export function arcLength(angle, radius) {
return angle * radius;
}
/** Create an outward spiral of given `radius` on a 2d grid */
export function spiral2d(radius) {
var _a;
var x = 0;
var y = 0;
var delta = [0, -1];
var size = radius * 2 + 1;
var halfSize = size / 2;
var out = [];
for (var i = Math.pow(size, 2); i > 0; --i) {
if ((-halfSize < x && x <= halfSize) && (-halfSize < y && y <= halfSize)) {
out.push([x, y]);
}
if (x === y || (x < 0 && x === -y) || (x > 0 && x === 1 - y)) {
_a = [-delta[1], delta[0]], delta[0] = _a[0], delta[1] = _a[1]; // change direction
}
x += delta[0];
y += delta[1];
}
return out;
}
//# sourceMappingURL=misc.js.map