Skip to content
Snippets Groups Projects
Commit a1eb5882 authored by Alexander Rose's avatar Alexander Rose
Browse files

tweaked getOperators

parent 956421a6
No related branches found
No related tags found
No related merge requests found
...@@ -90,9 +90,28 @@ namespace StructureSymmetry { ...@@ -90,9 +90,28 @@ namespace StructureSymmetry {
} }
function getOperators(symmetry: ModelSymmetry, ijkMin: Vec3, ijkMax: Vec3) { function getOperators(symmetry: ModelSymmetry, ijkMin: Vec3, ijkMax: Vec3) {
const operators: SymmetryOperator[] = [];
const { spacegroup } = symmetry;
if (operators.length === 0) {
for (let op = 0; op < spacegroup.operators.length; op++) {
for (let i = ijkMin[0]; i < ijkMax[0]; i++) {
for (let j = ijkMin[1]; j < ijkMax[1]; j++) {
for (let k = ijkMin[2]; k < ijkMax[2]; k++) {
operators[operators.length] = Spacegroup.getSymmetryOperator(spacegroup, op, i, j, k);
}
}
}
}
}
return operators;
}
function getOperatorsCached333(symmetry: ModelSymmetry) {
const operators: SymmetryOperator[] = symmetry._operators_333 || []; const operators: SymmetryOperator[] = symmetry._operators_333 || [];
const { spacegroup } = symmetry; const { spacegroup } = symmetry;
if (operators.length === 0) { if (operators.length === 0) {
const ijkMin = Vec3.create(-3, -3, -3)
const ijkMax = Vec3.create(3, 3, 3)
operators[0] = Spacegroup.getSymmetryOperator(spacegroup, 0, 0, 0, 0) operators[0] = Spacegroup.getSymmetryOperator(spacegroup, 0, 0, 0, 0)
for (let op = 0; op < spacegroup.operators.length; op++) { for (let op = 0; op < spacegroup.operators.length; op++) {
for (let i = ijkMin[0]; i < ijkMax[0]; i++) { for (let i = ijkMin[0]; i < ijkMax[0]; i++) {
...@@ -150,7 +169,7 @@ async function findMatesRadius(ctx: RuntimeContext, structure: Structure, radius ...@@ -150,7 +169,7 @@ async function findMatesRadius(ctx: RuntimeContext, structure: Structure, radius
if (SpacegroupCell.isZero(spacegroup.cell)) return structure; if (SpacegroupCell.isZero(spacegroup.cell)) return structure;
if (ctx.shouldUpdate) await ctx.update('Initialing...'); if (ctx.shouldUpdate) await ctx.update('Initialing...');
const operators = getOperators(symmetry, Vec3.create(-3, -3, -3), Vec3.create(3, 3, 3)); const operators = getOperatorsCached333(symmetry);
const lookup = structure.lookup3d; const lookup = structure.lookup3d;
const assembler = Structure.Builder(); const assembler = Structure.Builder();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment