From: Michael T H. <mic...@us...> - 2004-02-18 08:49:42
|
Update of /cvsroot/jmol/Jmol/src/org/openscience/jmol/viewer/datamodel In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20015/src/org/openscience/jmol/viewer/datamodel Modified Files: Frame.java FrameBuilder.java Unitcell.java Log Message: work on unitcell Index: Frame.java =================================================================== RCS file: /cvsroot/jmol/Jmol/src/org/openscience/jmol/viewer/datamodel/Frame.java,v retrieving revision 1.44 retrieving revision 1.45 diff -u -r1.44 -r1.45 --- Frame.java 16 Feb 2004 11:51:09 -0000 1.44 +++ Frame.java 18 Feb 2004 08:40:17 -0000 1.45 @@ -55,6 +55,7 @@ public Bond[] bonds; public float[] notionalUnitcell; public Matrix3f crystalScaleMatrix; + public Matrix3f crystalScaleMatrixTranspose; public Vector3f crystalTranslateVector; public Matrix3f matrixUnitcellToOrthogonal; @@ -80,6 +81,8 @@ public void freeze() { htAtomMap = null; + if (crystalScaleMatrix != null) + putAtomsInsideUnitcell(); if (viewer.getAutoBond()) { if ((bondCount == 0) || (hasPdbRecords && (bondCount < (atomCount / 2)))) @@ -841,17 +844,19 @@ this.notionalUnitcell = notionalUnitcell; } - public void setCrystalScaleMatrix(float[] crystalScaleMatrix) { - if (crystalScaleMatrix == null) + public void setCrystalScaleMatrix(float[] crystalScaleMatrixArray) { + if (crystalScaleMatrixArray == null) return; - if (crystalScaleMatrix.length != 9) { + if (crystalScaleMatrixArray.length != 9) { System.out.println("crystalScaleMatrix.length != 9 :" + crystalScaleMatrix); return; } - this.crystalScaleMatrix = new Matrix3f(crystalScaleMatrix); + crystalScaleMatrix = new Matrix3f(crystalScaleMatrixArray); + crystalScaleMatrixTranspose = new Matrix3f(); + crystalScaleMatrixTranspose.transpose(crystalScaleMatrix); matrixUnitcellToOrthogonal = new Matrix3f(); - matrixUnitcellToOrthogonal.invert(this.crystalScaleMatrix); + matrixUnitcellToOrthogonal.invert(crystalScaleMatrix); } public void setCrystalScaleTranslate(float[] crystalScaleTranslate) { @@ -868,4 +873,19 @@ public ShapeRenderer getRenderer(int refShape) { return frameRenderer.getRenderer(refShape); } + + void putAtomsInsideUnitcell() { + System.out.println("moving them :-)"); + for (int i = atomCount; --i >= 0; ) { + putAtomInsideUnitcell(atoms[i]); + } + System.out.println("moved them :-)"); + } + + void putAtomInsideUnitcell(Atom atom) { + Point3f point = atom.point3f; + point.x += 1000; + point.y += 1000; + point.z += 1000; + } } Index: FrameBuilder.java =================================================================== RCS file: /cvsroot/jmol/Jmol/src/org/openscience/jmol/viewer/datamodel/FrameBuilder.java,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- FrameBuilder.java 16 Feb 2004 11:51:09 -0000 1.9 +++ FrameBuilder.java 18 Feb 2004 08:40:17 -0000 1.10 @@ -48,6 +48,20 @@ boolean hasPdbRecords = adapter.hasPdbRecords(clientFile, frameNumber); Frame frame = new Frame(viewer, atomCount, modelType, hasPdbRecords); + + /**************************************************************** + * crystal cell must come first, in case atom coordinates + * need to be transformed to fit in the crystal cell + ****************************************************************/ + frame.setNotionalUnitcell(adapter.getNotionalUnitcell(clientFile, + frameNumber)); + frame.setCrystalScaleMatrix(adapter.getCrystalScaleMatrix(clientFile, + frameNumber)); + frame.setCrystalScaleTranslate(adapter. + getCrystalScaleTranslate(clientFile, + frameNumber)); + + for (JmolModelAdapter.AtomIterator iterAtom = adapter.getAtomIterator(clientFile, frameNumber); iterAtom.hasNext(); ) { @@ -94,14 +108,6 @@ } } - frame.setNotionalUnitcell(adapter.getNotionalUnitcell(clientFile, - frameNumber)); - frame.setCrystalScaleMatrix(adapter.getCrystalScaleMatrix(clientFile, - frameNumber)); - frame.setCrystalScaleTranslate(adapter. - getCrystalScaleTranslate(clientFile, - frameNumber)); - if (hasPdbRecords) { String[] structures = adapter.getPdbStructureRecords(clientFile, frameNumber); Index: Unitcell.java =================================================================== RCS file: /cvsroot/jmol/Jmol/src/org/openscience/jmol/viewer/datamodel/Unitcell.java,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- Unitcell.java 18 Feb 2004 01:13:15 -0000 1.9 +++ Unitcell.java 18 Feb 2004 08:40:17 -0000 1.10 @@ -47,9 +47,13 @@ float[] notionalUnitcell = frame.notionalUnitcell; Matrix3f crystalScaleMatrix = frame.crystalScaleMatrix; Vector3f crystalTranslateVector = frame.crystalTranslateVector; + Matrix3f crystalScaleMatrixTranspose = frame.crystalScaleMatrixTranspose; Matrix3f matrixUnitcellToOrthogonal = frame.matrixUnitcellToOrthogonal; - dumpCellData(notionalUnitcell, crystalScaleMatrix, - crystalTranslateVector, matrixUnitcellToOrthogonal); + dumpCellData(notionalUnitcell, + crystalScaleMatrix, + crystalTranslateVector, + crystalScaleMatrixTranspose, + matrixUnitcellToOrthogonal); hasUnitcell = notionalUnitcell != null; if (hasUnitcell) { float a = this.a = notionalUnitcell[0]; @@ -111,6 +115,7 @@ void dumpCellData(float[] notionalUnitcell, Matrix3f crystalScaleMatrix, Vector3f crystalTranslateVector, + Matrix3f crystalScaleMatrixTranspose, Matrix3f matrixUnitcellToOrthogonal) { if (notionalUnitcell == null) { System.out.println("notional unitcell is null"); @@ -123,6 +128,7 @@ System.out.println("scale matrix:\n" + crystalScaleMatrix); System.out.println("translate vector:\n" + crystalTranslateVector); + System.out.println("transpose:\n" + crystalScaleMatrixTranspose); System.out.println("inverted matrix:\n" + matrixUnitcellToOrthogonal); } } |