From: Egon W. <eg...@us...> - 2002-11-27 13:49:54
|
Update of /cvsroot/cdk/cdk/src/org/openscience/cdk/io In directory sc8-pr-cvs1:/tmp/cvs-serv28143/src/org/openscience/cdk/io Modified Files: ShelXReader.java Log Message: Two getCentreOfMass() methods added. More code moved from ShelXReader to CrystalGeometryTools. Index: ShelXReader.java =================================================================== RCS file: /cvsroot/cdk/cdk/src/org/openscience/cdk/io/ShelXReader.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -r1.3 -r1.4 *** ShelXReader.java 27 Nov 2002 10:24:16 -0000 1.3 --- ShelXReader.java 27 Nov 2002 13:49:52 -0000 1.4 *************** *** 145,154 **** logger.debug("gamma: " + sgamma); - /* now comes the tricky part: convert them to cartesian - coordinates */ - double ax,ay,az; - double bx,by,bz; - double cx,cy,cz; - /* align a axes with x, units are Angstrom */ double a = FortranFormat.atof(sa); double b = FortranFormat.atof(sb); --- 145,148 ---- *************** *** 157,191 **** double beta = FortranFormat.atof(sbeta)*Math.PI/180.0; double gamma = FortranFormat.atof(sgamma)*Math.PI/180.0; ! ax = a; ! ay = 0.0; ! az = 0.0; ! /* some intermediate variables */ ! double cosalpha = Math.cos(alpha); ! double cosbeta = Math.cos(beta); ! double cosgamma = Math.cos(gamma); ! double sinalpha = Math.sin(alpha); ! double sinbeta = Math.sin(beta); ! double singamma = Math.sin(gamma); ! /* b is in xy plane making a angle gamma with a */ ! bx = b*cosgamma; ! by = b*singamma; ! bz = 0.0; ! ! /* now the c axis, ! * source: http://server.ccl.net/cca/documents/molecular-modeling/node4.html */ ! double V = a * b * c * ! Math.sqrt(1.0 - cosalpha*cosalpha - ! cosbeta*cosbeta - ! cosgamma*cosgamma + ! 2.0*cosalpha*cosbeta*cosgamma); ! cx = c*cosbeta; ! cy = c*(cosalpha - cosbeta*cosgamma)/singamma; ! cz = V/(a*b*singamma); ! ! crystal.setA(ax, ay, az); ! crystal.setB(bx, by, bz); ! crystal.setC(cx, cy, cz); } else if (command.equalsIgnoreCase("ZERR")) { } else if (command.equalsIgnoreCase("LATT")) { --- 151,161 ---- double beta = FortranFormat.atof(sbeta)*Math.PI/180.0; double gamma = FortranFormat.atof(sgamma)*Math.PI/180.0; ! double[][] axes; ! axes = CrystalGeometryTools.notionalToCartesian(a,b,c, alpha, beta, gamma); ! crystal.setA(axes[0][0], axes[0][1], axes[0][2]); ! crystal.setB(axes[1][0], axes[1][1], axes[1][2]); ! crystal.setC(axes[2][0], axes[2][1], axes[2][2]); } else if (command.equalsIgnoreCase("ZERR")) { } else if (command.equalsIgnoreCase("LATT")) { |