molstar
Version:
A comprehensive macromolecular library.
50 lines (49 loc) • 2.27 kB
TypeScript
import { Mat3 } from './3d/mat3';
/**
* Copyright (c) 2017-2020 mol* contributors, licensed under MIT, See LICENSE file for more info.
*
* @author David Sehnal <david.sehnal@gmail.com>
* @author Alexander Rose <alexander.rose@weirdbyte.de>
*/
import { Mat4 } from './3d/mat4';
import { Vec3 } from './3d/vec3';
import { Vec4 } from './3d/vec4';
export interface Tensor {
data: Tensor.Data;
space: Tensor.Space;
}
export declare namespace Tensor {
type ArrayCtor = {
new (size: number): ArrayLike<number>;
};
interface Data extends Array<number> {
'@type': 'tensor';
}
interface Space {
readonly rank: number;
readonly dimensions: ReadonlyArray<number>;
readonly axisOrderSlowToFast: ReadonlyArray<number>;
create(array?: ArrayCtor): Tensor.Data;
get(data: Tensor.Data, ...coords: number[]): number;
set(data: Tensor.Data, ...coordsAndValue: number[]): number;
add(data: Tensor.Data, ...coordsAndValue: number[]): number;
dataOffset(...coords: number[]): number;
getCoords(dataOffset: number, coords: {
[i: number]: number;
}): number[];
}
function create(space: Space, data: Data): Tensor;
function Space(dimensions: number[], axisOrderSlowToFast: number[], ctor?: ArrayCtor): Space;
function Data1(values: ArrayLike<number>): Data;
function Vector(d: number, ctor?: ArrayCtor): Space;
function ColumnMajorMatrix(rows: number, cols: number, ctor?: ArrayCtor): Space;
function RowMajorMatrix(rows: number, cols: number, ctor?: ArrayCtor): Space;
function toMat4(out: Mat4, space: Space, data: Tensor.Data): Mat4;
function toMat3(out: Mat3, space: Space, data: Tensor.Data): Mat3;
function toVec3(out: Vec3, space: Space, data: Tensor.Data): Vec3;
function toVec4(out: Vec4, space: Space, data: Tensor.Data): Vec4;
function areEqualExact(a: Tensor.Data, b: Tensor.Data): boolean;
function invertAxisOrder(v: number[]): number[];
function convertToCanonicalAxisIndicesFastToSlow(order: number[]): (xs: number[]) => number[];
function convertToCanonicalAxisIndicesSlowToFast(order: number[]): (xs: number[]) => number[];
}