DISLIN Examples / Perl

Demonstration of CURVE / Perl

#!/usr/local/bin/perl
use Dislin;

$n = 101;
$pi = 3.1415926;
$f = $pi / 180.;
$step = 360. / ($n - 1);
for ($i = 0; $i < $n; $i++) {
    $xray[$i] = $i * $step;
    $x = $xray[$i] * $f;
    $y1ray[$i] = sin ($x);
    $y2ray[$i] = cos ($x);
}

Dislin::scrmod ('revers');
Dislin::metafl ('xwin');
Dislin::disini ();
Dislin::complx ();
Dislin::pagera ();

Dislin::axspos (450, 1800);
Dislin::axslen (2200, 1200);

Dislin::name   ('X-axis', 'X');
Dislin::name   ('Y-axis', 'Y');

Dislin::labdig (-1, 'X');
Dislin::ticks  (9,  'X');
Dislin::ticks  (10, 'Y');

Dislin::titlin ('Demonstration of CURVE', 1);
Dislin::titlin ('SIN (X), COS (X)', 3);
 
$ic = Dislin::intrgb (0.95, 0.95, 0.95);
Dislin::axsbgd ($ic);

Dislin::graf   (0., 360., 0., 90., -1., 1., -1., 0.5);
Dislin::setrgb (0.7, 0.7, 0.7);
Dislin::grid   (1, 1);
 
Dislin::color  ('fore');
Dislin::height (50); 
Dislin::title  ();

Dislin::color  ('red');
Dislin::curve  (\@xray, \@y1ray, $n);
Dislin::color  ('green');
Dislin::curve  (\@xray, \@y2ray, $n);
Dislin::disfin ();

Polar Plots / Perl

#!/usr/bin/perl
use Dislin;

$n = 300;
$m = 10;
$pi = 3.1415926;
$f = $pi / 180.;
$step = 360. / ($n - 1);
for ($i = 0; $i < $n; $i++) {
    $a = ($i * $step) * $f; 
    $xray[$i] = $i * $step;
    $x = $xray[$i] * $f;
    $y1[$i] = $a;
    $x1[$i] = sin (5 * $a);
}

for ($i = 0; $i < $m; $i++) {
    $x2[$i] = $i + 1;
    $y2[$i] = $i + 1;
}

Dislin::scrmod ('revers');
Dislin::setpag ('da4p');
Dislin::metafl ('cons');
Dislin::disini ();
Dislin::hwfont ();
Dislin::pagera ();

Dislin::titlin ('Polar Plots', 2);
Dislin::ticks  (3, 'Y');
Dislin::axends ('NOENDS', 'X');
Dislin::labdig (-1, 'Y');
Dislin::axslen (1000, 1000);
Dislin::axsorg (1050, 900);

$ic = Dislin::intrgb (0.95, 0.95, 0.95);
Dislin::axsbgd ($ic);

Dislin::grafp  (1.,0., 0.2, 0., 30.);
Dislin::color  ('blue');
Dislin::curve  (\@x1, \@y1, $n);
Dislin::color  ('fore')
Dislin::htitle (50);
Dislin::title  ();
Dislin::endgrf ();

Dislin::labdig (-1, 'X');
Dislin::axsorg (1050, 2250);
Dislin::labtyp ('VERT', 'Y');
Dislin::grafp  (10.,0.,2.,0.,30.);
Dislin::barwth (-5.);
Dislin::polcrv ('FBARS');
Dislin::color  ('blue');
Dislin::curve  (\@x2, \@y2, $m);

Dislin::disfin ();

Symbols / Perl

#!/usr/local/bin/perl
use Dislin;

$ctit = 'Symbols';

Dislin::scrmod ('revers');
Dislin::setpag ('da4p');
Dislin::metafl ('cons');

Dislin::disini ();
Dislin::pagera ();
Dislin::complx ();

Dislin::height (60);
$nl = Dislin::nlmess ($ctit);
Dislin::messag ($ctit, (2100 - $nl)/2, 200);

Dislin::height (50);
Dislin::hsymbl (120);

$ny = 150;
for ($i = 0; $i < 22; $i++) {
    if (($i % 4) == 0) {
        $ny = $ny + 400;
        $nxp = 550;
    }
    else {
	$nxp = $nxp + 350;
    }
    $nl = Dislin::nlnumb ($i, -1);
    Dislin::number ($i, -1, $nxp - $nl/2, $ny + 150);
    Dislin::symbol ($i, $nxp, $ny);
}
Dislin::disfin ();

Interpolation Methods / Perl

#!/usr/local/bin/perl
use Dislin;

$ctit = 'Interpolation Methods';

@xray = (0., 1., 3., 4.5, 6., 8., 9., 11., 12., 12.5, 
	 13., 15., 16., 17., 19., 20.);
@yray = (2., 4., 4.5, 3., 1., 7., 2., 3., 5., 2., 2.5,
	 2., 4., 6., 5.5, 4.);
@cpol = ('SPLINE', 'BARS', 'STEP', 'LINEAR');

Dislin::scrmod ('revers');
Dislin::setpag ('da4p');
Dislin::metafl ('xwin');

Dislin::disini ();
Dislin::pagera ();
Dislin::complx ();

Dislin::incmrk (1);
Dislin::hsymbl (25);
Dislin::titlin ($ctit, 1);
Dislin::axslen (1500, 500);
Dislin::setgrf ('LINE', 'LINE', 'LINE', 'LINE');

$ic = Dislin::intrgb (1.0, 1.0, 0.0);
Dislin::axsbgd ($ic);

$nya = 2700;
for ($i = 0; $i < 4; $i++) {
  Dislin::axspos (350, $nya - $i * 500);
  Dislin::polcrv ($cpol[$i]);
  Dislin::marker (0);
  Dislin::graf   (0., 20., 0., 5., 0., 10., 0., 5.);
  $nx = Dislin::nxposn (1.);
  $ny = Dislin::nyposn (8.);
  Dislin::messag ($cpol[$i], $nx, $ny);
  Dislin.color   ("red");
  Dislin::curve  (\@xray, \@yray, 16);
  Dislin.color   ("fore");

  if ($i == 3) {
    Dislin::height (50);
    Dislin::title ();
  }
  Dislin::endgrf ();
}
Dislin::disfin ();

Bar Graphs / Perl

#!/usr/local/bin/perl
use Dislin;

@x  = (1., 2., 3., 4., 5., 6., 7., 8., 9.);
@y  = (0., 0., 0., 0., 0., 0., 0., 0., 0.);
@y1 = (1., 1.5, 2.5, 1.3, 2.0, 1.2, 0.7, 1.4, 1.1);
@y2 = (2., 2.7, 3.5, 2.1, 3.2, 1.9, 2.0, 2.3, 1.8);
@y3 = (4., 3.5, 4.5, 3.7, 4., 2.9, 3.0, 3.2, 2.6);

$nya = 2700;
$ctit = 'Bar Graphs (BARS)';

Dislin::scrmod ('revers');
Dislin::setpag ('da4p');
Dislin::metafl ('cons');
Dislin::disini ();
Dislin::pagera ();
Dislin::complx ();
Dislin::ticks  (1, 'x');
Dislin::intax  ();
Dislin::axslen (1600, 700);
Dislin::titlin ($ctit, 3);

Dislin::legini ($cbuf, 3, 8);
Dislin::leglin ($cbuf, 'FIRST', 1);
Dislin::leglin ($cbuf, 'SECOND', 2);
Dislin::leglin ($cbuf, 'THIRD', 3);
Dislin::legtit (' ');
Dislin::shdpat (5);

for ($i = 1; $i <= 3; $i++) {
  if ($i > 1) {
    Dislin::labels ('none','x');
  }
  Dislin::axspos (300, $nya-($i-1)*800);
  Dislin::graf (0., 10., 0., 1., 0., 5., 0., 1.);

  if ($i == 1) {
    Dislin::bargrp (3, 0.15);
    Dislin::color  ('red');
    Dislin::bars   (\@x, \@y, \@y1, 9);
    Dislin::color  ('green');
    Dislin::bars   (\@x, \@y, \@y2, 9);
    Dislin::color  ('blue');
    Dislin::bars   (\@x, \@y, \@y3, 9);
    Dislin::color  ('fore');
    Dislin::reset  ('bargrp');
  }
  elsif ($i == 2)
  { Dislin::height (30);
    Dislin::labels ('delta','bars');
    Dislin::labpos ('center','bars');
    Dislin::color  ('red');
    Dislin::bars   (\@x, \@y, \@y1, 9);
    Dislin::color  ('green');
    Dislin::bars   (\@x, \@y1, \@y2, 9);
    Dislin::color  ('blue');
    Dislin::bars   (\@x, \@y2, \@y3, 9);
    Dislin::color  ('fore');
    Dislin::reset  ('height'); 
  }
  elsif ($i == 3)
  { Dislin::labels ('second', 'bars');
    Dislin::labpos ('outside', 'bars');
    Dislin::color  ('red');
    Dislin::bars   (\@x, \@y, \@y1, 9);
    Dislin::color  ('fore');
  }

  if ($i != 3) {
    Dislin::legend ($cbuf,7);
  }

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

  Dislin::endgrf ();
}

Dislin::disfin ();

Pie Charts / Perl

#!/usr/local/bin/perl
use Dislin;

@xray = (1., 2.5, 2., 2.7, 1.8);

$ctit = 'Pie Charts (PIEGRF)';

Dislin::scrmod ('revers');
Dislin::setpag ('da4p');
Dislin::metafl ('cons');
Dislin::disini ();
Dislin::pagera ();
Dislin::complx ();
Dislin::chnpie ('BOTH');

Dislin::axslen (1600, 1000);
Dislin::titlin ($ctit, 2);

Dislin::legini ($cbuf, 5, 8);
Dislin::leglin ($cbuf, 'FIRST',  1);
Dislin::leglin ($cbuf, 'SECOND', 2);
Dislin::leglin ($cbuf, 'THIRD',  3);
Dislin::leglin ($cbuf, 'FOURTH', 4);
Dislin::leglin ($cbuf, 'FIFTH',  5);

# Selecting shading patterns
Dislin::patcyc (1, 7);
Dislin::patcyc (2, 4);
Dislin::patcyc (3, 13);
Dislin::patcyc (4, 3);
Dislin::patcyc (5, 5);

Dislin::axspos (250, 2800);
Dislin::piegrf ($cbuf, 1, \@xray, 5);
Dislin::endgrf ();

Dislin::axspos (250, 1600);
Dislin::labels ('DATA', 'PIE');
Dislin::labpos ('EXTERNAL', 'PIE');
Dislin::piegrf ($cbuf, 1, \@xray, 5);

Dislin::height (50);
Dislin::title  ();
Dislin::disfin ();

3-D Bar Graph / 3-D Pie Chart / Perl

#!/usr/local/bin/perl
use Dislin;

@xray  = (2., 4., 6., 8., 10.);
@y1ray = (0., 0., 0., 0., 0.);
@y2ray = (3.2, 1.5, 2.0, 1.0, 3.0);

@ic1ray  = (50, 150, 100, 200, 175);
@ic2ray  = (50, 150, 100, 200, 175);

Dislin::scrmod ('revers');
Dislin::metafl ('cons');
Dislin::setpag ('da4p');
Dislin::disini ();
Dislin::pagera ();
Dislin::hwfont ();

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

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

Dislin::barwth (0.5);
Dislin::bartyp ('3dvert');
Dislin::labels ('second', 'bars');
Dislin::labpos ('outside', 'bars');
Dislin::labclr (255, 'bars');
Dislin::graf   (0., 12., 0., 2., 0., 5., 0., 1.);
Dislin::title  ();
Dislin::color  ('red');
Dislin::bars   (\@xray, \@y1ray, \@y2ray, 5);
Dislin::endgrf ();

Dislin::shdpat (16);
Dislin::labels ('data', 'pie');
Dislin::labclr (255, 'pie');
Dislin::chnpie ('none');
Dislin::pieclr (\@ic1ray, \@ic2ray, 5);
Dislin::pietyp ('3d');
Dislin::axspos (300, 2700);
Dislin::piegrf ($cbuf, 0, \@y2ray, 5);  
Dislin::disfin ();

3-D Bars / BARS3D / Perl

#!/usr/bin/perl
use Dislin;

$n = 18;

@xray  = (1., 3., 8., 1.5, 9., 6.3, 5.8, 2.3, 8.1, 3.5,
          2.2, 8.7, 9.2, 4.8, 3.4, 6.9, 7.5, 3.8);
@yray  = (5., 8., 3.5, 2., 7., 1.,4.3, 7.2, 6.0, 8.5,
         4.1, 5.0, 7.3, 2.8, 1.6, 8.9, 9.5, 3.2);
@z1ray = (0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
          0., 0., 0., 0., 0., 0., 0., 0.);
@z2ray = (4., 5., 3., 2., 3.5, 4.5, 2., 1.6, 3.8, 4.7,
          2.1, 3.5, 1.9, 4.2, 4.9, 2.8, 3.6, 4.3);
@icray = (30, 30, 30, 30, 30, 30, 100, 100, 100, 100,
         100, 100, 170, 170, 170, 170, 170, 170);

for ($i = 0; $i < $n; $i++) {
    $xwray[$i] = 0.5;
    $ywray[$i] = 0.5;
}

Dislin::scrmod ('revers');
Dislin::metafl ('xwin');
Dislin::setpag ('da4p');
Dislin::disini ();
Dislin::hwfont ();
Dislin::pagera ();

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

Dislin::name   ('X-axis', 'X');
Dislin::name   ('Y-axis', 'Y');
Dislin::name   ('Z-axis', 'Z');

Dislin::titlin ('3-D Bars / BARS3D',3);
Dislin::labl3d ('hori');

Dislin::graf3d (0.,10.,0.,2.,0.,10.,0.,2.,0.,5.,0.,1.);
Dislin::grid3d (1,1, 'bottom');

Dislin::bars3d (\@xray, \@yray, \@z1ray, \@z2ray, \@xwray, 
                \@ywray, \@icray, $n);

Dislin::legini ($cbuf, 3, 20);
Dislin::legtit (' ');
Dislin::legpos (1350, 1150);
Dislin::leglin ($cbuf, 'First', 1);
Dislin::leglin ($cbuf, 'Second', 2);
Dislin::leglin ($cbuf, 'Third', 3);
Dislin::legend ($cbuf, 3);

Dislin::height (50);
Dislin::title ();
Dislin::disfin ();

Shading Patterns / Perl

#!/usr/local/bin/perl
use Dislin;

@ix  = (0, 300, 300,   0);
@iy  = (0,   0, 400, 400);
@ixp = (0, 0, 0, 0);
@iyp = (0, 0, 0, 0);

$ctit = "Shading patterns (AREAF)";

Dislin::scrmod ('revers');
Dislin::metafl ("cons");
Dislin::disini ();
Dislin::setvlt ("small");
Dislin::pagera ();
Dislin::complx ();

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

$nx0 = 335;
$ny0 = 350;

$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;
        Dislin::shdpat ($ii);
        $iclr = $iclr + 1;
        Dislin::setclr ($iclr);
        for ($k = 0; $k < 4; $k++) {
	    $ixp[$k] = $ix[$k] + $nx;
	    $iyp[$k] = $iy[$k] + $ny;
        }

        Dislin::areaf (\@ixp, \@iyp, 4);
        $nl = Dislin::nlnumb ($ii, -1);
        $nx = $nx + (300 - $nl) / 2;
        Dislin::color ("foreground");
        Dislin::number ($ii, -1, $nx, $ny + 460); 
    }
}
Dislin::disfin ();

3-D Colour Plot / Perl

#!/usr/local/bin/perl
use Dislin;

$ctit1 = '3-D Colour Plot of the Function';
$ctit2 = 'F(X,Y) = 2 * SIN(X) * SIN (Y)';

$n = 50;
$m = 50;

$fpi  = 3.1415927 / 180.;
$stepx = 360. / ($n - 1);
$stepy = 360. / ($m - 1);

for ($i = 0; $i < $n; $i++) {
    $x[$i] = $i * $stepx;
    for ($j = 0; $j < $m; $j++) {
	$y[$j] = $j * $stepy;
        $zmat[$i][$j] = 2 * sin($x[$i] * $fpi) * sin($y[$j] * $fpi);
    }
}

Dislin::scrmod ('revers');
Dislin::metafl ('cons');
Dislin::disini ();
Dislin::pagera ();
Dislin::complx ();

Dislin::titlin ($ctit1, 2);
Dislin::titlin ($ctit2, 4);

Dislin::name   ('X-axis', 'X');
Dislin::name   ('Y-axis', 'Y');
Dislin::name   ('Z-axis', 'Z');

Dislin::intax  ();
Dislin::autres ($n, $m);
Dislin::axspos (300, 1850);
Dislin::ax3len (2200, 1400, 1400);

Dislin::graf3  (0., 360., 0., 90., 0., 360., 0., 90.,
		 -2., 2., -2., 1.);
Dislin::crvmat (\@zmat, $n, $m, 1, 1);
Dislin::height (50);
Dislin::title  ();
Dislin::disfin ();

Surface Plot / Perl

#!/usr/local/bin/perl
use Dislin;

$ctit1 = 'Surface Plot of the Function';
$ctit2 = 'F(X,Y) = 2 * SIN(X) * SIN (Y)';

$n = 60;
$m = 50;

$fpi  = 3.1415927 / 180.;
$stepx = 360. / ($n - 1);
$stepy = 360. / ($m - 1);

for ($i = 0; $i < $n; $i++) {
    $x[$i] = $i * $stepx;
    for ($j = 0; $j < $m; $j++) {
	$y[$j] = $j * $stepy;
        $zmat[$i][$j] = 2 * sin($x[$i] * $fpi) * sin($y[$j] * $fpi);
    }
}

Dislin::scrmod ('revers');
Dislin::metafl ('cons');
Dislin::setpag ('da4p');
Dislin::disini ();
Dislin::pagera ();
Dislin::complx ();

Dislin::titlin ($ctit1, 2);
Dislin::titlin ($ctit2, 4);

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

Dislin::name   ('X-axis', 'X');
Dislin::name   ('Y-axis', 'Y');
Dislin::name   ('Z-axis', 'Z');

Dislin::view3d (-5., -5., 4., 'ABS');
Dislin::graf3d  (0., 360., 0., 90., 0., 360., 0., 90.,
		 -3., 3., -3., 1.);
Dislin::height (50);
Dislin::title  ();

Dislin::color  ('green');
Dislin::surmat (\@zmat, $n, $m, 1, 1);
Dislin::disfin ();


Shaded Surface Plot / Perl

#!/usr/local/bin/perl
use Dislin;

$ctit1 = 'Shaded Surface Plot';
$ctit2 = 'F(X,Y) = 2 * SIN(X) * SIN (Y)';

$n = 50;
$m = 50;

$fpi  = 3.1415927 / 180.;
$stepx = 360. / ($n - 1);
$stepy = 360. / ($m - 1);

for ($i = 0; $i < $n; $i++) {
    $x[$i] = $i * $stepx;
    for ($j = 0; $j < $m; $j++) {
	$y[$j] = $j * $stepy;
        $zmat[$i][$j] = 2 * sin($x[$i] * $fpi) * sin($y[$j] * $fpi);
    }
}

Dislin::scrmod ('revers');
Dislin::metafl ('cons');
Dislin::setpag ('da4p');
Dislin::disini ();
Dislin::pagera ();
Dislin::complx ();

Dislin::titlin ($ctit1, 2);
Dislin::titlin ($ctit2, 4);

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

Dislin::name   ('X-axis', 'X');
Dislin::name   ('Y-axis', 'Y');
Dislin::name   ('Z-axis', 'Z');

Dislin::view3d (-5., -5., 4., 'ABS');
Dislin::graf3d  (0., 360., 0., 90., 0., 360., 0., 90.,
		 -3., 3., -3., 1.);
Dislin::height (50);
Dislin::title  ();

Dislin::shdmod ('smooth', 'surface');
Dislin::surshd (\@x, $n, \@y, $m, \@zmat);
Dislin::disfin ();


Contour Plot / Perl

#!/usr/local/bin/perl
use Dislin;

$ctit1 = 'Contour Plot of the Function';
$ctit2 = 'F(X,Y) = 2 * SIN(X) * SIN (Y)';

$n = 60;
$m = 50;

$fpi  = 3.1415927 / 180.;
$stepx = 360. / ($n - 1);
$stepy = 360. / ($m - 1);

for ($i = 0; $i < $n; $i++) {
    $xray[$i] = $i * $stepx;
    for ($j = 0; $j < $m; $j++) {
	$yray[$j] = $j * $stepy;
        $zmat[$i][$j] = 2 * sin($xray[$i] * $fpi) * sin($yray[$j] * $fpi);
    }
}

Dislin::scrmod ('revers');
Dislin::metafl ('cons');
Dislin::setpag ('da4p');
Dislin::disini ();
Dislin::pagera ();
Dislin::complx ();

Dislin::titlin ($ctit1, 2);
Dislin::titlin ($ctit2, 4);

Dislin::axspos (450, 2670);

Dislin::name   ('X-axis', 'X');
Dislin::name   ('Y-axis', 'Y');

Dislin::graf  (0., 360., 0., 90., 0., 360., 0., 90.);

Dislin::height (30);
for ($i = 0; $i < 9; $i++) {
    $zlev = -2. + $i * 0.5; 
    if ($i == 4) {
	Dislin::labels ('NONE', 'CONTUR');
    }
    else {
      Dislin::labels ('FLOAT', 'CONTUR');
    }
    Dislin::setclr (($i+1) * 28);
    Dislin::contur (\@xray, $n, \@yray, $m, \@zmat, $zlev);
}

Dislin::color  ('FORE');
Dislin::height (50);
Dislin::title  ();
Dislin::disfin ();

Shaded Contour Plot / Perl

#!/usr/local/bin/perl
use Dislin;

$ctit1 = 'Shaded Contour Plot';
$ctit2 = 'F(X,Y) = (X[2$ - 1)[2$ + (Y[2$ - 1)[2$';

$n = 50;
$m = 80;

$stepx = 1.6 / ($n - 1);
$stepy = 1.6 / ($m - 1);

for ($i = 0; $i < $n; $i++) {
  $xray[$i] = $i * $stepx;
  $x = $xray[$i] * $xray[$i] - 1.;
  $x2 = $x * $x;
  for ($j = 0; $j < $m; $j++) {
    $yray[$j] = $j * $stepy;
    $y = $yray[$j] * $yray[$j] - 1.;
    $y2 = $y * $y;
    $zmat[$i][$j] = $x2 + $y2;
  }
}

Dislin::scrmod ('revers');
Dislin::metafl ('cons');
Dislin::setpag ('da4p');

