From: <mig...@us...> - 2006-03-25 17:47:42
|
Revision: 4699 Author: migueljmol Date: 2006-03-25 09:47:37 -0800 (Sat, 25 Mar 2006) ViewCVS: http://svn.sourceforge.net/jmol/?rev=4699&view=rev Log Message: ----------- clip large spheres sooner Modified Paths: -------------- trunk/Jmol/src/org/jmol/g3d/Sphere3D.java Modified: trunk/Jmol/src/org/jmol/g3d/Sphere3D.java =================================================================== --- trunk/Jmol/src/org/jmol/g3d/Sphere3D.java 2006-03-25 17:26:43 UTC (rev 4698) +++ trunk/Jmol/src/org/jmol/g3d/Sphere3D.java 2006-03-25 17:47:37 UTC (rev 4699) @@ -54,10 +54,6 @@ void render(int[] shades, boolean tScreened, int diameter, int x, int y, int z) { - if (diameter >= maxSphereCache) { - renderLargeSphere(shades, tScreened, diameter, x, y, z); - return; - } if (diameter > maxOddSizeSphere) diameter &= ~1; int radius = (diameter + 1) >> 1; @@ -68,6 +64,10 @@ maxY < 0 || minY >= g3d.height || maxZ < g3d.slab || minZ > g3d.depth) return; + if (diameter >= maxSphereCache) { + renderLargeSphere(shades, tScreened, diameter, x, y, z); + return; + } int[] ss = getSphereShape(diameter); if (minX < 0 || maxX >= g3d.width || minY < 0 || maxY >= g3d.height || This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2007-04-06 15:46:27
|
Revision: 7340 http://svn.sourceforge.net/jmol/?rev=7340&view=rev Author: hansonr Date: 2007-04-06 08:46:24 -0700 (Fri, 06 Apr 2007) Log Message: ----------- 11.1.28 making variable lighting parameters nonstatic Modified Paths: -------------- trunk/Jmol/src/org/jmol/g3d/Sphere3D.java Modified: trunk/Jmol/src/org/jmol/g3d/Sphere3D.java =================================================================== --- trunk/Jmol/src/org/jmol/g3d/Sphere3D.java 2007-04-06 15:43:21 UTC (rev 7339) +++ trunk/Jmol/src/org/jmol/g3d/Sphere3D.java 2007-04-06 15:46:24 UTC (rev 7340) @@ -57,11 +57,11 @@ private final static int maxSphereCache = 128; private final static int maxOddSizeSphere = 49; private final static int maxSphereDiameter = 1000; - private static int[][] sphereShapeCache = new int[maxSphereCache][]; + private int[][] sphereShapeCache = new int[maxSphereCache][]; private int zShift; - static void flushImageCache() { + void flushImageCache() { sphereShapeCache = new int[maxSphereCache][]; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2008-04-25 04:56:12
|
Revision: 9311 http://jmol.svn.sourceforge.net/jmol/?rev=9311&view=rev Author: hansonr Date: 2008-04-24 21:56:09 -0700 (Thu, 24 Apr 2008) Log Message: ----------- version=11.5.31_dev # code: 2-fold improvement in rendering ellipsoids by using 40x40x40 shade cache Modified Paths: -------------- trunk/Jmol/src/org/jmol/g3d/Sphere3D.java Modified: trunk/Jmol/src/org/jmol/g3d/Sphere3D.java =================================================================== --- trunk/Jmol/src/org/jmol/g3d/Sphere3D.java 2008-04-25 04:38:26 UTC (rev 9310) +++ trunk/Jmol/src/org/jmol/g3d/Sphere3D.java 2008-04-25 04:56:09 UTC (rev 9311) @@ -575,21 +575,31 @@ } } + final private static int SLIM = 20; + final private static int SDIM = SLIM * 2; private static void createEllipsoidShades() { - ellipsoidShades = new byte[40][40][40]; - for (int ii = 0; ii < 40; ii++) - for (int jj = 0; jj < 40; jj++) - for (int kk = 0; kk < 40; kk++) - ellipsoidShades[ii][jj][kk] = Shade3D.calcIntensity(ii - 20, jj - 20, - kk - 20); + ellipsoidShades = new byte[SDIM][SDIM][SDIM]; + for (int ii = 0; ii < SDIM; ii++) + for (int jj = 0; jj < SDIM; jj++) + for (int kk = 0; kk < SDIM; kk++) + ellipsoidShades[ii][jj][kk] = Shade3D.calcIntensity(ii - SLIM, jj - SLIM, + kk - SLIM); } private static int getEllipsoidShade(int i, int j, int k) { - return (i < -20 || i >= 20 - || j < -20 || j >= 20 - || k < -20 || k >= 20 - ? Shade3D.calcIntensity(i, j, k) - : ellipsoidShades[i + 20][j + 20][k + 20]); + boolean outside = i < -SLIM || i >= SLIM || j < -SLIM || j >= SLIM + || k < -SLIM || k >= SLIM; + if (outside) { + while (i % 2 == 0 && j % 2 == 0 && k % 2 == 0 && i + j + k > 0) { + i >>= 1; + j >>= 1; + k >>= 1; + } + outside = i < -SLIM || i >= SLIM || j < -SLIM || j >= SLIM || k < -SLIM + || k >= SLIM; + } + return (outside ? Shade3D.calcIntensity(i, j, k) + : ellipsoidShades[i + SLIM][j + SLIM][k + SLIM]); } private static boolean getPixelZ(Vector3f vA, Vector3f vC, int[] zroot) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2008-04-27 20:49:30
|
Revision: 9325 http://jmol.svn.sourceforge.net/jmol/?rev=9325&view=rev Author: hansonr Date: 2008-04-27 13:49:27 -0700 (Sun, 27 Apr 2008) Log Message: ----------- version=11.5.32_dev ellipsoids/POV-ray/antialiasing # code: better ellipsoid fill method # bug fix: stronger wireframe for antialiased display and generator (POV-ray) Modified Paths: -------------- trunk/Jmol/src/org/jmol/g3d/Sphere3D.java Modified: trunk/Jmol/src/org/jmol/g3d/Sphere3D.java =================================================================== --- trunk/Jmol/src/org/jmol/g3d/Sphere3D.java 2008-04-27 20:47:51 UTC (rev 9324) +++ trunk/Jmol/src/org/jmol/g3d/Sphere3D.java 2008-04-27 20:49:27 UTC (rev 9325) @@ -51,6 +51,7 @@ * There is a lot of bit-twiddling going on here, which may * make the code difficult to understand for non-systems programmers. *</p> + * Ellipsoid code added 4/2008 -- Bob Hanson ha...@st... * * @author Miguel, mi...@jm... */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |