Пример #1
0
/* >>>>>>>>>> EXA_13 <<<<<<<<<< */
void exa_13()
{ int n = 7, i;
  static char
      *clr[7] = {"fore", "red", "yello", "cyan", "oran", "green", "blue"},
     *cont[7] = {"anta", "afri", "sout" , "aust", "nort", "eura", "lake"};

  disini ();
  hwfont ();
  setvlt ("small");
  pagera ();

  projct ("hammer");
  noclip ();
  grafmp (-180.f, 180.f, -180.f, 30.f, -90.f, 90.f, -90.f, 30.f);

  shdpat (16L);
  for (i = 0; i < n; i++)
  { color  (clr[i]); 
    shdmap (cont[i]);                               
    sendbf ();
  }

  color  ("fore");
  gridmp (1, 1);
  disfin ();
}
Пример #2
0
/* >>>>>>>>>> EXA12_1 <<<<<<<<<< */
void exa12_1 (void)
{ int n = 50 ,i, j;
  static int ixp[4] = {200, 1999, 1999, 200},
             iyp[4] = {2600, 2600, 801, 801};

  double fpi = 3.1415927 / 180., step, x, y;

  step = 360. / (n - 1);
  for (i = 0; i < n; i++)
  { x = i * step;
    for (j = 0; j < n; j++)
    { y = j * step;
      zmat[i][j] = (float) (2 * sin (x * fpi) * sin (y * fpi));
    }
  }

  setpag ("da4p");
  disini ();
  pagera ();
  hwfont ();

  axspos (200, 2600);
  axslen (1800, 1800);

  name   ("X-axis", "x");
  name   ("Y-axis", "y");
  name   ("Z-axis", "z");

  titlin ("Surface Plot (SURMAT)", 2);
  titlin ("F(X,Y) = 2*SIN(X)*SIN(Y)", 4);

  graf3d (0.f, 360.f, 0.f, 90.f, 0.f, 360.f, 0.f, 90.f,
          -3.f, 3.f, -3.f, 1.f);
  height (50);
  title  ();
  shlsur ();
  color  ("green");
  surmat ((float *) zmat, n, n, 1, 1);

  color  ("fore");
  grfini (-1.f, -1.f, -1.f, 1.f, -1.f, -1.f, 1.f, 1.f, -1.f);
  nograf ();
  graf   (0.f, 360.f, 0.f, 90.f, 0.f, 360.f, 0.f, 90.f);
  dashl  ();
  grid   (1,1);
  grffin ();

  grfini (-1.f, -1.f, -1.f, -1.f, 1.f, -1.f, -1.f, 1.f, 1.f);
  graf   (0.f, 360.f, 0.f, 90.f, -3.f, 3.f, -3.f, 1.f);
  grid   (1, 1);
  grffin ();

  grfini (-1.f, 1.f, -1.f, 1.f, 1.f, -1.f, 1.f, 1.f, 1.f);
  shdpat (7L);
  solid  ();
  areaf  (ixp, iyp, 4);
  grffin ();
  disfin ();
}
Пример #3
0
/* >>>>>>>>>> EX10_3 <<<<<<<<<< */
void ex10_3 (void)
{ char cbuf[80];
  float x[5]  = {2., 4., 6., 8., 10.},
        y1[5] = {0., 0., 0., 0., 0.},
        y2[5] = {3.2, 1.5, 2.0, 1.0, 3.0};

  int ic1ray[5]  = {50, 150, 100, 200, 175},
      ic2ray[5]  = {50, 150, 100, 200, 175};

  setpag ("da4p");
  disini ();
  pagera ();
  hwfont ();

  titlin ("3-D Bar Graph / 3-D Pie Chart", 2);
  htitle (40);

  shdpat (16L);
  axslen (1500, 1000);
  axspos (300, 1400);

  barwth (0.5);
  bartyp ("3dvert");
  labels ("second", "bars");
  labpos ("outside", "bars");
  graf   (0., 12., 0., 2., 0., 5., 0., 1.);
  title  ();
  color  ("red");
  bars   (x, y1, y2, 5);
  endgrf ();

  shdpat (16L);
  labels ("data", "pie");
  chnpie ("none");
  pieclr (ic1ray, ic2ray, 5);
  pietyp ("3d");
  axspos (300, 2700);
  piegrf (cbuf, 0, y2, 5);       
  disfin ();
}
Пример #4
0
/* >>>>>>>>>> EXA_8  <<<<<<<<<< */
void exa_8 (void)
{ int   ixp[4], iyp[4], nl, nx, nx0 = 335, ny0 = 350, ny, i, j, ii, k, iclr;
  static int  ix[4] = {0, 300, 300, 0},
              iy[4] = {0, 0, 400, 400};
  static char *ctit = "Shading Patterns (AREAF)", cstr[3];

  disini ();
  setvlt ("small");
  pagera ();
  hwfont ();

  height (50);
  nl = nlmess (ctit);
  nx = (2970 - nl) / 2;
  messag (ctit, nx, 200);

  iclr = 0;
  for (i = 0; i < 3; i++)
  { ny = ny0 + i * 600;
    for (j = 0; j < 6; j++)
    { nx = nx0 + j * 400;
      ii = i * 6 + j;
      shdpat ((long) ii);
      sprintf (cstr, "%d", ii);

      iclr = iclr % 8;
      iclr++;
      setclr (iclr);

      for (k = 0; k < 4; k++)
      { ixp[k] = ix[k] + nx;
        iyp[k] = iy[k] + ny;
      }
      areaf  (ixp, iyp, 4);

      nl  = nlmess (cstr);
      nx += (300 - nl) / 2;
      messag (cstr, nx, ny + 460);
    }
  }
  disfin ();
}
Пример #5
0
int main ( int argc, char *argv[] )

