UNPKG

molstar

Version:

A comprehensive macromolecular library.

28 lines (27 loc) 1.38 kB
/** * Copyright (c) 2019 mol* contributors, licensed under MIT, See LICENSE file for more info. * * @author Alexander Rose <alexander.rose@weirdbyte.de> */ import { Vec3, Mat4 } from '../../../../mol-math/linear-algebra'; import { MeshBuilder } from '../mesh-builder'; import { Axes3D } from '../../../../mol-math/geometry'; import { createCage } from '../../../primitive/cage'; var tmpVec = Vec3(); var tmpMatrix = Mat4.identity(); var tmpVertices = new Float32Array(6 * 3); var tmpEdges = new Uint8Array([0, 1, 2, 3, 4, 5]); export function addAxes(state, axes, radiusScale, detail, radialSegments) { var origin = axes.origin, dirA = axes.dirA, dirB = axes.dirB, dirC = axes.dirC; Vec3.add(tmpVec, origin, dirA); Vec3.toArray(Vec3.add(tmpVec, origin, dirA), tmpVertices, 0); Vec3.toArray(Vec3.sub(tmpVec, origin, dirA), tmpVertices, 3); Vec3.toArray(Vec3.add(tmpVec, origin, dirB), tmpVertices, 6); Vec3.toArray(Vec3.sub(tmpVec, origin, dirB), tmpVertices, 9); Vec3.toArray(Vec3.add(tmpVec, origin, dirC), tmpVertices, 12); Vec3.toArray(Vec3.sub(tmpVec, origin, dirC), tmpVertices, 15); var cage = createCage(tmpVertices, tmpEdges); var volume = Axes3D.volume(axes); var radius = (Math.cbrt(volume) / 300) * radiusScale; MeshBuilder.addCage(state, tmpMatrix, cage, radius, detail, radialSegments); }