Dislin::disini ();
Dislin::pagera ();
Dislin::complx ();
Dislin::mixalf ();

Dislin::titlin ($ctit1, 1);
Dislin::titlin ($ctit2, 3);

Dislin::name   ('X-axis', 'X');
Dislin::name   ('Y-axis', 'Y');

Dislin::axspos (450, 2670);
Dislin::shdmod ('poly', 'contur');
Dislin::graf   (0., 1.6, 0., 0.2, 0., 1.6, 0., 0.2);

for ($i = 0; $i < 12; $i++) {
  $zlev[11-$i] = 0.1 + $i * 0.1;
}

Dislin::conshd (\@xray, $n, \@yray, $m, \@zmat, \@zlev, 12);

Dislin::height (50);
Dislin::title  ();
Dislin::disfin ();

Shaded Surface / Contour Plot / Perl

#!/usr/local/bin/perl
use Dislin;

$ctit1 = 'Shaded Surface / Contour Plot';
$ctit2 = 'F(X,Y) = 2 * SIN(X) * SIN (Y)';

$n = 50;
$m = 50;
$nlev = 20;

$fpi  = 3.1415927 / 180.;
$stepx = 360. / ($n - 1);
$stepy = 360. / ($m - 1);

for ($i = 0; $i < $n; $i++) {
    $x[$i] = $i * $stepx;
    for ($j = 0; $j < $m; $j++) {
	$y[$j] = $j * $stepy;
        $zmat[$i][$j] = 2 * sin($x[$i] * $fpi) * sin($y[$j] * $fpi);
    }
}

Dislin::scrmod ('revers');
Dislin::metafl ('cons');
Dislin::setpag ('da4p');
Dislin::disini ();
Dislin::pagera ();
Dislin::hwfont ();

Dislin::titlin ($ctit1, 2);
Dislin::titlin ($ctit2, 4);

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

Dislin::name   ('X-axis', 'X');
Dislin::name   ('Y-axis', 'Y');
Dislin::name   ('Z-axis', 'Z');

Dislin::graf3d  (0., 360., 0., 90., 0., 360., 0., 90.,
		 -2., 2., -2., 1.);
Dislin::height (50);
Dislin::title  ();

Dislin::grfini (-1., -1., -1., 1., -1., -1., 1., 1., -1.);
Dislin::nograf ();
Dislin::graf (0., 360., 0., 90., 0., 360., 0., 90.);
  
$step = 4. / $nlev;
for ($i = 0; $i < $nlev; $i++) {
   $zlev[$i] = -2.0 + $i * $step; 
}
Dislin::conshd (\@x, $n, \@y, $n, \@zmat, \@zlev, $nlev);

Dislin::box2d ();
Dislin::reset ('nograf');
Dislin::grffin ();

Dislin::shdmod ('smooth', 'surface');
Dislin::surshd (\@x, $n, \@y, $m, \@zmat);
Dislin::disfin ();

Spheres and Tubes / Perl

#!/usr/local/bin/perl
use Dislin;

@x = (10., 20., 10., 20., 5., 15., 25., 5., 15., 25., 
       5., 15., 25., 10., 20., 10., 20.);
@y = (10., 10., 20., 20., 5., 5., 5., 15., 15., 15.,
      25., 25., 25., 10., 10., 20., 20.);
@z = (5., 5., 5., 5., 15., 15., 15., 15., 15., 15.,
     15., 15., 15., 25., 25., 25., 25.);  
@idx = (1, 2, 1, 3, 3, 4, 2, 4, 5, 6, 6, 7, 8, 9, 9, 10,
       11, 12, 12, 13,  5, 8, 8, 11, 6, 9, 9, 12, 7, 10,
       10, 13,  14, 15, 16, 17, 14, 16, 15, 17,
        1, 5, 2, 7, 3, 11, 4, 13, 5, 14, 7, 15, 11, 16, 13, 17);

Dislin::setpag ('da4p');
Dislin::scrmod ('revers');
Dislin::metafl ('cons');
Dislin::disini ();
Dislin::pagera ();
Dislin::hwfont ();
Dislin::light ('on');
Dislin::matop3 (0.02, 0.02, 0.02, 'specular');

Dislin::clip3d ('none');
Dislin::axspos (0, 2500);
Dislin::axslen (2100, 2100);

Dislin::htitle (50);
Dislin::titlin ('Spheres and Tubes', 4);

Dislin::name ('X-axis', 'x');
Dislin::name ('Y-axis', 'y');
Dislin::name ('Z-axis', 'z');

Dislin::labdig (-1, 'xyz');
Dislin::labl3d ('hori');
Dislin::graf3d (0., 30., 0., 5., 0., 30., 0., 5., 0., 30., 0., 5.);
Dislin::title ();