/******************************************************************************/
/*
  Purpose:

    CIRCLE_INOUT uses DISLIN to draw points in and out of a circle.

  Licensing:

    This code is distributed under the GNU LGPL license.

  Modified:

    01 May 2011

  Author:

    John Burkardt

  Reference:

    Helmut Michels,
    The Data Plotting Software DISLIN - version 10.4,
    Shaker Media GmbH, January 2010,
    ISBN13: 978-3-86858-517-9.
*/
{
  int i;
  int j;
  int m;
  int n_circle = 100;
  int n_in;
  int n_out;
  int pat;
  float pi = 3.14159265;
  float r;
  float s;
  float t;
  float *x;
  float *xy_in;
  float *xy_out;
  float *y;

  printf ( "\n" );
  printf ( "CIRCLE_INOUT:\n" );
  printf ( "  C version\n" );
  printf ( "  Use DISLIN routines to make a scatterplot.\n" );
/*
  Read the data.
*/
  r4mat_header_read ( "circle_in.txt", &m, &n_in );

  xy_in = r4mat_data_read ( "circle_in.txt", m, n_in );

  r4mat_header_read ( "circle_out.txt", &m, &n_out );

  xy_out = r4mat_data_read ( "circle_out.txt", m, n_out );
/*
  Specify the format of the output file.
*/
  metafl ( "png" );
/*
  Indicate that new data overwrites old data.
*/
  filmod ( "delete" );
/*
  Specify the name of the output graphics file.
*/
  setfil ( "circle_inout.png" );
/*
  Choose the page size and orientation.
  'USA' is 2160 plot units wide and 2790 plot units high.
  'P' requests PROFILE rather than LANDSCAPE orientation.
*/
  setpag ( "usap" );
/*
  For PNG output, use reverse the default black background to white.
*/
  scrmod ( "reverse" );
/*
  Open DISLIN.
*/
  disini ( );
/*
  Plot a border around the page.
*/
  pagera ( );
/*
  Use the COMPLEX font.
*/
  complx ( );
/*
  Set the axis origin 230 plot units to the right, and 2560 plot units DOWN.
*/
  axspos ( 230, 2560 );
/*
  Define the X and Y sizes of the axis system in plot units.
*/
  axslen ( 1700, 1700 );
/*
  Label the X and Y axes.
*/
  name ( "<--- X --->", "X" );
  name ( "<--- Y --->", "Y" );
/*
  Relate the physical coordinates to the axes.
*/
  graf ( 0.0, 1.0, 0.0, 0.1, 0.0, 1.0, 0.0, 0.1 );
/*
  Define axis system titles.
*/
  titlin ( "Random points inside/outside the unit circle", 1 );
/*
  Draw the title.
*/
  title ( );
/*
  Add a grid, with one grid line for every tick mark in the X and Y axes.
*/
  grid ( 1, 1 );
/*
  Select the shading pattern.
*/
  pat = 16;
  shdpat ( pat );
/*
  Set the color to blue.
*/
  color ( "blue" );
/*
  At every data point, draw a circle of radius 0.01.
*/
  for ( i = 0; i < n_in; i++ )
  {
    rlcirc ( xy_in[0+i*2], xy_in[1+i*2], 0.01 );
  }
/*
  Set the color to red.
*/
  color ( "red" );
/*
  At every data point, draw a circle of radius 0.01.
*/
  for ( i = 0; i < n_out; i++ )
  {
    rlcirc ( xy_out[0+i*2], xy_out[1+i*2], 0.01 );
  }
/*
  Draw a red circle.
*/
  x = ( float * ) malloc ( n_circle * sizeof ( float ) );
  y = ( float * ) malloc ( n_circle * sizeof ( float ) );

  for ( i = 0; i < n_circle; i++ )
  {
    t = pi * ( float ) ( i ) / ( float ) ( n_circle - 1 );
    x[i] = cos ( t );
    y[i] = sin ( t );
  }
  thkcrv ( 10 );
  curve ( x, y, n_circle );
/*
  End this plot.
*/
  endgrf ( );
/*
  Free memory.
*/
  free ( x );
  free ( xy_in );
  free ( xy_out );
  free ( y );
/*
  Close DISLIN.
*/
  disfin ( );
/*
  Terminate.
*/
  printf ( "\n" );
  printf ( "CIRCLE_INOUT:\n" );
  printf ( "  Normal end of execution.\n" );

  return 0;
}
Пример #6
0
int main ( int argc, char *argv[] )

