From: <ha...@us...> - 2007-08-31 21:47:47
|
Revision: 8177 http://jmol.svn.sourceforge.net/jmol/?rev=8177&view=rev Author: hansonr Date: 2007-08-31 14:47:42 -0700 (Fri, 31 Aug 2007) Log Message: ----------- 11.2.11 # bug fix: rotateSelected MOLECULAR not around {0 0 0} Modified Paths: -------------- branches/v11_2/Jmol/src/org/jmol/modelset/ModelManager.java branches/v11_2/Jmol/src/org/jmol/modelset/ModelSet.java branches/v11_2/Jmol/src/org/jmol/viewer/Eval.java branches/v11_2/Jmol/src/org/jmol/viewer/Jmol.properties branches/v11_2/Jmol/src/org/jmol/viewer/TransformManager.java branches/v11_2/Jmol/src/org/jmol/viewer/Viewer.java Modified: branches/v11_2/Jmol/src/org/jmol/modelset/ModelManager.java =================================================================== --- branches/v11_2/Jmol/src/org/jmol/modelset/ModelManager.java 2007-08-31 21:45:24 UTC (rev 8176) +++ branches/v11_2/Jmol/src/org/jmol/modelset/ModelManager.java 2007-08-31 21:47:42 UTC (rev 8177) @@ -1344,8 +1344,8 @@ modelSet.invertSelected(pt, plane, bs); } - public void rotateSelected(Matrix3f mNew, Matrix3f matrixRotate, BitSet bs, boolean fullMolecule) { - modelSet.rotateSelected(mNew, matrixRotate, bs, fullMolecule); + public void rotateSelected(Matrix3f mNew, Matrix3f matrixRotate, BitSet bs, boolean fullMolecule, boolean isInternal) { + modelSet.rotateSelected(mNew, matrixRotate, bs, fullMolecule, isInternal); } public String getHybridizationAndAxes(int atomIndex, Vector3f z, Vector3f x, Modified: branches/v11_2/Jmol/src/org/jmol/modelset/ModelSet.java =================================================================== --- branches/v11_2/Jmol/src/org/jmol/modelset/ModelSet.java 2007-08-31 21:45:24 UTC (rev 8176) +++ branches/v11_2/Jmol/src/org/jmol/modelset/ModelSet.java 2007-08-31 21:47:42 UTC (rev 8177) @@ -395,7 +395,7 @@ private final Point3f ptTemp = new Point3f(); void rotateSelected(Matrix3f mNew, Matrix3f matrixRotate, BitSet bsInput, - boolean fullMolecule) { + boolean fullMolecule, boolean isInternal) { bspf = null; BitSet bs = (fullMolecule ? getMoleculeBitSet(bsInput) : bsInput); matInv.set(matrixRotate); @@ -412,6 +412,8 @@ taint(i); n++; } + if (isInternal) + return; ptTemp.scale(1f / n); for (int i = atomCount; --i >= 0;) if (bs.get(i)) Modified: branches/v11_2/Jmol/src/org/jmol/viewer/Eval.java =================================================================== --- branches/v11_2/Jmol/src/org/jmol/viewer/Eval.java 2007-08-31 21:45:24 UTC (rev 8176) +++ branches/v11_2/Jmol/src/org/jmol/viewer/Eval.java 2007-08-31 21:47:42 UTC (rev 8177) @@ -4076,7 +4076,13 @@ * * The MOLECULAR keyword indicates that spins or rotations are to be * carried out in the internal molecular coordinate frame, not the - * fixed room frame. Fractional coordinates may be indicated: + * fixed room frame. + * + * In the case of rotateSelected, all rotations are internal + * and the absense of the MOLECULAR keyword indicates to + * rotate about the geometric center of the molecule, not {0 0 0} + * + * Fractional coordinates may be indicated: * * spin 20 {0 0 0/} {1 1 1/} * Modified: branches/v11_2/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- branches/v11_2/Jmol/src/org/jmol/viewer/Jmol.properties 2007-08-31 21:45:24 UTC (rev 8176) +++ branches/v11_2/Jmol/src/org/jmol/viewer/Jmol.properties 2007-08-31 21:47:42 UTC (rev 8177) @@ -1,6 +1,7 @@ version=11.2.11_dev # bug fix: HDO not recognized as "water" +# bug fix: rotateSelected MOLECULAR not around {0 0 0} # ----------------------------------------------------------------------------- Modified: branches/v11_2/Jmol/src/org/jmol/viewer/TransformManager.java =================================================================== --- branches/v11_2/Jmol/src/org/jmol/viewer/TransformManager.java 2007-08-31 21:45:24 UTC (rev 8176) +++ branches/v11_2/Jmol/src/org/jmol/viewer/TransformManager.java 2007-08-31 21:47:42 UTC (rev 8177) @@ -312,30 +312,30 @@ matrixRotate.rotZ(angleRadians); } - void applyRotation(Matrix3f mNew) { + void applyRotation(Matrix3f mNew, boolean isInternal) { if (rotateSelected) - viewer.rotateSelected(mNew, matrixRotate, rotateMolecule); + viewer.rotateSelected(mNew, matrixRotate, rotateMolecule, isInternal); else matrixRotate.mul(mNew, matrixRotate); } synchronized void rotateXRadians(float angleRadians) { matrixTemp3.rotX(angleRadians); - applyRotation(matrixTemp3); + applyRotation(matrixTemp3, false); } synchronized void rotateYRadians(float angleRadians) { if (axesOrientationRasmol) angleRadians = -angleRadians; matrixTemp3.rotY(angleRadians); - applyRotation(matrixTemp3); + applyRotation(matrixTemp3, false); } synchronized void rotateZRadians(float angleRadians) { if (axesOrientationRasmol) angleRadians = -angleRadians; matrixTemp3.rotZ(angleRadians); - applyRotation(matrixTemp3); + applyRotation(matrixTemp3, false); } protected void rotateAxisAngle(Vector3f rotAxis, float radians) { @@ -346,7 +346,7 @@ synchronized void rotateAxisAngle(AxisAngle4f axisAngle) { matrixTemp3.setIdentity(); matrixTemp3.set(axisAngle); - applyRotation(matrixTemp3); + applyRotation(matrixTemp3, false); } /* *************************************************************** @@ -440,7 +440,7 @@ // NOW apply that rotation matrixTemp3.set(axisangleT); - applyRotation(matrixTemp3); + applyRotation(matrixTemp3, true); if (!rotateSelected) getNewFixedRotationCenter(); } Modified: branches/v11_2/Jmol/src/org/jmol/viewer/Viewer.java =================================================================== --- branches/v11_2/Jmol/src/org/jmol/viewer/Viewer.java 2007-08-31 21:45:24 UTC (rev 8176) +++ branches/v11_2/Jmol/src/org/jmol/viewer/Viewer.java 2007-08-31 21:47:42 UTC (rev 8177) @@ -5533,9 +5533,9 @@ modelManager.invertSelected(pt, plane, selectionManager.bsSelection); } - void rotateSelected(Matrix3f mNew, Matrix3f matrixRotate, boolean fullMolecule) { + void rotateSelected(Matrix3f mNew, Matrix3f matrixRotate, boolean fullMolecule, boolean isInternal) { modelManager.rotateSelected(mNew, matrixRotate, - selectionManager.bsSelection, fullMolecule); + selectionManager.bsSelection, fullMolecule, isInternal); } /** This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |