From: Andrew R. <and...@us...> - 2006-06-11 16:41:02
|
Update of /cvsroot/plplot/plplot/examples/java In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv19011/examples/java Modified Files: x17.java Log Message: Fix passing of char *legline[4] argument in plstripc. Now interpreted as String[4] in java. Implement example 17 in java (except for the error handling - plerror() is not implement in the java binding). Index: x17.java =================================================================== RCS file: /cvsroot/plplot/plplot/examples/java/x17.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- x17.java 31 May 2006 09:09:08 -0000 1.5 +++ x17.java 11 Jun 2006 16:40:52 -0000 1.6 @@ -1,9 +1,10 @@ //---------------------------------------------------------------------------// // $Id$ //---------------------------------------------------------------------------// - +// //---------------------------------------------------------------------------// -// Copyright (C) 2001 Geoffrey Furnish +// Copyright (C) 2004 Andrew Ross <an...@co...> +// Copyright (C) 2004 Alan W. Irwin // // This file is part of PLplot. // @@ -20,21 +21,163 @@ // along with PLplot; if not, write to the Free Software // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA //---------------------------------------------------------------------------// - +// //---------------------------------------------------------------------------// // Implementation of PLplot example 17 in Java. //---------------------------------------------------------------------------// package plplot.examples; +import plplot.core.*; + +import java.util.Random; + class x17 { - public static void main( String[] args ) - { - System.out.println( "x17 not implemented yet." ); + // Class data + PLStream pls = new PLStream(); + + // plerror is not implement in java at this time + static int errcode = 0; + static String errmsg = null; + + + x17( String[] args ) { + + int id1[] = new int[1]; + int n, nsteps = 1000; + boolean autoy, acc; + double y1, y2, y3, y4, ymin, ymax, xlab, ylab; + double t, tmin, tmax, tjump, dt, noise; + int colbox, collab; + int colline[] = new int[4]; + int styline[] = new int[4]; + String legline[] = new String[4]; + + + // Parse and process command line arguments. + pls.parseopts( args, PLStream.PL_PARSE_FULL | PLStream.PL_PARSE_NOPROGRAM ); + + // If db is used the plot is much more smooth. However, because of the + // async X behaviour, one does not have a real-time scripcharter. + pls.setopt("db", ""); + pls.setopt("np", ""); + // Specify some reasonable defaults for ymin and ymax + // The plot will grow automatically if needed (but not shrink) + + ymin = -0.1; + ymax = 0.1; + + // Specify initial tmin and tmax -- this determines length of window. + // Also specify maximum jump in t + // This can accomodate adaptive timesteps + + tmin = 0.; + tmax = 10.; + tjump = 0.3; // percentage of plot to jump + + // Axes options same as plbox. + // Only automatic tick generation and label placement allowed + // Eventually I'll make this fancier + + colbox = 1; + collab = 3; + styline[0] = colline[0] = 2; // pens color and line style + styline[1] = colline[1] = 3; + styline[2] = colline[2] = 4; + styline[3] = colline[3] = 5; + + legline[0] = "sum"; // pens legend + legline[1] = "sin"; + legline[2] = "sin*noi"; + legline[3] = "sin+noi"; + + xlab = 0.; ylab = 0.25; // legend position + + autoy = true; // autoscale y + acc = true; // don't scrip, accumulate + + // Initialize PLplot. + pls.init(); + + pls.adv(0); + pls.vsta(); + + // Register our error variables with PLplot + // From here on, we're handling all errors here + + //pls.sError(&errcode, errmsg); + + pls.stripc(id1, "bcnst", "bcnstv", + tmin, tmax, tjump, ymin, ymax, + xlab, ylab, + autoy, acc, + colbox, collab, + colline, styline, legline, + "t", "", "Strip chart demo"); + + if (errcode != 0) { + System.out.println(errmsg); + pls.end(); + System.exit(1); + } + + // Let plplot handle errors from here on + + //pls.sError(NULL, NULL); + + autoy = false; // autoscale y + acc = true; // accumulate/ + + // This is to represent a loop over time + // Let's try a random walk process + + y1 = y2 = y3 = y4 = 0.0; + dt = 0.1; + + Random rnd = new Random(); + + for (n = 0; n < nsteps; n++) { + try { + Thread.sleep(10); + } + catch (InterruptedException e) { + } + t = (double)n * dt; + noise = rnd.nextDouble() - 0.5; + y1 = y1 + noise; + y2 = Math.sin(t*Math.PI/18.); + y3 = y2 * noise; + y4 = y2 + noise/3.; + + // There is no need for all pens to have the same number of + // points or beeing equally time spaced. + + if (n%2 != 0) + pls.stripa(id1[0], 0, t, y1); + if (n%3 != 0) + pls.stripa(id1[0], 1, t, y2); + if (n%4 != 0) + pls.stripa(id1[0], 2, t, y3); + if (n%5 != 0) + pls.stripa(id1[0], 3, t, y4); + pls.eop(); // use double buffer (-db on command line) + } + + // Destroy strip chart and it's memory + pls.stripd(id1[0]); + + pls.end(); + + } + + public static void main( String[] args ) { + x17 x = new x17( args ); + } } + //---------------------------------------------------------------------------// // End of x17.java //---------------------------------------------------------------------------// |