Esempio n. 1
0
  public x11(String[] args) {
    int i, j, k;

    double[] x = new double[XPTS];
    double[] y = new double[YPTS];
    double[][] z = new double[XPTS][YPTS];
    double zmin = Double.MAX_VALUE, zmax = Double.MIN_VALUE;

    double xx, yy;
    int nlevel = LEVELS;
    double[] clevel = new double[LEVELS];
    double step;

    // Parse and process command line arguments.

    pls.parseopts(args, PL_PARSE_FULL | PL_PARSE_NOPROGRAM);

    // Initialize plplot.

    pls.init();

    for (i = 0; i < XPTS; i++) x[i] = 3. * (i - (XPTS / 2)) / (XPTS / 2);

    for (j = 0; j < YPTS; j++) y[j] = 3. * (j - (YPTS / 2)) / (YPTS / 2);

    for (i = 0; i < XPTS; i++) {
      xx = x[i];
      for (j = 0; j < YPTS; j++) {
        yy = y[j];
        z[i][j] =
            3. * (1. - xx) * (1. - xx) * Math.exp(-(xx * xx) - (yy + 1.) * (yy + 1.))
                - 10.
                    * (xx / 5. - Math.pow(xx, 3.) - Math.pow(yy, 5.))
                    * Math.exp(-xx * xx - yy * yy)
                - 1. / 3. * Math.exp(-(xx + 1) * (xx + 1) - (yy * yy));
        // if ( false ) // Jungfraujoch/Interlaken
        // {
        //    if ( z[i][j] < -1. )
        //        z[i][j] = -1.;
        // }
        if (zmin > z[i][j]) zmin = z[i][j];
        if (zmax < z[i][j]) zmax = z[i][j];
      }
    }

    step = (zmax - zmin) / (nlevel + 1);
    for (i = 0; i < nlevel; i++) clevel[i] = zmin + step + step * i;

    cmap1_init();
    for (k = 0; k < 2; k++) {
      for (i = 0; i < 4; i++) {
        pls.adv(0);
        pls.col0(1);
        pls.vpor(0.0, 1.0, 0.0, 0.9);
        pls.wind(-1.0, 1.0, -1.0, 1.5);

        pls.w3d(1.0, 1.0, 1.2, -3.0, 3.0, -3.0, 3.0, zmin, zmax, alt[k], az[k]);
        pls.box3(
            "bnstu", "x axis", 0.0, 0, "bnstu", "y axis", 0.0, 0, "bcdmnstuv", "z axis", 0.0, 4);

        pls.col0(2);

        // wireframe plot
        if (i == 0) pls.mesh(x, y, z, opt[k]);

        // magnitude colored wireframe plot
        else if (i == 1) pls.mesh(x, y, z, opt[k] | MAG_COLOR);

        // magnitude colored wireframe plot with sides
        else if (i == 2) pls.plot3d(x, y, z, opt[k] | MAG_COLOR, true);

        // magnitude colored wireframe plot with base contour
        else if (i == 3) pls.meshc(x, y, z, opt[k] | MAG_COLOR | BASE_CONT, clevel);

        pls.col0(3);
        pls.mtex("t", 1.0, 0.5, 0.5, title[k]);
      }
    }

    pls.end();
  }