Revision: 5222
Author: hansonr
Date: 2006-06-13 20:19:21 -0700 (Tue, 13 Jun 2006)
ViewCVS: http://svn.sourceforge.net/jmol/?rev=5222&view=rev
Log Message:
-----------
bob200603 isosurface adds anisotropy
Modified Paths:
--------------
branches/bob200603/Jmol/src/org/jmol/viewer/Eval.java
branches/bob200603/Jmol/src/org/jmol/viewer/Isosurface.java
Modified: branches/bob200603/Jmol/src/org/jmol/viewer/Eval.java
===================================================================
--- branches/bob200603/Jmol/src/org/jmol/viewer/Eval.java 2006-06-14
02:25:31 UTC (rev 5221)
+++ branches/bob200603/Jmol/src/org/jmol/viewer/Eval.java 2006-06-14
03:19:21 UTC (rev 5222)
@@ -4021,21 +4021,21 @@
switch (statement[++i].tok) {
case Token.dollarsign:
String id = objectNameParameter(++i);
- propertyValue = viewer.getDrawObjectCenter(id);
- if (propertyValue == null)
- drawObjectNotDefined(id);
+ propertyValue = viewer.getDrawObjectCenter(id);
+ if (propertyValue == null)
+ drawObjectNotDefined(id);
break;
case Token.expressionBegin:
- propertyValue = viewer.getAtomSetCenter(expression(statement, i +
1));
- i = pcLastExpressionInstruction;
+ propertyValue = viewer.getAtomSetCenter(expression(statement, i +
1));
+ i = pcLastExpressionInstruction;
break;
case Token.leftbrace:
- propertyValue = getCoordinate(i, true);
- i = pcLastExpressionInstruction;
- break;
+ propertyValue = getCoordinate(i, true);
+ i = pcLastExpressionInstruction;
+ break;
default:
coordinateOrNameOrExpressionRequired();
- }
+ }
break;
case Token.leftbrace:
// {X, Y, Z, W}
@@ -4062,6 +4062,12 @@
break;
case Token.identifier:
String str = (String) token.value;
+ if (str.equalsIgnoreCase("ANISOTROPY")) {
+ propertyName = "anisotropy";
+ propertyValue = getCoordinate(i + 1, false);
+ i = pcLastExpressionInstruction;
+ break;
+ }
if (str.equalsIgnoreCase("FIXED")) {
propertyName = "fixed";
propertyValue = Boolean.TRUE;
@@ -4072,7 +4078,7 @@
propertyValue = Boolean.FALSE;
break;
}
-
+
if (str.equalsIgnoreCase("sign")) {
signPt = i + 1;
propertyName = "sign";
@@ -4116,9 +4122,9 @@
nlmZR[0] = intParameter(++i);
nlmZR[1] = intParameter(++i);
nlmZR[2] = intParameter(++i);
- nlmZR[3] = (statement[i + 1].tok == Token.integer ?
floatParameter(++i)
+ nlmZR[3] = (statement.length > i + 1 && statement[i + 1].tok ==
Token.integer ? floatParameter(++i)
: 6f);
- nlmZR[4] = (statement[i + 1].tok == Token.integer ?
floatParameter(++i)
+ nlmZR[4] = (statement.length > i + 1 && statement[i + 1].tok ==
Token.integer ? floatParameter(++i)
: 10f);
propertyName = "orbital";
propertyValue = nlmZR;
Modified: branches/bob200603/Jmol/src/org/jmol/viewer/Isosurface.java
===================================================================
--- branches/bob200603/Jmol/src/org/jmol/viewer/Isosurface.java 2006-06-14
02:25:31 UTC (rev 5221)
+++ branches/bob200603/Jmol/src/org/jmol/viewer/Isosurface.java 2006-06-14
03:19:21 UTC (rev 5222)
@@ -120,6 +120,8 @@
boolean isOrbital;
boolean isSolvent;
boolean isFunctionXY;
+ float[] anisotropy = new float[3];
+
float solventRadius;
int edgeFractionBase;
@@ -163,7 +165,7 @@
int nContours;
int thisContour;
boolean dotsOnly;
- boolean isFixed;
+ boolean isFixed;
BufferedReader br;
@@ -197,11 +199,20 @@
isFunctionXY = false;
isCalculation = false;
center.set(Float.MAX_VALUE, Float.MAX_VALUE, Float.MAX_VALUE);
+ anisotropy[0] = anisotropy[1] = anisotropy[2] = 1f;
cutoff = Float.MAX_VALUE;
super.setProperty("meshID", null, null);
return;
}
+ if ("anisotropy" == propertyName) {
+ Point3f pt = (Point3f) value;
+ anisotropy[0] = pt.x;
+ anisotropy[1] = pt.y;
+ anisotropy[2] = pt.z;
+ return;
+ }
+
if ("center" == propertyName) {
center.set((Point3f) value);
return;
@@ -715,7 +726,7 @@
isJvxlColorMapped = false;
isJvxlColorPrecision = false;
thisInside = (!isJvxl || thePlane == null);
- if(insideOut)
+ if (insideOut)
thisInside = !thisInside;
nDataPoints = 0;
voxelData = new float[nPointsX][][];
@@ -2834,9 +2845,9 @@
ptXyz.scaleAdd((voxelCounts[0] - 1) / 2f, volumetricVectors[0], ptXyz);
ptXyz.scaleAdd((voxelCounts[1] - 1) / 2f, volumetricVectors[1], ptXyz);
ptXyz.scaleAdd((voxelCounts[2] - 1) / 2f, volumetricVectors[2], ptXyz);
- System.out.println("teset1 "+volumetricOrigin);
+ System.out.println("teset1 " + volumetricOrigin);
volumetricOrigin.sub(center, ptXyz);
- System.out.println("teset2 "+volumetricOrigin);
+ System.out.println("teset2 " + volumetricOrigin);
}
Point3f pixelPtToXYZ(int x, int y) {
@@ -2961,16 +2972,17 @@
void setupOrbital() {
psi_radiusAngstroms = autoScaleOrbital();
if (center.x == Float.MAX_VALUE)
- psiOrigin.set(0,0,0);
+ psiOrigin.set(0, 0, 0);
else
psiOrigin.set(center);
for (int i = 0; i < 3; i++)
- setVoxelRange(i, -psi_radiusAngstroms, psi_radiusAngstroms,
- psi_ptsPerAngstrom, psi_gridMax);
+ setVoxelRange(i, -psi_radiusAngstroms * anisotropy[i],
+ psi_radiusAngstroms * anisotropy[i], psi_ptsPerAngstrom,
psi_gridMax);
jvxlFileHeader = "orbital psi squared\nn=" + psi_n + ", l=" + psi_l
+ ", m=" + psi_m + " Znuc=" + psi_Znuc + " res=" + psi_ptsPerAngstrom
- + " rad=" + psi_radiusAngstroms + "\n";
+ + " rad=" + psi_radiusAngstroms + " anisotropy=(" + anisotropy[0] + ","
+ + anisotropy[1] + "," + anisotropy[2] + ")\n";
jvxlFileHeader += jvxlGetVolumeHeader();
atomCount = 0;
@@ -3017,9 +3029,9 @@
double hydrogenAtomPsiAt(Point3f pt, int n, int el, int m) {
// ref: http://www.stolaf.edu/people/hansonr/imt/concept/schroed.pdf
int abm = Math.abs(m);
- float x = pt.x - psiOrigin.x;
- float y = pt.y - psiOrigin.y;
- float z = pt.z - psiOrigin.z;
+ float x = (pt.x - psiOrigin.x) / anisotropy[0];
+ float y = (pt.y - psiOrigin.y) / anisotropy[1];
+ float z = (pt.z - psiOrigin.z) / anisotropy[2];
double x2y2 = x * x + y * y;
double r2 = x2y2 + z * z;
double r = Math.sqrt(r2);
@@ -3263,7 +3275,7 @@
System.out.println(x + " " + y + " " + zValue + " " + (z - zValue));
return z - zValue;
}
-
+
void setModelIndex() {
if (currentMesh == null)
return;
@@ -3275,9 +3287,9 @@
currentMesh.modelIndex = -1;
} else {
currentMesh.modelIndex = viewer.getDisplayModelIndex();
- }
+ }
}
-
+
void setVisibilityFlags(BitSet bs) {
/*
* set all fixed objects visible; others based on model being displayed
@@ -3285,10 +3297,10 @@
*/
for (int i = meshCount; --i >= 0;) {
Mesh mesh = meshes[i];
- mesh.visibilityFlags =
- (mesh.visible && (mesh.modelIndex < 0 || bs.get(mesh.modelIndex)) ?
myVisibilityFlag : 0);
+ mesh.visibilityFlags = (mesh.visible
+ && (mesh.modelIndex < 0 || bs.get(mesh.modelIndex)) ?
myVisibilityFlag
+ : 0);
}
}
-
}
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
_______________________________________________
Jmol-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jmol-commits