/******************************************************************************/
/*
  Purpose:

    MAIN demonstrates the use of bar graphs.

  Modified:
 
    09 April 2011

  Reference:

    Helmut Michels,
    The Data Plotting Software DISLIN - version 10.4,
    Shaker Media GmbH, January 2010,
    ISBN13: 978-3-86858-517-9.
*/
{
  static char cbuf[25];
  static char *ctit = "Bar Graphs (BARS)";
  int i;
  int nya = 2700;
  static float x[9]  = { 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 };
  static float y[9]  = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
  static float y1[9] = { 1.0, 1.5, 2.5, 1.3, 2.0, 1.2, 0.7, 1.4, 1.1 };
  static float y2[9] = { 2.0, 2.7, 3.5, 2.1, 3.2, 1.9, 2.0, 2.3, 1.8 };
  static float y3[9] = { 4.0, 3.5, 4.5, 3.7, 4.0, 2.9, 3.0, 3.2, 2.6 };

  printf ( "\n" );
  printf ( "DISLIN_EX05:\n" );
  printf ( "  C version:\n" );
  printf ( "  Demonstrate the display of data in bar graphs.\n" );
/*
  Specify the format of the output file.
*/
  metafl ( "png" );
/*
  Specify that if a file already exists of the given name,
  the new data should overwrite the old.
*/
  filmod ( "delete" );
/*
  Specify the name of the output graphics file.
*/
  setfil ( "dislin_ex05.png" );
/*
  Choose the page size and orientation.
*/
  setpag ( "usap" );
/*
  For PNG output, reverse the default black background to white.
*/
  scrmod ( "reverse" );
/*
  Open DISLIN.
*/
  disini ( );
/*
  Plot a border around the page.
*/
  pagera ( );
/*
  Use the COMPLEX font.
*/
  complx ( );
  ticks ( 1, "x" );
  intax ( );
  axslen ( 1600, 700 );
  titlin ( ctit, 3 );

  legini ( cbuf, 3, 8 );
  leglin ( cbuf, "FIRST", 1 );
  leglin ( cbuf, "SECOND", 2 );
  leglin ( cbuf, "THIRD", 3 );
  legtit ( " " );
  shdpat ( 5L );

  for ( i = 1; i <= 3; i++ )
  {
     if ( 1 < i )
     {
       labels ( "none", "x" );
     }
    axspos ( 300, nya-(i-1)*800 );

    graf ( 0.0, 10.0, 0.0, 1.0, 0.0, 5.0, 0.0, 1.0 );

    if ( i == 1 )
    {
      bargrp ( 3, 0.15 );
      color ( "red" );
      bars ( x, y, y1, 9 );
      color ( "green" );
      bars ( x, y, y2, 9 );
      color ( "blue" );
      bars ( x, y, y3, 9 );
      color ( "fore" );
      reset ( "bargrp" );
    }
    else if ( i == 2 )
    {
      height ( 30 );
      labels ( "delta", "bars" );
      labpos ( "center", "bars" );
      color ( "red" );
      bars ( x, y, y1, 9 );
      color ( "green" );
      bars ( x, y1, y2, 9 );
      color ( "blue" );
      bars ( x, y2, y3, 9 );
      color ( "fore" );
      reset ( "height" ); 
    }
    else if ( i == 3 )
    {
      labels ( "second", "bars" );
      labpos ( "outside", "bars" );
      color ( "red" );
      bars ( x, y, y1, 9 );
      color ( "fore" );
    }

    if ( i < 3 )
    {
      legend ( cbuf, 7 );
    }
    else
    {
      height ( 50 );
      title ( );
    }

    endgrf ( );
  }
/*
  Close DISLIN.
*/
  disfin ( );
/*
  Terminate.
*/
  printf ( "\n" );
  printf ( "DISLIN_EX05:\n" );
  printf ( "  Normal end of execution.\n" );

  return 0;
}
Пример #7
0
/* >>>>>>>>>> EX10_1 <<<<<<<<<< */
void ex10_1 (void)
{ int nya = 2700, i;
  static char   *ctit = "Bar Graphs (BARS)", cbuf[25];

  static float x[9]  = {1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, 8.f, 9.f},
               y[9]  = {0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f},
               y1[9] = {1.f, 1.5f, 2.5f, 1.3f, 2.0f, 1.2f, 0.7f, 1.4f, 1.1f},
               y2[9] = {2.f, 2.7f, 3.5f, 2.1f, 3.2f, 1.9f, 2.0f, 2.3f, 1.8f},
               y3[9] = {4.f, 3.5f, 4.5f, 3.7f, 4.0f, 2.9f, 3.0f, 3.2f, 2.6f};

  setpag ("da4p");
  disini ();
  pagera ();
  hwfont ();
  ticks  (1, "x");
  intax  ();;
  axslen (1600, 700);
  titlin (ctit, 3);

  legini (cbuf, 3, 8);
  leglin (cbuf, "FIRST", 1);
  leglin (cbuf, "SECOND", 2);
  leglin (cbuf, "THIRD", 3);
  legtit (" ");
  shdpat (5L);
  for (i = 1; i <= 3; i++)
  { if (i >  1) labels ("none", "x");
    axspos (300, nya - (i - 1) * 800);
    graf   (0.f, 10.f, 0.f, 1.f, 0.f, 5.f, 0.f, 1.f);

    if (i == 1)
    { bargrp (3, 0.15f);
      color  ("red");
      bars   (x, y, y1, 9);
      color  ("green");
      bars   (x, y, y2, 9);
      color  ("blue");
      bars   (x, y, y3, 9);
      color  ("fore");
      reset  ("bargrp");
    }
    else if (i == 2)
    { height (30);
      labels ("delta", "bars");
      labpos ("center", "bars");
      color  ("red");
      bars   (x, y, y1, 9);
      color  ("green");
      bars   (x, y1, y2, 9);
      color  ("blue");
      bars   (x, y2, y3, 9);
      color  ("fore");
      reset  ("height"); 
    }
    else if (i == 3)
    { labels ("second", "bars");
      labpos ("outside", "bars");
      color  ("red");
      bars   (x, y, y1, 9);
      color  ("fore");
    }

    if (i != 3) legend (cbuf, 7);

    if (i == 3)
    { height (50);
      title  ();
    }

    endgrf ();
  }
  disfin ();
}