Dislin::shdmod ('smooth', 'surface');

$iret = Dislin::zbfini();
Dislin::matop3 (1.0, 0.0, 0.0, 'diffuse');
for ($i = 0; $i < 17; $i++) {
  Dislin::sphe3d ($x[$i], $y[$i], $z[$i], 2.0, 50, 25);
}

Dislin::matop3 (0.0, 1.0, 0.0, 'diffuse');
for ($i = 0; $i < 56; $i += 2) {
  $j1 = $idx[$i] - 1;
  $j2 = $idx[$i+1] - 1;
  Dislin::tube3d ($x[$j1], $y[$j1], $z[$j1], 
                  $x[$j2], $y[$j2], $z[$j2], 0.5, 5, 5); 
}

Dislin::zbffin ();
Dislin::disfin ();

Some Solids / Perl

#!/usr/local/bin/perl
use Dislin;

Dislin::setpag ('da4p');
Dislin::scrmod ('revers');
Dislin::metafl ('cons');
Dislin::disini ();
Dislin::pagera ();
Dislin::hwfont ();
Dislin::light ('on');
Dislin::litop3(1,0.5,0.5,0.5,'ambient');

Dislin::clip3d ('none');
Dislin::axspos (0, 2500);
Dislin::axslen (2100, 2100);

Dislin::htitle (60);
Dislin::titlin ('Some Solids', 4);

Dislin::nograf ();
Dislin::graf3d (-5., 5., -5., 2., -5., 5., -5., 2., -5., 5., -5., 2.);
Dislin::title ();

Dislin::shdmod ('smooth', 'surface'); 
$iret = Dislin::zbfini();
Dislin::matop3 (1.0, 0.5, 0.0, 'diffuse');
Dislin::tube3d (-3., -3., 8.0, 2., 3., 5.5, 1., 40, 20); 

Dislin::rot3d (-60., 0., 0.); 
Dislin::matop3 (1.0, 0.0, 1.0, 'diffuse');
Dislin::setfce ('bottom');
Dislin::matop3 (1.0, 0.0, 0.0, 'diffuse');
Dislin::cone3d (-3., -3., 3.5, 2., 3., 3., 40, 20);
Dislin::setfce ('top');

Dislin::rot3d (0., 0., 0.); 
Dislin::matop3 (0.0, 1.0, 1.0, 'diffuse');
Dislin::plat3d (4., 4., 3., 3., 'icos');

Dislin::rot3d (0., 0., 0.); 
Dislin::matop3 (1.0, 1.0, 0.0, 'diffuse');
Dislin::sphe3d (0., 0., 0., 3., 40, 20);

Dislin::rot3d (0., 0., -20.); 
Dislin::matop3 (0.0, 0.0, 1.0, 'diffuse');
Dislin::quad3d (-4., -4., -3., 3., 3., 3.);

Dislin::rot3d (0., 0., 30.); 
Dislin::matop3 (1.0, 0.3, 0.3, 'diffuse');
Dislin::pyra3d (-2., -5., -10., 3., 5., 5., 4);

Dislin::rot3d (0., 0., 0.); 
Dislin::matop3 (1.0, 0.0, 0.0, 'diffuse');
Dislin::torus3d (7., -3., -2., 1.5, 3.5, 1.5, 0., 360., 40, 20);
Dislin::rot3d (0., 90., 0.); 

Dislin::matop3 (0.0, 1.0, 0.0, 'diffuse');
Dislin::torus3d (7., -5., -2., 1.5, 3.5, 1.5, 0., 360., 40, 20);
Dislin::zbffin ();
Dislin::disfin ();

Map Plot / Perl

#!/usr/local/bin/perl
use Dislin;

Dislin::scrmod ('revers');
Dislin::metafl ('xwin');
Dislin::disini ();
Dislin::pagera ();
Dislin::complx ();

Dislin::axspos (400, 1850);
Dislin::axslen (2400, 1400);

Dislin::name   ('Longitude', 'X');
Dislin::name   ('Latitude',  'Y');
Dislin::titlin ('World Coastlines and Lakes', 3);

Dislin::labels ('MAP', 'XY');
Dislin::digits (-1, 'XY');
Dislin::grafmp (-180., 180., -180., 90., -90., 90., -90., 30.);

Dislin::gridmp (1, 1);
Dislin::color  ('green');
Dislin::world  ();

Dislin::color  ('foreground');
Dislin::height (50);
Dislin::title  ();
Dislin::disfin ();

TeX Instructions for Mathematical Formulas / Perl

#!/usr/local/bin/perl
use Dislin;
  
Dislin::scrmod ('revers');
Dislin::metafl ('cons')
Dislin::setpag ('da4p');
Dislin::disini ();
Dislin::pagera ();
Dislin::complx ();
Dislin::height (40);

$cstr = 'TeX Instructions for Mathematical Formulas';
$nl = Dislin::nlmess ($cstr);
Dislin::messag ($cstr, (2100 - $nl)/2, 100);
  
Dislin::texmod ('on');
Dislin::messag ('$\\frac{1}{x+y}$', 150, 400);
Dislin::messag ('$\\frac{a^2 - b^2}{a+b} = a - b$', 1200, 400);
  
Dislin::messag ('$r = \\sqrt{x^2 + y^2}', 150, 700);
Dislin::messag ('$\\cos \\phi = \\frac{x}{\\sqrt{x^2 + y^2}}$', 1200, 700);

Dislin::messag ('$\\Gamma(x) = \\int_0^\\infty e^{-t}t^{x-1}dt$', 150, 1000);
Dislin::messag ('$\\lim_{x \\to \\infty} (1 + \\frac{1}{x})^x = e$', 
                1200, 1000);

Dislin::messag ('$\\mu = \\sum_{i=1}^n x_i p_i$', 150, 1300);
Dislin::messag ('$\\mu = \\int_{-\\infty}^ \\infty x f(x) dx$', 1200, 1300);

Dislin::messag ('$\\overline{x} = \\frac{1}{n} \\sum_{i=1}^n x_i$', 150, 1600);
Dislin::messag ('$s^2 = \\frac{1}{n-1} \\sum_{i=1}^n (x_i - \\overline{x})^2$',
                1200, 1600);

Dislin::messag ('$\\sqrt[n]{\\frac{x^n - y^n}{1 + u^{2n}}}$', 150, 1900);  
Dislin::messag ('$\\sqrt[3]{-q + \\sqrt{q^2 + p^3}}$', 1200, 1900);

Dislin::messag ('$\\int \\frac{dx}{1+x^2} = \\arctan x + C$', 150, 2200);
Dislin::messag ('$\\int \\frac{dx}{\\sqrt{1+x^2}} = {\\rm arsinh} x + C$',
                1200, 2200);

Dislin::messag ('$\\overline{P_1P_2} = \\sqrt{(x_2-x_1)^2 + (y_2-y_1)^2}$',
                150,2500);
Dislin::messag ('$x = \\frac{x_1 + \\lambda x_2}{1 + \\lambda}$', 1200, 2500);
Dislin::disfin ();

Web Example/Perl

#!/usr/bin/perl
use Dislin;

print "Content-type: image/png\n\n";

$ctit1 = 'Surface Plot of the Function';
$ctit2 = 'F(X,Y) = 2 * SIN(X) * SIN (Y)';

$n = 60;
$m = 50;

$fpi  = 3.1415927 / 180.;
$stepx = 360. / ($n - 1);
$stepy = 360. / ($m - 1);

for ($i = 0; $i < $n; $i++) {
    $x[$i] = $i * $stepx;
    for ($j = 0; $j < $m; $j++) {
        $y[$j] = $j * $stepy;
        $zmat[$i][$j] = 2 * sin($x[$i] * $fpi) * sin($y[$j] * $fpi);
    }
}

Dislin::scrmod ('revers');
Dislin::metafl ('virt');      # defines a virtual image in memory 
Dislin::setpag ('da4p');
Dislin::disini ();
Dislin::unit   (0);
Dislin::pagera ();

Dislin::titlin ($ctit1, 2);
Dislin::titlin ($ctit2, 4);

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

Dislin::name   ('X-axis', 'X');
Dislin::name   ('Y-axis', 'Y');
Dislin::name   ('Z-axis', 'Z');

Dislin::view3d (-5., -5., 4., 'ABS');
Dislin::graf3d  (0., 360., 0., 90., 0., 360., 0., 90.,
                 -3., 3., -3., 1.);
Dislin::height (50);

Dislin::titlin ($ctit2, 4);

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

Dislin::name   ('X-axis', 'X');
Dislin::name   ('Y-axis', 'Y');
Dislin::name   ('Z-axis', 'Z');

Dislin::view3d (-5., -5., 4., 'ABS');
Dislin::graf3d  (0., 360., 0., 90., 0., 360., 0., 90.,
                 -3., 3., -3., 1.);
Dislin::height (50);
Dislin::title  ();

Dislin::color  ('green');
Dislin::surmat (\@zmat, $n, $m, 1, 1);

$n=Dislin::rbfpng ($cbuf, 0);  # request size of PNG file 
Dislin::rbfpng ($cbuf, $n);    # copy image as PNG file to variable $cbuf
Dislin::disfin ();

print $cbuf;
 
loading content