Clazz.declarePackage ("JS"); Clazz.load (null, "JS.HallTranslation", ["JU.P3i"], function () { c$ = Clazz.decorateAsClass (function () { this.translationCode = '\0'; this.rotationOrder = 0; this.rotationShift12ths = 0; this.vectorShift12ths = null; Clazz.instantialize (this, arguments); }, JS, "HallTranslation"); Clazz.makeConstructor (c$, function (translationCode, params) { this.translationCode = translationCode; if (params != null) { if (params.z >= 0) { this.vectorShift12ths = params; return; }this.rotationOrder = params.x; this.rotationShift12ths = params.y; }this.vectorShift12ths = new JU.P3i (); }, "~S,JU.P3i"); c$.getHallLatticeEquivalent = Clazz.defineMethod (c$, "getHallLatticeEquivalent", function (latticeParameter) { var latticeCode = JS.HallTranslation.getLatticeCode (latticeParameter); var isCentrosymmetric = (latticeParameter > 0); return (isCentrosymmetric ? "-" : "") + latticeCode + " 1"; }, "~N"); c$.getLatticeIndex = Clazz.defineMethod (c$, "getLatticeIndex", function (latt) { for (var i = 1, ipt = 3; i <= JS.HallTranslation.nLatticeTypes; i++, ipt += 3) if (JS.HallTranslation.latticeTranslationData[ipt].charAt (0) == latt) return i; return 0; }, "~S"); c$.getLatticeCode = Clazz.defineMethod (c$, "getLatticeCode", function (latt) { if (latt < 0) latt = -latt; return (latt == 0 ? '\0' : latt > JS.HallTranslation.nLatticeTypes ? JS.HallTranslation.getLatticeCode (JS.HallTranslation.getLatticeIndex (String.fromCharCode (latt))) : JS.HallTranslation.latticeTranslationData[latt * 3].charAt (0)); }, "~N"); c$.getLatticeDesignation = Clazz.defineMethod (c$, "getLatticeDesignation", function (latt) { var isCentrosymmetric = (latt > 0); var str = (isCentrosymmetric ? "-" : ""); if (latt < 0) latt = -latt; if (latt == 0 || latt > JS.HallTranslation.nLatticeTypes) return ""; return str + JS.HallTranslation.getLatticeCode (latt) + ": " + (isCentrosymmetric ? "centrosymmetric " : "") + JS.HallTranslation.latticeTranslationData[latt * 3 + 1]; }, "~N"); c$.getLatticeDesignation2 = Clazz.defineMethod (c$, "getLatticeDesignation2", function (latticeCode, isCentrosymmetric) { var latt = JS.HallTranslation.getLatticeIndex (latticeCode); if (!isCentrosymmetric) latt = -latt; return JS.HallTranslation.getLatticeDesignation (latt); }, "~S,~B"); c$.getLatticeExtension = Clazz.defineMethod (c$, "getLatticeExtension", function (latt, isCentrosymmetric) { for (var i = 1, ipt = 3; i <= JS.HallTranslation.nLatticeTypes; i++, ipt += 3) if (JS.HallTranslation.latticeTranslationData[ipt].charAt (0) == latt) return JS.HallTranslation.latticeTranslationData[ipt + 2] + (isCentrosymmetric ? " -1" : ""); return ""; }, "~S,~B"); c$.getHallTerms = Clazz.defineMethod (c$, "getHallTerms", function () { return (JS.HallTranslation.hallTranslationTerms == null ? JS.HallTranslation.hallTranslationTerms = Clazz.newArray (-1, [ new JS.HallTranslation ('a', JU.P3i.new3 (6, 0, 0)), new JS.HallTranslation ('b', JU.P3i.new3 (0, 6, 0)), new JS.HallTranslation ('c', JU.P3i.new3 (0, 0, 6)), new JS.HallTranslation ('n', JU.P3i.new3 (6, 6, 6)), new JS.HallTranslation ('u', JU.P3i.new3 (3, 0, 0)), new JS.HallTranslation ('v', JU.P3i.new3 (0, 3, 0)), new JS.HallTranslation ('w', JU.P3i.new3 (0, 0, 3)), new JS.HallTranslation ('d', JU.P3i.new3 (3, 3, 3)), new JS.HallTranslation ('1', JU.P3i.new3 (2, 6, -1)), new JS.HallTranslation ('1', JU.P3i.new3 (3, 4, -1)), new JS.HallTranslation ('2', JU.P3i.new3 (3, 8, -1)), new JS.HallTranslation ('1', JU.P3i.new3 (4, 3, -1)), new JS.HallTranslation ('3', JU.P3i.new3 (4, 9, -1)), new JS.HallTranslation ('1', JU.P3i.new3 (6, 2, -1)), new JS.HallTranslation ('2', JU.P3i.new3 (6, 4, -1)), new JS.HallTranslation ('4', JU.P3i.new3 (6, 8, -1)), new JS.HallTranslation ('5', JU.P3i.new3 (6, 10, -1)), new JS.HallTranslation ('r', JU.P3i.new3 (4, 8, 8)), new JS.HallTranslation ('s', JU.P3i.new3 (8, 8, 4)), new JS.HallTranslation ('t', JU.P3i.new3 (8, 4, 8))]) : JS.HallTranslation.hallTranslationTerms); }); c$.getHallTranslation = Clazz.defineMethod (c$, "getHallTranslation", function (translationCode, order) { var ht = null; for (var i = JS.HallTranslation.getHallTerms ().length; --i >= 0; ) { var h = JS.HallTranslation.hallTranslationTerms[i]; if (h.translationCode == translationCode) { if (h.rotationOrder == 0 || h.rotationOrder == order) { ht = new JS.HallTranslation (translationCode, null); ht.translationCode = translationCode; ht.rotationShift12ths = h.rotationShift12ths; ht.vectorShift12ths = h.vectorShift12ths; return ht; }}} return ht; }, "~S,~N"); Clazz.defineStatics (c$, "latticeTranslationData", Clazz.newArray (-1, ["\0", "unknown", "", "P", "primitive", "", "I", "body-centered", " 1n", "R", "rhombohedral", " 1r 1r", "F", "face-centered", " 1ab 1bc 1ac", "A", "A-centered", " 1bc", "B", "B-centered", " 1ac", "C", "C-centered", " 1ab", "S", "rhombohedral(S)", " 1s 1s", "T", "rhombohedral(T)", " 1t 1t"])); c$.nLatticeTypes = c$.prototype.nLatticeTypes = Clazz.doubleToInt (JS.HallTranslation.latticeTranslationData.length / 3) - 1; Clazz.defineStatics (c$, "hallTranslationTerms", null); });