diff options
Diffstat (limited to 'Examples/GIFPlot/Java/shadow/runme.java')
| -rw-r--r-- | Examples/GIFPlot/Java/shadow/runme.java | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/Examples/GIFPlot/Java/shadow/runme.java b/Examples/GIFPlot/Java/shadow/runme.java new file mode 100644 index 0000000..91db038 --- /dev/null +++ b/Examples/GIFPlot/Java/shadow/runme.java @@ -0,0 +1,76 @@ +// Plot a 3D function + +import java.lang.Math; + +public class runme { + + static { + try { + System.loadLibrary("gifplot"); + } catch (UnsatisfiedLinkError e) { + System.err.println("Native code library failed to load. See the chapter on Dynamic Linking Problems in the SWIG Java documentation for help.\n" + e); + System.exit(1); + } + } + + public static void main(String argv[]) { + + // Here are some plotting parameters + double xmin = -5.0; + double xmax = 5.0; + double ymin = -5.0; + double ymax = 5.0; + double zmin = -5.0; + double zmax = 5.0; + + // Grid resolution + int nxpoints = 60; + int nypoints = 60; + + ColorMap cmap = new ColorMap("cmap"); + FrameBuffer frame = new FrameBuffer(500,500); + frame.clear((short)gifplot.BLACK); + + Plot3D p3 = new Plot3D(frame,xmin,ymin,zmin,xmax,ymax,zmax); + p3.lookat(2*(zmax-zmin)); + p3.autoperspective(40); + p3.rotu(60); + p3.rotr(30); + p3.rotd(10); + + System.out.println( "Making a nice 3D plot..." ); + p3.clear((short)gifplot.BLACK); + p3.start(); + double dx = 1.0*(xmax-xmin)/nxpoints; + double dy = 1.0*(ymax-ymin)/nypoints; + double cscale = 240.0/(zmax-zmin); + double x = xmin; + for (int i = 0; i < nxpoints; i++) { + double y = ymin; + for (int j = 0; j < nypoints; j++) { + double z1 = func(x,y); + double z2 = func(x+dx,y); + double z3 = func(x+dx,y+dy); + double z4 = func(x,y+dy); + double c1 = cscale*(z1-zmin); + double c2 = cscale*(z2-zmin); + double c3 = cscale*(z3-zmin); + double c4 = cscale*(z4-zmin); + double c = (c1+c2+c3+c4)/4; + if (c < 0) c = 0; + if (c > 239) c = 239; + p3.solidquad(x,y,z1,x+dx,y,z2,x+dx,y+dy,z3,x,y+dy,z4,(short)(c+16)); + y = y + dy; + } + x = x + dx; + } + + frame.writeGIF(cmap,"image.gif"); + System.out.println( "Wrote image.gif" ); + } + + // Here is the function to plot + public static double func(double x, double y) { + return 5*java.lang.Math.cos(2*java.lang.Math.sqrt(x*x+y*y))*java.lang.Math.exp(-0.3*java.lang.Math.sqrt(x*x+y*y)); + } +} |
