bravais 0.1.4 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +19 -0
- package/README.md +12 -2
- package/THIRD_PARTY_NOTICES.md +11 -3
- package/dist/bravais.js +600 -545
- package/dist/bravais.js.map +1 -1
- package/dist/types/cif/errors.d.ts +6 -0
- package/dist/types/cif/structure.d.ts +2 -4
- package/dist/types/cif/{symmetry-operators.d.ts → symmetry-operations.d.ts} +1 -1
- package/dist/types/cif/tokenizer.d.ts +0 -6
- package/dist/types/index.d.ts +6 -8
- package/dist/types/render/camera.d.ts +1 -11
- package/dist/types/render/gizmo.d.ts +0 -1
- package/dist/types/render/materials.d.ts +0 -4
- package/dist/types/render/model.d.ts +11 -5
- package/dist/types/render/oklab.d.ts +0 -1
- package/dist/types/render/viewer.d.ts +4 -2
- package/dist/types/structure/bonds.d.ts +0 -2
- package/dist/types/structure/elements.d.ts +0 -3
- package/dist/types/structure/fractional.d.ts +2 -4
- package/dist/types/symmetry/resolve.d.ts +1 -1
- package/examples/CoO.cif +254 -0
- package/package.json +2 -1
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
/** The text is not CIF the tokenizer and parser accept. */
|
|
2
|
+
export declare class CifSyntaxError extends Error {
|
|
3
|
+
/** 1-based line of the problem. */
|
|
4
|
+
readonly line: number;
|
|
5
|
+
constructor(message: string, line: number);
|
|
6
|
+
}
|
|
1
7
|
/** The CIF parses but does not describe a structure this package can use. */
|
|
2
8
|
export declare class CifStructureError extends Error {
|
|
3
9
|
constructor(message: string);
|
|
@@ -1,15 +1,13 @@
|
|
|
1
1
|
import type { Lattice, Site, SpaceGroupInfo, SymmetryOperation } from "../structure/types.js";
|
|
2
2
|
import { type CifBlock } from "./parser.js";
|
|
3
|
-
import { CifStructureError } from "./errors.js";
|
|
4
|
-
export { CifStructureError };
|
|
5
3
|
export interface ParsedCifStructure {
|
|
6
4
|
lattice: Lattice;
|
|
7
5
|
sites: Site[];
|
|
8
|
-
/** Null when the file lists no
|
|
6
|
+
/** Null when the file lists no operations; see `spaceGroup` then. */
|
|
9
7
|
operations: SymmetryOperation[] | null;
|
|
10
8
|
spaceGroup: SpaceGroupInfo;
|
|
11
9
|
}
|
|
12
10
|
/** True when the block carries atom coordinates (the one a viewer wants). */
|
|
13
11
|
export declare function isStructureBlock(block: CifBlock): boolean;
|
|
14
|
-
/** Lattice, merged sites,
|
|
12
|
+
/** Lattice, merged sites, operations and space-group tags of one data block. */
|
|
15
13
|
export declare function parseCifStructure(block: CifBlock): ParsedCifStructure;
|
|
@@ -3,4 +3,4 @@ import type { SymmetryOperation } from "../structure/types.js";
|
|
|
3
3
|
* Parse a symmetry operation as CIF files write it, such as
|
|
4
4
|
* `-x+1/2, y, -z+1/2`, into a rotation matrix and translation.
|
|
5
5
|
*/
|
|
6
|
-
export declare function
|
|
6
|
+
export declare function parseSymmetryOperation(text: string): SymmetryOperation;
|
|
@@ -4,12 +4,6 @@ export interface CifToken {
|
|
|
4
4
|
text: string;
|
|
5
5
|
line: number;
|
|
6
6
|
}
|
|
7
|
-
/** The text is not CIF the tokenizer and parser accept. */
|
|
8
|
-
export declare class CifSyntaxError extends Error {
|
|
9
|
-
/** 1-based line of the problem. */
|
|
10
|
-
readonly line: number;
|
|
11
|
-
constructor(message: string, line: number);
|
|
12
|
-
}
|
|
13
7
|
/**
|
|
14
8
|
* Split CIF 1.1 text into tokens. Comments are dropped; quoted strings and
|
|
15
9
|
* semicolon text fields become single value tokens holding their content.
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,22 +1,20 @@
|
|
|
1
1
|
import type { Structure } from "./structure/types.js";
|
|
2
|
+
export { CifStructureError, CifSyntaxError } from "./cif/errors.js";
|
|
2
3
|
export { parseCif, type CifBlock, type CifDocument, type CifLoop, } from "./cif/parser.js";
|
|
3
|
-
export {
|
|
4
|
-
export {
|
|
5
|
-
export { parseSymmetryOperator } from "./cif/symmetry-operators.js";
|
|
4
|
+
export { parseCifStructure, type ParsedCifStructure } from "./cif/structure.js";
|
|
5
|
+
export { parseSymmetryOperation } from "./cif/symmetry-operations.js";
|
|
6
6
|
export { SpaceGroupLookupError, ensureMoyo, operationsForSpaceGroup, } from "./symmetry/moyo.js";
|
|
7
7
|
export { SymmetryAnalysisError, symmetryDataset, type SymmetryDataset, type SymmetryOptions, } from "./symmetry/dataset.js";
|
|
8
8
|
export { typesetSymbol } from "./symmetry/symbol.js";
|
|
9
9
|
export { expandStructure } from "./structure/expand.js";
|
|
10
10
|
export { latticeFromParameters, latticeFromVectors, } from "./structure/lattice.js";
|
|
11
|
-
export {
|
|
11
|
+
export type { Bond } from "./structure/bonds.js";
|
|
12
|
+
export type { Lattice, LatticeParameters, Mat3, Site, SpaceGroupInfo, Species, Structure, SymmetryOperation, Vec3, } from "./structure/types.js";
|
|
13
|
+
export { buildScene, structureElements, type BuildSceneOptions, type SceneAtom, type SceneLayer, type StructureScene, } from "./scene/build.js";
|
|
12
14
|
export { createViewer, type Viewer, type ViewerOptions, } from "./render/viewer.js";
|
|
13
15
|
export { createThumbnailRenderer, type ThumbnailRenderer, } from "./render/thumbnails.js";
|
|
14
|
-
export type { SceneLayer } from "./scene/build.js";
|
|
15
16
|
export type { ViewState } from "./render/view-state.js";
|
|
16
17
|
export { elementColor, elementColorAssignments, ensureElementColors, resetElementColors, } from "./render/palette.js";
|
|
17
|
-
export type { BuildSceneOptions, SceneAtom, StructureScene, } from "./scene/build.js";
|
|
18
|
-
export type { Bond } from "./structure/bonds.js";
|
|
19
|
-
export type { Lattice, LatticeParameters, Mat3, Site, SpaceGroupInfo, Species, Structure, SymmetryOperation, Vec3, } from "./structure/types.js";
|
|
20
18
|
/**
|
|
21
19
|
* Read the first structure in a CIF file. Its symmetry comes from the
|
|
22
20
|
* file's list of symmetry operations or, without one, from its space-group
|
|
@@ -1,11 +1,6 @@
|
|
|
1
|
-
import { Box3, OrthographicCamera, Quaternion
|
|
1
|
+
import { Box3, OrthographicCamera, Quaternion } from "three";
|
|
2
2
|
import type { Mat3 } from "../structure/types.js";
|
|
3
3
|
import type { ViewState } from "./view-state.js";
|
|
4
|
-
/** Camera outward direction and up vector of the standard view of a cell. */
|
|
5
|
-
export declare function standardViewVectors(cell: Mat3): {
|
|
6
|
-
outward: Vector3;
|
|
7
|
-
up: Vector3;
|
|
8
|
-
};
|
|
9
4
|
/** Distance of the orthographic camera from its target; only the clipping depends on it. */
|
|
10
5
|
export declare function cameraDistance(span: number): number;
|
|
11
6
|
export declare function standardQuaternion(cell: Mat3): Quaternion;
|
|
@@ -15,11 +10,6 @@ export declare function standardView(cell: Mat3): ViewState;
|
|
|
15
10
|
export declare function applyViewState(camera: OrthographicCamera, view: Pick<ViewState, "quaternion" | "target">, distance: number, span: number): void;
|
|
16
11
|
/** The orientation of a camera as a view-state quaternion. */
|
|
17
12
|
export declare function quaternionTuple(quaternion: Quaternion): [number, number, number, number];
|
|
18
|
-
/** Size of `bounds` projected on the screen plane of `quaternion`. */
|
|
19
|
-
export declare function projectedSize(bounds: Box3, quaternion: Quaternion): {
|
|
20
|
-
width: number;
|
|
21
|
-
height: number;
|
|
22
|
-
};
|
|
23
13
|
/** Orthographic zoom (pixels per ångström) that fits `bounds` in the viewport. */
|
|
24
14
|
export declare function fitZoom(bounds: Box3, quaternion: Quaternion, width: number, height: number): number;
|
|
25
15
|
/** Frustum of an orthographic camera in pixel units, so `zoom` is pixels per ångström. */
|
|
@@ -8,7 +8,6 @@ export declare class AxesGizmo {
|
|
|
8
8
|
/** The a, b and c arrows, built once and turned to each new cell. */
|
|
9
9
|
private readonly arrows;
|
|
10
10
|
private readonly headlight;
|
|
11
|
-
private readonly inverse;
|
|
12
11
|
private readonly direction;
|
|
13
12
|
/** `fontFamily` is the interface font the axis letters are drawn in. */
|
|
14
13
|
constructor(fontFamily: string);
|
|
@@ -1,14 +1,10 @@
|
|
|
1
1
|
import { DataTexture, LineBasicMaterial, MeshStandardMaterial } from "three";
|
|
2
|
-
export declare const METALNESS = 0.1;
|
|
3
|
-
export declare const ROUGHNESS = 0.6;
|
|
4
2
|
export declare const AMBIENT_LIGHT_INTENSITY = 0.8;
|
|
5
3
|
export declare const HEADLIGHT_INTENSITY = 2.2;
|
|
6
4
|
export declare const HEADLIGHT_OFFSET: readonly [number, number, number];
|
|
7
5
|
export declare const BACKGROUND_COLOR = "#fafafa";
|
|
8
|
-
export declare const CELL_FRAME_COLOR = "#444444";
|
|
9
6
|
/** The part of a partially occupied site nobody occupies: a faint, see-through tint. */
|
|
10
7
|
export declare const VACANCY_COLOR = "#f2f2f2";
|
|
11
|
-
export declare const VACANCY_OPACITY = 0.3;
|
|
12
8
|
/** Added to a vacancy texel's start fraction so the shader can tell it apart. */
|
|
13
9
|
export declare const VACANCY_FLAG = 2;
|
|
14
10
|
/**
|
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
import { Box3, Group } from "three";
|
|
2
2
|
import type { SceneLayer } from "../scene/build.js";
|
|
3
|
-
import type { Mat3
|
|
3
|
+
import type { Mat3 } from "../structure/types.js";
|
|
4
4
|
export interface SceneModel {
|
|
5
5
|
group: Group;
|
|
6
|
-
/** Cell row vectors of the first layer
|
|
6
|
+
/** Cell row vectors of the first layer; `group` moves its centre to the origin. */
|
|
7
7
|
cell: Mat3;
|
|
8
|
-
/** Centre of that cell, which `group` moves to the origin. */
|
|
9
|
-
center: Vec3;
|
|
10
8
|
/** Bounds of every atom and cell corner of every layer, in the centred frame. */
|
|
11
9
|
bounds: Box3;
|
|
12
10
|
/** Largest cell edge length of any layer. */
|
|
@@ -15,10 +13,18 @@ export interface SceneModel {
|
|
|
15
13
|
elements: string[];
|
|
16
14
|
dispose(): void;
|
|
17
15
|
}
|
|
18
|
-
export declare function cellCenter(cell: Mat3): Vec3;
|
|
19
16
|
/**
|
|
20
17
|
* Build the three.js objects for the layers, centred on the first cell. A
|
|
21
18
|
* layer at opacity 0 is not drawn but still counts toward the centre, the
|
|
22
19
|
* bounds and the span.
|
|
23
20
|
*/
|
|
24
21
|
export declare function createSceneModel(layers: SceneLayer[]): SceneModel;
|
|
22
|
+
/**
|
|
23
|
+
* A placeholder atom, bond and cell frame in every material a structure is
|
|
24
|
+
* drawn with, opaque and see-through, so their shaders can compile before
|
|
25
|
+
* the first structure arrives. It gives no element a colour.
|
|
26
|
+
*/
|
|
27
|
+
export declare function createShaderWarmup(): {
|
|
28
|
+
group: Group;
|
|
29
|
+
dispose(): void;
|
|
30
|
+
};
|
|
@@ -15,7 +15,6 @@ export interface Oklch {
|
|
|
15
15
|
h: number;
|
|
16
16
|
}
|
|
17
17
|
export declare function hexToOklab(hex: string): Oklab;
|
|
18
|
-
export declare function isInGamut(lab: Oklab): boolean;
|
|
19
18
|
export declare function oklabToHex(lab: Oklab): string;
|
|
20
19
|
export declare function oklabToOklch(lab: Oklab): Oklch;
|
|
21
20
|
export declare function oklchToOklab(lch: Oklch): Oklab;
|
|
@@ -22,7 +22,7 @@ export interface Viewer {
|
|
|
22
22
|
resetView(): void;
|
|
23
23
|
/** Fit the canvas to the container again; the viewer does this itself when the container resizes. */
|
|
24
24
|
resize(): void;
|
|
25
|
-
/** Draw a frame now. */
|
|
25
|
+
/** Draw a frame now, or as soon as the shaders finish compiling. */
|
|
26
26
|
render(): void;
|
|
27
27
|
/** Call `listener` when the user rotates or zooms. Returns a function that removes it. */
|
|
28
28
|
onInteraction(listener: () => void): () => void;
|
|
@@ -32,6 +32,8 @@ export interface Viewer {
|
|
|
32
32
|
/**
|
|
33
33
|
* Create a viewer inside `container`. It fills the container and follows
|
|
34
34
|
* its size, so give the container a height. Adds the class `bravais-viewer`
|
|
35
|
-
* to the container and one small stylesheet to the page.
|
|
35
|
+
* to the container and one small stylesheet to the page. Its shaders start
|
|
36
|
+
* compiling in the background at once, and drawing waits until they are
|
|
37
|
+
* ready.
|
|
36
38
|
*/
|
|
37
39
|
export declare function createViewer(container: HTMLElement, options?: ViewerOptions): Viewer;
|
|
@@ -12,8 +12,6 @@ export interface Bond {
|
|
|
12
12
|
/** Distance between them in ångström. */
|
|
13
13
|
length: number;
|
|
14
14
|
}
|
|
15
|
-
/** VESTA's bond-search maximum for an element pair, or null when VESTA draws none. */
|
|
16
|
-
export declare function bondCutoff(elementA: string, elementB: string): number | null;
|
|
17
15
|
/**
|
|
18
16
|
* Bonds between the given atoms by VESTA's cutoff table. Only pairs VESTA
|
|
19
17
|
* lists get bonds, so no metal-metal or anion-anion sticks appear. The bonds
|
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
/** Element symbols in atomic-number order. */
|
|
2
2
|
export declare const ELEMENT_SYMBOLS: string[];
|
|
3
|
-
/** Deuterium keeps its own symbol for display and counts as hydrogen. */
|
|
4
|
-
export declare const DEUTERIUM = "D";
|
|
5
|
-
export declare function isElementSymbol(symbol: string): boolean;
|
|
6
3
|
/**
|
|
7
4
|
* The element behind a CIF atom label or type symbol: `Fe3+`, `O2-`, `Co1`,
|
|
8
5
|
* `OW`, `fe` and `Wat` all resolve. Null when no element symbol fits.
|
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
import type { SymmetryOperation, Vec3 } from "./types.js";
|
|
2
2
|
/** Generated equivalents this close in fractional coordinates are one atom. */
|
|
3
3
|
export declare const EQUIVALENT_TOLERANCE = 0.001;
|
|
4
|
-
/** Fold a coordinate into [0, 1); a value within `
|
|
5
|
-
export declare function wrap(value: number,
|
|
4
|
+
/** Fold a coordinate into [0, 1); a value within `tolerance` below 1 becomes 0. */
|
|
5
|
+
export declare function wrap(value: number, tolerance?: number): number;
|
|
6
6
|
/** Fold a fractional position into the cell. */
|
|
7
7
|
export declare function wrapVector(fractional: Vec3): Vec3;
|
|
8
|
-
/** Periodic distance of two fractional positions, per axis, below `tolerance`. */
|
|
9
|
-
export declare function samePosition(p: Vec3, q: Vec3, tolerance: number): boolean;
|
|
10
8
|
/**
|
|
11
9
|
* Fractional positions bucketed by where they fall in the cell, so finding
|
|
12
10
|
* those within a tolerance of a position, across the periodic boundaries,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { ParsedCifStructure } from "../cif/structure.js";
|
|
2
2
|
import { type SymmetryOperation } from "../structure/types.js";
|
|
3
3
|
/**
|
|
4
4
|
* The operations a parsed CIF's atoms are expanded with: the file's own
|
package/examples/CoO.cif
ADDED
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
#------------------------------------------------------------------------------
|
|
2
|
+
#$Date: 2024-05-06 10:39:41 +0300 (Mon, 06 May 2024) $
|
|
3
|
+
#$Revision: 291735 $
|
|
4
|
+
#$URL: file:///home/coder/svn-repositories/_RELOADED_COD/cod-reloaded/cif/9/00/86/9008618.cif $
|
|
5
|
+
#------------------------------------------------------------------------------
|
|
6
|
+
#
|
|
7
|
+
# This file is available in the Crystallography Open Database (COD),
|
|
8
|
+
# http://www.crystallography.net/. The original data for this entry
|
|
9
|
+
# were provided the American Mineralogist Crystal Structure Database,
|
|
10
|
+
# http://rruff.geo.arizona.edu/AMS/amcsd.php
|
|
11
|
+
#
|
|
12
|
+
# The file may be used within the scientific community so long as
|
|
13
|
+
# proper attribution is given to the journal article from which the
|
|
14
|
+
# data were obtained.
|
|
15
|
+
#
|
|
16
|
+
data_9008618
|
|
17
|
+
loop_
|
|
18
|
+
_publ_author_name
|
|
19
|
+
'Wyckoff, R. W. G.'
|
|
20
|
+
_publ_section_title
|
|
21
|
+
;
|
|
22
|
+
Second edition. Interscience Publishers, New York, New York
|
|
23
|
+
rocksalt structure
|
|
24
|
+
;
|
|
25
|
+
_journal_name_full 'Crystal Structures'
|
|
26
|
+
_journal_page_first 85
|
|
27
|
+
_journal_page_last 237
|
|
28
|
+
_journal_volume 1
|
|
29
|
+
_journal_year 1963
|
|
30
|
+
_chemical_formula_structural CoO
|
|
31
|
+
_chemical_formula_sum 'Co O'
|
|
32
|
+
_space_group_IT_number 225
|
|
33
|
+
_symmetry_space_group_name_Hall '-F 4 2 3'
|
|
34
|
+
_symmetry_space_group_name_H-M 'F m -3 m'
|
|
35
|
+
_cell_angle_alpha 90
|
|
36
|
+
_cell_angle_beta 90
|
|
37
|
+
_cell_angle_gamma 90
|
|
38
|
+
_cell_length_a 4.2667
|
|
39
|
+
_cell_length_b 4.2667
|
|
40
|
+
_cell_length_c 4.2667
|
|
41
|
+
_cell_formula_units_Z 4
|
|
42
|
+
_cell_volume 77.674
|
|
43
|
+
_database_code_amcsd 0011296
|
|
44
|
+
_exptl_crystal_density_diffrn 6.408
|
|
45
|
+
_cod_original_sg_symbol_H-M 'F m 3 m'
|
|
46
|
+
_cod_database_code 9008618
|
|
47
|
+
_amcsd_formula_title CoO
|
|
48
|
+
loop_
|
|
49
|
+
_space_group_symop_operation_xyz
|
|
50
|
+
x,y,z
|
|
51
|
+
x,1/2+y,1/2+z
|
|
52
|
+
1/2+x,y,1/2+z
|
|
53
|
+
1/2+x,1/2+y,z
|
|
54
|
+
z,-x,y
|
|
55
|
+
z,1/2-x,1/2+y
|
|
56
|
+
1/2+z,-x,1/2+y
|
|
57
|
+
1/2+z,1/2-x,y
|
|
58
|
+
-y,z,-x
|
|
59
|
+
-y,1/2+z,1/2-x
|
|
60
|
+
1/2-y,z,1/2-x
|
|
61
|
+
1/2-y,1/2+z,-x
|
|
62
|
+
x,-y,z
|
|
63
|
+
x,1/2-y,1/2+z
|
|
64
|
+
1/2+x,-y,1/2+z
|
|
65
|
+
1/2+x,1/2-y,z
|
|
66
|
+
-z,x,-y
|
|
67
|
+
-z,1/2+x,1/2-y
|
|
68
|
+
1/2-z,x,1/2-y
|
|
69
|
+
1/2-z,1/2+x,-y
|
|
70
|
+
y,-z,x
|
|
71
|
+
y,1/2-z,1/2+x
|
|
72
|
+
1/2+y,-z,1/2+x
|
|
73
|
+
1/2+y,1/2-z,x
|
|
74
|
+
-x,y,-z
|
|
75
|
+
-x,1/2+y,1/2-z
|
|
76
|
+
1/2-x,y,1/2-z
|
|
77
|
+
1/2-x,1/2+y,-z
|
|
78
|
+
x,-z,-y
|
|
79
|
+
x,1/2-z,1/2-y
|
|
80
|
+
1/2+x,-z,1/2-y
|
|
81
|
+
1/2+x,1/2-z,-y
|
|
82
|
+
-z,y,x
|
|
83
|
+
-z,1/2+y,1/2+x
|
|
84
|
+
1/2-z,y,1/2+x
|
|
85
|
+
1/2-z,1/2+y,x
|
|
86
|
+
y,-x,-z
|
|
87
|
+
y,1/2-x,1/2-z
|
|
88
|
+
1/2+y,-x,1/2-z
|
|
89
|
+
1/2+y,1/2-x,-z
|
|
90
|
+
-x,z,y
|
|
91
|
+
-x,1/2+z,1/2+y
|
|
92
|
+
1/2-x,z,1/2+y
|
|
93
|
+
1/2-x,1/2+z,y
|
|
94
|
+
z,-y,-x
|
|
95
|
+
z,1/2-y,1/2-x
|
|
96
|
+
1/2+z,-y,1/2-x
|
|
97
|
+
1/2+z,1/2-y,-x
|
|
98
|
+
-y,x,z
|
|
99
|
+
-y,1/2+x,1/2+z
|
|
100
|
+
1/2-y,x,1/2+z
|
|
101
|
+
1/2-y,1/2+x,z
|
|
102
|
+
x,z,y
|
|
103
|
+
x,1/2+z,1/2+y
|
|
104
|
+
1/2+x,z,1/2+y
|
|
105
|
+
1/2+x,1/2+z,y
|
|
106
|
+
-z,-y,-x
|
|
107
|
+
-z,1/2-y,1/2-x
|
|
108
|
+
1/2-z,-y,1/2-x
|
|
109
|
+
1/2-z,1/2-y,-x
|
|
110
|
+
y,x,z
|
|
111
|
+
y,1/2+x,1/2+z
|
|
112
|
+
1/2+y,x,1/2+z
|
|
113
|
+
1/2+y,1/2+x,z
|
|
114
|
+
-x,-z,-y
|
|
115
|
+
-x,1/2-z,1/2-y
|
|
116
|
+
1/2-x,-z,1/2-y
|
|
117
|
+
1/2-x,1/2-z,-y
|
|
118
|
+
z,y,x
|
|
119
|
+
z,1/2+y,1/2+x
|
|
120
|
+
1/2+z,y,1/2+x
|
|
121
|
+
1/2+z,1/2+y,x
|
|
122
|
+
-y,-x,-z
|
|
123
|
+
-y,1/2-x,1/2-z
|
|
124
|
+
1/2-y,-x,1/2-z
|
|
125
|
+
1/2-y,1/2-x,-z
|
|
126
|
+
z,x,-y
|
|
127
|
+
z,1/2+x,1/2-y
|
|
128
|
+
1/2+z,x,1/2-y
|
|
129
|
+
1/2+z,1/2+x,-y
|
|
130
|
+
-y,-z,x
|
|
131
|
+
-y,1/2-z,1/2+x
|
|
132
|
+
1/2-y,-z,1/2+x
|
|
133
|
+
1/2-y,1/2-z,x
|
|
134
|
+
x,y,-z
|
|
135
|
+
x,1/2+y,1/2-z
|
|
136
|
+
1/2+x,y,1/2-z
|
|
137
|
+
1/2+x,1/2+y,-z
|
|
138
|
+
-z,-x,y
|
|
139
|
+
-z,1/2-x,1/2+y
|
|
140
|
+
1/2-z,-x,1/2+y
|
|
141
|
+
1/2-z,1/2-x,y
|
|
142
|
+
y,z,-x
|
|
143
|
+
y,1/2+z,1/2-x
|
|
144
|
+
1/2+y,z,1/2-x
|
|
145
|
+
1/2+y,1/2+z,-x
|
|
146
|
+
-x,-y,z
|
|
147
|
+
-x,1/2-y,1/2+z
|
|
148
|
+
1/2-x,-y,1/2+z
|
|
149
|
+
1/2-x,1/2-y,z
|
|
150
|
+
-z,x,y
|
|
151
|
+
-z,1/2+x,1/2+y
|
|
152
|
+
1/2-z,x,1/2+y
|
|
153
|
+
1/2-z,1/2+x,y
|
|
154
|
+
y,-z,-x
|
|
155
|
+
y,1/2-z,1/2-x
|
|
156
|
+
1/2+y,-z,1/2-x
|
|
157
|
+
1/2+y,1/2-z,-x
|
|
158
|
+
-x,y,z
|
|
159
|
+
-x,1/2+y,1/2+z
|
|
160
|
+
1/2-x,y,1/2+z
|
|
161
|
+
1/2-x,1/2+y,z
|
|
162
|
+
z,-x,-y
|
|
163
|
+
z,1/2-x,1/2-y
|
|
164
|
+
1/2+z,-x,1/2-y
|
|
165
|
+
1/2+z,1/2-x,-y
|
|
166
|
+
-y,z,x
|
|
167
|
+
-y,1/2+z,1/2+x
|
|
168
|
+
1/2-y,z,1/2+x
|
|
169
|
+
1/2-y,1/2+z,x
|
|
170
|
+
x,-y,-z
|
|
171
|
+
x,1/2-y,1/2-z
|
|
172
|
+
1/2+x,-y,1/2-z
|
|
173
|
+
1/2+x,1/2-y,-z
|
|
174
|
+
-x,z,-y
|
|
175
|
+
-x,1/2+z,1/2-y
|
|
176
|
+
1/2-x,z,1/2-y
|
|
177
|
+
1/2-x,1/2+z,-y
|
|
178
|
+
z,-y,x
|
|
179
|
+
z,1/2-y,1/2+x
|
|
180
|
+
1/2+z,-y,1/2+x
|
|
181
|
+
1/2+z,1/2-y,x
|
|
182
|
+
-y,x,-z
|
|
183
|
+
-y,1/2+x,1/2-z
|
|
184
|
+
1/2-y,x,1/2-z
|
|
185
|
+
1/2-y,1/2+x,-z
|
|
186
|
+
x,-z,y
|
|
187
|
+
x,1/2-z,1/2+y
|
|
188
|
+
1/2+x,-z,1/2+y
|
|
189
|
+
1/2+x,1/2-z,y
|
|
190
|
+
-z,y,-x
|
|
191
|
+
-z,1/2+y,1/2-x
|
|
192
|
+
1/2-z,y,1/2-x
|
|
193
|
+
1/2-z,1/2+y,-x
|
|
194
|
+
y,-x,z
|
|
195
|
+
y,1/2-x,1/2+z
|
|
196
|
+
1/2+y,-x,1/2+z
|
|
197
|
+
1/2+y,1/2-x,z
|
|
198
|
+
-x,-z,y
|
|
199
|
+
-x,1/2-z,1/2+y
|
|
200
|
+
1/2-x,-z,1/2+y
|
|
201
|
+
1/2-x,1/2-z,y
|
|
202
|
+
z,y,-x
|
|
203
|
+
z,1/2+y,1/2-x
|
|
204
|
+
1/2+z,y,1/2-x
|
|
205
|
+
1/2+z,1/2+y,-x
|
|
206
|
+
-y,-x,z
|
|
207
|
+
-y,1/2-x,1/2+z
|
|
208
|
+
1/2-y,-x,1/2+z
|
|
209
|
+
1/2-y,1/2-x,z
|
|
210
|
+
x,z,-y
|
|
211
|
+
x,1/2+z,1/2-y
|
|
212
|
+
1/2+x,z,1/2-y
|
|
213
|
+
1/2+x,1/2+z,-y
|
|
214
|
+
-z,-y,x
|
|
215
|
+
-z,1/2-y,1/2+x
|
|
216
|
+
1/2-z,-y,1/2+x
|
|
217
|
+
1/2-z,1/2-y,x
|
|
218
|
+
y,x,-z
|
|
219
|
+
y,1/2+x,1/2-z
|
|
220
|
+
1/2+y,x,1/2-z
|
|
221
|
+
1/2+y,1/2+x,-z
|
|
222
|
+
-z,-x,-y
|
|
223
|
+
-z,1/2-x,1/2-y
|
|
224
|
+
1/2-z,-x,1/2-y
|
|
225
|
+
1/2-z,1/2-x,-y
|
|
226
|
+
y,z,x
|
|
227
|
+
y,1/2+z,1/2+x
|
|
228
|
+
1/2+y,z,1/2+x
|
|
229
|
+
1/2+y,1/2+z,x
|
|
230
|
+
-x,-y,-z
|
|
231
|
+
-x,1/2-y,1/2-z
|
|
232
|
+
1/2-x,-y,1/2-z
|
|
233
|
+
1/2-x,1/2-y,-z
|
|
234
|
+
z,x,y
|
|
235
|
+
z,1/2+x,1/2+y
|
|
236
|
+
1/2+z,x,1/2+y
|
|
237
|
+
1/2+z,1/2+x,y
|
|
238
|
+
-y,-z,-x
|
|
239
|
+
-y,1/2-z,1/2-x
|
|
240
|
+
1/2-y,-z,1/2-x
|
|
241
|
+
1/2-y,1/2-z,-x
|
|
242
|
+
loop_
|
|
243
|
+
_atom_site_label
|
|
244
|
+
_atom_site_fract_x
|
|
245
|
+
_atom_site_fract_y
|
|
246
|
+
_atom_site_fract_z
|
|
247
|
+
Co 0.00000 0.00000 0.00000
|
|
248
|
+
O 0.50000 0.50000 0.50000
|
|
249
|
+
loop_
|
|
250
|
+
_cod_related_entry_id
|
|
251
|
+
_cod_related_entry_database
|
|
252
|
+
_cod_related_entry_code
|
|
253
|
+
1 ChemSpider 8117730
|
|
254
|
+
2 AMCSD 0011296
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bravais",
|
|
3
|
-
"version": "0.1
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"description": "A minimal crystal structure viewer for the web: reads CIF files and draws them with three.js.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Jiacheng Wang",
|
|
@@ -36,6 +36,7 @@
|
|
|
36
36
|
},
|
|
37
37
|
"files": [
|
|
38
38
|
"dist",
|
|
39
|
+
"examples/CoO.cif",
|
|
39
40
|
"CHANGELOG.md",
|
|
40
41
|
"THIRD_PARTY_NOTICES.md"
|
|
41
42
|
],
|