DISLIN Examples / Free Pascal
Demonstration of CURVE / Free Pascal
program dislin_curve;
uses
dislin;
const
n = 100;
var
i, ic : int32;
fpi, step, x : double;
xray, y1ray, y2ray : array[0..n-1] of double;
begin
fpi := 3.1415926 / 180.0;
step := 360.0 / (n - 1);
for i:= 0 to n - 1 do
begin
xray[i] := i * step;
x := xray[i] * fpi;
y1ray[i] := sin (x);
y2ray[i] := cos (x);
end;
metafl ('cons');
scrmod ('reverse');
disini ();
pagera ();
complx ();
axspos (450, 1800);
axslen (2200, 1200);
name ('X-axis', 'X');
name ('Y-axis', 'Y');
labdig (-1, 'x');
ticks (9, 'x');
ticks (10, 'y');
titlin ('Demonstration of CURVE', 1);
titlin ('SIN(X), COS(X)', 3);
ic := intrgb (0.95, 0.95, 0.95);
axsbgd (ic);
graf (0.0, 360.0, 0.0, 90.0, -1.0, 1.0, -1.0, 0.5);
setrgb (0.7, 0.7, 0.7);
grid (1, 1);
color ('fore');
height (50);
title ();
color ('red');
curve (@xray[0], @y1ray[0], n);
color ('green');
curve (@xray[0], @y2ray[0], n);
disfin ();
end.
}
Polar Plots / Free Pascal
program dislin_polar;
uses
dislin;
const
n = 300;
m = 10;
var
i, ic : int32;
f, step, a : double;
xray, yray : array[0..n-1] of double;
x2, y2 : array[0..m-1] of double;
begin
f := 3.1415926 / 180.0;
step := 360.0 / (n - 1);
for i:= 0 to n - 1 do
begin
a := i * step * f;
yray[i] := a;
xray[i] := sin (5 * a);
end;
for i:= 0 to m - 1 do
begin
x2[i] := i + 1;
y2[i] := i + 1;
end;
setpag ('da4p');
metafl ('cons');
scrmod ('revers');
disini ();
pagera ();
hwfont ();
axspos (450,1800);
titlin ('Polar Plots', 2);
ticks (3, 'Y');
axends ('NOENDS', 'X');
labdig (-1, 'Y');
axslen (1000, 1000);
axsorg (1050, 900);
ic := intrgb (0.95, 0.95, 0.95);
axsbgd (ic);
grafp (1.0, 0.0, 0.2, 0.0, 30.0);
color ('blue');
curve (@xray[0], @yray[0], n);
color ('fore');
htitle (50);
title ();
endgrf ();
labdig (-1, 'X');
axsorg (1050, 2250);
labtyp ('VERT', 'Y');
grafp (10.0, 0.0, 2.0, 0.0, 30.0);
barwth (-5.0);
polcrv ('FBARS');
color ('blue');
curve (@x2[0], @y2[0], m);
disfin ();
end.
Symbols / Free Pascal
program dislin_symbols;
uses
dislin;
var
nl, ny, i, nxp : int32;
ctit, cstr : AnsiString;
begin
ctit := 'Symbols';
SetLength (cstr, 80);
scrmod ('revers');
setpag ('da4p');
metafl ('cons');
disini ();
pagera ();
complx ();
height (60);
nl := nlmess (ctit);
nxp := (2100 - nl) div 2;
messag (ctit, nxp, 200);
height (50);
hsymbl (120);
ny := 150;
for i := 0 to 23 do
begin
if (i mod 4) = 0 then
begin
ny := ny + 400;
nxp := 550;
end
else
begin
nxp := nxp + 350;
end;
nl := intcha (i, cstr);
nl := nlmess (cstr) div 2;
messag (cstr, nxp - nl, ny + 150);
symbol (i, nxp, ny);
end;
disfin ();
end.
Interpolation Methods / Free Pascal
program dislin_intpol;
uses
dislin;
const
n = 16;
var
nya : int32 = 2700;
i, nx, ny, ic : int32;
x : array[0..n-1] of double = (0.0, 1.0, 3.0, 4.5, 6.0, 8.0, 9.0,
11.0, 12.0, 12.5, 13.0, 15.0, 16.0, 17.0, 19.0, 20.0);
y : array[0..n-1] of double = (2.0, 4.0, 4.5, 3.0, 1.0, 7.0, 2.0,
3.0, 5.0, 2.0, 2.5, 2.0, 4.0, 6.0, 5.5, 4.0);
cpol : array[0..5] of ansistring = ('SPLINE', 'STEM', 'BARS', 'STAIRS',
'STEP', 'LINEAR');
ctit : ansistring = 'Interpolation Methods';
begin
setpag ('da4p');
metafl ('cons');
scrmod ('revers');
disini ();
complx ();
pagera ();
incmrk (1);
hsymbl (25);
titlin (ctit, 2);
axslen (1500, 350);
setgrf ('line', 'line', 'line', 'line');
ic := intrgb (1.0, 1.0, 0.0);
axsbgd (ic);
for i := 0 to 5 do
begin
axspos (350, nya - i * 350);
polcrv (cpol[i]);
marker(16);
graf (0.0, 20.0, 0.0, 5.0, 0.0, 10.0, 0.0, 5.0);
nx := nxposn (1.0);
ny := nyposn (8.0);
messag (cpol[i], nx, ny);
color ('red');
curve (x, y, 16);
color ('fore');
if i = 5 then
begin
height (50);
title ();
end;
endgrf ();
end;
disfin ();
end.
Bar Graphs / Free Pascal
program dislin_bars;
uses
dislin;
var
nya, i : int32;
ctit : ansistring = 'Bar Graphs (BARS)';
cbuf : ansistring;
x : array[0..8] of double = (1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0);
y : array[0..8] of double = (0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
y1 : array[0..8] of double = (1.0, 1.5, 2.5, 1.3, 2.0, 1.2, 0.7, 1.4, 1.1);
y2 : array[0..8] of double = (2.0, 2.7, 3.5, 2.1, 3.2, 1.9, 2.0, 2.3, 1.8);
y3 : array[0..8] of double = (4.0, 3.5, 4.5, 3.7, 4.0, 2.9, 3.0, 3.2, 2.6);
begin
nya := 2700;
SetLength (cbuf, 25);
scrmod ('revers');
setpag ('da4p');
metafl ('cons');
disini ();
pagera ();
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 (5);
for i := 1 to 3 do
begin
if i > 1 then
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 then
begin
bargrp (3, 0.15);
color ('red');
bars (@x[0], @y[0], @y1[0], 9);
color ('green');
bars (@x[0], @y[0], @y2[0], 9);
color ('blue');
bars (@x[0], @y[0], @y3[0], 9);
color ('fore');
reset ('bargrp');
end
else if i = 2 then
begin
height (30);
labels ('delta', 'bars');
labpos ('center', 'bars');
color ('red');
bars (@x[0], @y[0], @y1[0], 9);
color ('green');
bars (@x[0], @y1[0], @y2[0], 9);
color ('blue');
bars (@x[0], @y2[0], @y3[0], 9);
color ('fore');
reset ('height');
end
else if i = 3 then
begin
labels ('second', 'bars');
labpos ('outside', 'bars');
color ('red');
bars (@x[0], @y[0], @y1[0], 9);
color ('fore');
end;
if i <> 3 then
legend (cbuf, 7);
if i = 3 then
begin
height (50);
title ();
end;
endgrf ();
end;
disfin ();
end.
Pie Charts / Free Pascal
program dislin_piegrf;
uses
dislin;
var
nya : int32 = 2800;
i : int32;
ctit : ansistring = 'Pie Charts (PIEGRF)';
cbuf : ansistring;
xray : array[0..4] of double = (1.0, 2.5, 2.0, 2.7, 1.8);
begin
SetLength (cbuf, 41);
scrmod ('revers');
setpag ('da4p');
metafl ('cons');
disini ();
pagera ();
complx ();
axslen (1600, 1000);
titlin (ctit, 2);
chnpie ('both');
legini (cbuf, 5, 8);
leglin (cbuf, 'FIRST', 1);
leglin (cbuf, 'SECOND', 2);
leglin (cbuf, 'THIRD', 3);
leglin (cbuf, 'FOURTH', 4);
leglin (cbuf, 'FIFTH', 5);
patcyc (1, 7);
patcyc (2, 4);
patcyc (3, 13);
patcyc (4, 3);
patcyc (5, 5);
for i := 0 to 1 do
begin
axspos (250, nya - i * 1200);
if i = 1 then
begin
labels ('data', 'pie');
labpos ('external', 'pie');
end;
piegrf (cbuf, 1, xray, 5);
if i = 1 then
begin
height (50);
title ();
end;
endgrf ();
end;
disfin ();
end.
3-D Bar Graph / 3-D Pie Chart / Free Pascal
program dislin_pie3d;
uses
dislin;
var
cbuf : ansistring;
xray : array[0..4] of double = (2.0, 4.0, 6.0, 8.0, 10.0);
y1ray : array[0..4] of double = (0.0, 0.0, 0.0, 0.0, 0.0);
y2ray : array[0..4] of double = (3.2, 1.5, 2.0, 1.0, 3.0);
ic1ray : array[0..4] of int32 = (50, 150, 100, 200, 175);
ic2ray : array[0..4] of int32 = (50, 150, 100, 200, 175);
begin
SetLength (cbuf, 80);
scrmod ('revers');
setpag ('da4p');
metafl ('cons');
disini ();
pagera ();
hwfont ();
titlin ('3-D Bar Graph / 3-D Pie Chart', 2);
htitle (40);
shdpat (16);
axslen (1500, 1000);
axspos (300, 1400);
barwth (0.5);
bartyp ('3dvert');
labels ('second', 'bars');
labpos ('outside', 'bars');
labclr (255, 'bars');
graf (0.0, 12.0, 0.0, 2.0, 0.0, 5.0, 0.0, 1.0);
title ();
color ('red');
bars (@xray[0], @y1ray[0], @y2ray[0], 5);
endgrf ();
shdpat (16);
labels ('data', 'pie');
labclr (255, 'pie');
chnpie ('none');
pieclr (@ic1ray[0], @ic2ray[0], 5);
pietyp ('3d');
axspos (300, 2700);
piegrf (cbuf, 0, @y2ray[0], 5);
disfin ();
end.
3-D Bars / BARS3D / Free Pascal
program dislin_bars3d;
uses
dislin;
const
n = 18;
var
i : int32;
cbuf : ansistring;
xray : array[0..n-1] of double = (1.0, 3.0, 8.0, 1.5, 9.0, 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 : array[0..n-1] of double = (5.0, 8.0, 3.5, 2.0, 7.0, 1.0, 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 : array[0..n-1] of double = (0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
z2ray : array[0..n-1] of double = (4.0, 5.0, 3.0, 2.0, 3.5, 4.5, 2.0,
1.6, 3.8, 4.7, 2.1, 3.5, 1.9, 4.2, 4.9, 2.8, 3.6, 4.3);
icray : array[0..n-1] of int32 = (30, 30, 30, 30, 30, 30, 100, 100,
100, 100, 100, 100, 170, 170, 170, 170, 170, 170);
xwray : array[0..n-1] of double;
ywray : array[0..n-1] of double;
begin
SetLength (cbuf, 80);
for i := 0 to n - 1 do
begin
xwray[i] := 0.5;
ywray[i] := 0.5;
end;
scrmod ('revers');
setpag ('da4p');
metafl ('cons');
disini ();
pagera ();
hwfont ();
axspos (200, 2600);
axslen (1800, 1800);
name ('X-axis', 'x');
name ('Y-axis', 'y');
name ('Z-axis', 'z');
titlin ('3-D Bars / BARS3D', 3);
labl3d ('hori');
graf3d (0.0, 10.0, 0.0, 2.0, 0.0, 10.0, 0.0, 2.0,
0.0, 5.0, 0.0, 1.0);
grid3d (1, 1, 'bottom');
bars3d (@xray[0], @yray[0], @z1ray[0], @z2ray[0],
@xwray[0], @ywray[0], @icray[0], n);
legini (cbuf, 3, 20);
legtit (' ');
legpos (1350, 1150);
leglin (cbuf, 'First', 1);
leglin (cbuf, 'Second', 2);
leglin (cbuf, 'Third', 3);
legend (cbuf, 3);
height (50);
title ();
disfin ();
end.
Shading Patterns / Free Pascal
program dislin_patterns;
uses
dislin;
var
ctit : ansistring = 'Shading Patterns (AREAF)';
cstr : ansistring;
nx, nl : int32;
ny, i, j : int32;
ii, k, iclr : int32;
nx0 : int32 = 335;
ny0 : int32 = 350;
ixp : array[0..3] of int32;
iyp : array[0..3] of int32;
ix : array[0..3] of int32 = (0, 300, 300, 0);
iy : array[0..3] of int32 = (0, 0, 400, 400);
begin
SetLength (cstr, 80);
scrmod ('revers');
metafl ('cons');
disini ();
pagera ();
complx ();
setvlt ('small');
height (50);
nl := nlmess (ctit);
nx := (2970 - nl) div 2;
messag (ctit, nx, 200);
iclr := 0;
for i := 0 to 2 do
begin
ny := ny0 + i * 600;
for j := 0 to 5 do
begin
nx := nx0 + j * 400;
ii := i * 6 + j;
nl := intcha (ii, cstr);
shdpat (ii);
iclr := iclr mod 8;
iclr := iclr + 1;
setclr (iclr);
for k := 0 to 3 do
begin
ixp[k] := ix[k] + nx;
iyp[k] := iy[k] + ny;
end;
areaf (@ixp[0], @iyp[0], 4);
nl := nlmess (cstr);
nx := nx + (300 - nl) div 2;
messag (cstr, nx, ny + 460);
end;
end;
disfin ();
end.
3-D Colour Plot / Free Pascal
program dislin_color3d;
uses
dislin;
const
n = 100;
m = 100;
var
i, j : int32;
fpi, stepx, stepy, x, y : double;
zmat : array[0..n*m-1] of double;
begin
stepx := 360.0 / (n - 1);
stepy := 360.0 / (m - 1);
fpi := 3.1415926 / 180.0;
for i:= 1 to n do
begin
x := (i - 1) * stepx;
for j:= 1 to m do
begin
y := (j - 1) * stepy;
zmat[i - 1 + (j - 1) * m] := 2 * sin (x * fpi) * sin (y * fpi);
end;
end;
scrmod ('revers');
metafl ('cons');
disini ();
pagera ();
hwfont ();
titlin ('3-D Colour Plot of the Function', 2);
titlin ('F(X,Y) = 2 * SIN(X) * SIN(Y)', 4);
name ('X-axis', 'x');
name ('Y-axis', 'y');
name ('Z-axis', 'z');
intax ();
autres (n, n);
axspos (300, 1850);
ax3len (2200, 1400, 1400);
graf3 (0.0, 360.0, 0.0, 90.0, 0.0, 360.0, 0.0, 90.0,
-2.0, 2.0, -2.0, 1.0);
crvmat (zmat, n, m, 1, 1);
height (50);
title ();
disfin ();
end.
Surface Plot / Free Pascal
program dislin_surface;
uses
dislin;
const
n = 50;
m = 50;
var
i, j : int32;
fpi, stepx, stepy, x, y : double;
zmat : array[0..n*m-1] of double;
ctit1 : ansistring = 'Surface Plot (SURMAT)';
ctit2 : ansistring = 'F(X,Y) = 2*SIN(X)*SIN(Y)';
begin
stepx := 360.0 / (n - 1);
stepy := 360.0 / (m - 1);
fpi := 3.1415926 / 180.0;
for i:= 1 to n do
begin
x := (i - 1) * stepx;
for j:= 1 to m do
begin
y := (j - 1) * stepy;
zmat[i - 1 + (j - 1) * m] := 2 * sin (x * fpi) * sin (y * fpi);
end;
end;
scrmod ('revers');
setpag ('da4p');
metafl ('cons');
disini ();
pagera ();
complx ();
axspos (200, 2600);
axslen (1800, 1800);
name ('X-axis', 'x');
name ('Y-axis', 'y');
name ('Z-axis', 'z');
titlin (ctit1, 2);
titlin (ctit2, 4);
view3d (-5.0, -5.0, 4.0, 'abs');
graf3d (0.0, 360.0, 0.0, 90.0, 0.0, 360.0, 0.0, 90.0,
-3.0, 3.0, -3.0, 1.0);
height (50);
title ();
color ('green');
surmat (@zmat[0], n, m, 1, 1);
disfin ();
end.
Shaded Surface Plot / Free Pascal
program dislin_surshd;
uses
dislin;
const
n = 50;
m = 50;
var
i, j : int32;
fpi, stepx, stepy, x, y : double;
zmat : array[0..n*m-1] of double;
xray : array[0..n-1] of double;
yray : array[0..m-1] of double;
ctit1 :ansistring = 'Shaded Surface Plot';
ctit2 : ansistring = 'F(X,Y) = 2*SIN(X)*SIN(Y)';
begin
stepx := 360.0 / (n - 1);
stepy := 360.0 / (m - 1);
fpi := 3.1415926 / 180.0;
for i:= 1 to n do
begin
x := (i - 1) * stepx;
xray[i] := x;
for j:= 1 to m do
begin
y := (j - 1) * stepy;
yray[j] := y;
zmat[i - 1 + (j - 1) * m] := 2 * sin (x * fpi) * sin (y * fpi);
end;
end;
scrmod ('revers');
setpag ('da4p');
metafl ('cons');
disini ();
pagera ();
complx ();
axspos (200, 2600);
axslen (1800, 1800);
name ('X-axis', 'x');
name ('Y-axis', 'y');
name ('Z-axis', 'z');
titlin (ctit1, 2);
titlin (ctit2, 4);
view3d (-5.0, -5.0, 4.0, 'abs');
graf3d (0.0, 360.0, 0.0, 90.0, 0.0, 360.0, 0.0, 90.0,
-3.0, 3.0, -3.0, 1.0);
height (50);
title ();
shdmod ('smooth', 'surface');
surshd (@xray[0], n, @yray[0], n, @zmat[0]);
disfin ();
end.
Contour Plot / Free Pascal
program dislin_contour;
uses
dislin;
const
n = 50;
m = 50;
var
i, j : int32;
fpi, stepx, stepy, x, y, zlev : double;
zmat : array[0..n*m-1] of double;
xray : array[0..n-1] of double;
yray : array[0..m-1] of double;
begin
stepx := 360.0 / (n - 1);
stepy := 360.0 / (m - 1);
fpi := 3.1415926 / 180.0;
for i := 0 to n - 1 do
xray[i] := i * stepx;
for j := 0 to m - 1 do
yray[j] := j * stepy;
for i := 1 to n do
begin
x := xray[i-1] * fpi;
for j := 1 to m do
begin
y := yray[j-1] * fpi;
zmat[i - 1 + (j - 1) * m] := 2 * sin (x) * sin (y);
end;
end;
scrmod ('revers');
setpag ('da4p');
metafl ('cons');
disini ();
complx ();
pagera ();
titlin ('Contour Plot', 1);
titlin ('F(X,Y) = 2 * SIN(X) * SIN(Y)', 3);
name ('X-axis', 'x');
name ('Y-axis', 'y');
intax ();
axspos (450, 2670);
graf (0.0, 360.0, 0.0, 90.0, 0.0, 360.0, 0.0, 90.0);
height (30);
for i := 0 to 8 do
begin
zlev := -2.0 + i * 0.5;
setclr ((i + 1) * 25);
if i = 4 then
labels ('none', 'contur')
else
labels ('float', 'contur');
contur (@xray[0], n, @yray[0], m, @zmat[0], zlev);
end;
height (50);
color ('fore');
title ();
disfin ();
end.
Shaded Contour Plot / Free Pascal
program dislin_conshd;
uses
dislin;
const
n = 50;
m = 50;
var
i, j : int32;
stepx, stepy, x, y : double;
zmat : array[0..n*m-1] of double;
xray : array[0..n-1] of double;
yray : array[0..m-1] of double;
zlev : array[0..11] of double;
begin
stepx := 1.6 / (n - 1);
stepy := 1.6 / (m - 1);
for i := 0 to n - 1 do
begin
x := 0.0 + i * stepx;
xray[i] := x;
for j := 0 to m - 1 do
begin
y := 0.0 + j * stepy;
yray[j] := y;
zmat[i + j * m] := (x * x - 1.0) * (x * x - 1.0) +
(y * y - 1.0) * (y * y - 1.0);
end;
end;
scrmod ('revers');
setpag ('da4p');
metafl ('cons');
disini ();
pagera ();
complx ();
mixalf ();
titlin ('Shaded Contour Plot', 1);
titlin ('F(X,Y) = (X[2$ - 1)[2$ + (Y[2$ - 1)[2$', 3);
name ('X-axis', 'x');
name ('Y-axis', 'y');
shdmod ('poly', 'contur');
axspos (450, 2670);
graf (0.0, 1.6, 0.0, 0.2, 0.0, 1.6, 0.0, 0.2);
for i := 1 to 12 do
zlev[12-i] := 0.1 + (i - 1) * 0.1;
conshd (@xray[0], n, @yray[0], n, @zmat[0], @zlev[0], 12);
height (50);
title ();
disfin ();
end.
Shaded Surface / Contour Plot / Free Pascal
program dislin_surcon
uses
dislin;
const
n = 50;
m = 50;
nlev = 20;
var
i, j : int32;
fpi, step, stepx, stepy, x, y : double;
zmat : array[0..n*m-1] of double;
xray : array[0..n-1] of double;
yray : array[0..m-1] of double;
zlev : array[0..nlev-1] of double;
ctit1 : ansistring = 'Shaded Surface / Contour Plot';
ctit2 : ansistring = 'F(X,Y) = 2*SIN(X)*SIN(Y)';
begin
stepx := 360.0 / (n - 1);
stepy := 360.0 / (m - 1);
fpi := 3.1415926 / 180.0;
for i:= 1 to n do
begin
x := (i - 1) * stepx;
xray[i-1] := x;
for j:= 1 to m do
begin
y := (j - 1) * stepy;
yray[j] := y;
zmat[i - 1 + (j - 1) * m] := 2 * sin (x * fpi) * sin (y * fpi);
end;
end;
scrmod ('revers');
setpag ('da4p');
metafl ('cons');
disini ();
pagera ();
hwfont ();
axspos (200, 2600);
axslen (1800, 1800);
name ('X-axis', 'x');
name ('Y-axis', 'y');
name ('Z-axis', 'z');
titlin (ctit1, 2);
titlin (ctit2, 4);
graf3d (0.0, 360.0, 0.0, 90.0, 0.0, 360.0, 0.0, 90.0,
-2.0, 2.0, -2.0, 1.0);
height (50);
title ();
grfini (-1.0, -1.0, -1.0, 1.0, -1.0, -1.0, 1.0, 1.0, -1.0);
nograf ();
graf (0.0, 360.0, 0.0, 90.0, 0.0, 360.0, 0.0, 90.0);
step := 4.0 / nlev;
for i:= 0 to nlev - 1 do
zlev[i] := -2.0 + i * step;
conshd (@xray[0], n, @yray[0], n, @zmat[0], @zlev[0], nlev);
box2d ();
reset ('nograf');
grffin ();
shdmod ('smooth', 'surface');
surshd (@xray[0], n, @yray[0], n, @zmat[0]);
disfin ();
end.
Spheres and Tubes / Free Pascal
Some Solids / Free Pascal
program dislin_spheres;
uses
dislin;
var
i, j1, j2 : int32;
x : array[0..16] of double = (10.0, 20.0, 10.0, 20.0, 5.0, 15.0, 25.0,
5.0, 15.0, 25.0, 5.0, 15.0, 25.0, 10.0, 20.0, 10.0, 20.0);
y : array[0..16] of double = (10.0, 10.0, 20.0, 20.0, 5.0, 5.0, 5.0, 15.0,
15.0, 15.0, 25.0, 25.0, 25.0, 10.0, 10.0, 20.0, 20.0);
z : array[0..16] of double = (5.0, 5.0, 5.0, 5.0, 15.0, 15.0, 15.0, 15.0,
15.0, 15.0, 15.0, 15.0, 15.0, 25.0, 25.0, 25.0, 25.0);
idx : array[0..55] of int32 = (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);
begin
setpag ('da4p');
scrmod ('revers');
metafl ('cons');
disini ();
pagera ();
hwfont ();
light ('on');
matop3 (0.02, 0.02, 0.02, 'specular');
clip3d ('none');
axspos (0, 2500);
axslen (2100, 2100);
htitle (50);
titlin ('Spheres and Tubes', 4);
name ('X-axis', 'x');
name ('Y-axis', 'y');
name ('Z-axis', 'z');
labdig (-1, 'xyz');
labl3d ('hori');
graf3d (0.0, 30.0, 0.0, 5.0, 0.0, 30.0, 0.0, 5.0,
0.0, 30.0, 0.0, 5.0);
title ();
shdmod ('smooth', 'surface');
i := zbfini ();
matop3 (1.0, 0.0, 0.0, 'diffuse');
for i := 0 to 16 do
sphe3d (x[i], y[i], z[i], 2.0, 50, 25);
matop3 (0.0, 1.0, 0.0, 'diffuse');
i := 0;
while (i < 56) do
begin
j1 := idx[i] - 1;
j2 := idx[i+1] - 1;
tube3d (x[j1], y[j1], z[j1], x[j2], y[j2], z[j2], 0.5, 5, 5);
i := i + 2;
end;
zbffin ();
disfin ();
end.
Map Plot / Free Pascal
program dislin_map;
uses
dislin;
begin
scrmod ('revers');
metafl ('cons');
disini ();
pagera ();
complx ();
frame (3);
axspos (400, 1850);
axslen (2400, 1400);
name ('Longitude', 'x');
name ('Latitude', 'y');
titlin ('World Coastlines and Lakes', 3);
labels ('map', 'xy');
grafmp (-180.0, 180.0, -180.0, 90.0, -90.0, 90.0, -90.0, 30.0);
gridmp (1, 1);
color ('green');
world ();
color ('fore');
height (50);
title ();
disfin ();
end.
TeX Instructions for Mathematical Formulas / Free Pascal
program dislin_tex;
uses
dislin;
var
cstr : ansistring = 'TeX Instructions for Mathematical Formulas';
nl : int32;
begin
scrmod ('revers');
setpag ('da4p');
metafl ('cons');
disini ();
pagera ();
complx ();
height (40);
nl := nlmess (cstr);
messag (cstr, (2100 - nl) div 2, 100);
texmod ('on');
messag ('$\frac{1}{x+y}$', 150, 400);
messag ('$\frac{a^2 - b^2}{a+b} = a - b$', 1200, 400);
messag ('$r = \sqrt{x^2 + y^2}', 150, 700);
messag ('$\cos \phi = \frac{x}{\sqrt{x^2 + y^2}}$', 1200, 700);
messag ('$\Gamma(x) = \int_0^\infty e^{-t}t^{x-1}dt$', 150, 1000);
messag ('$\lim_{x \to \infty} (1 + \frac{1}{x})^x = e$', 1200, 1000);
messag ('$\mu = \sum_{i=1}^n x_i p_i$', 150, 1300);
messag ('$\mu = \int_{-\infty}^ \infty x f(x) dx$', 1200, 1300);
messag ('$\overline{x} = \frac{1}{n} \sum_{i=1}^n x_i$', 150, 1600);
messag ('$s^2 = \frac{1}{n-1} \sum_{i=1}^n (x_i - \overline{x})^2$',
1200, 1600);
messag ('$\sqrt[n]{\frac{x^n - y^n}{1 + u^{2n}}}$', 150, 1900);
messag ('$\sqrt[3]{-q + \sqrt{q^2 + p^3}}$', 1200, 1900);
messag ('$\int \frac{dx}{1+x^2} = \arctan x + C$', 150, 2200);
messag ('$\int \frac{dx}{\sqrt{1+x^2}} = {\rm arsinh} x + C$',
1200, 2200);
messag ('$\overline{P_1P_2} = \sqrt{(x_2-x_1)^2 + (y_2-y_1)^2}$',
150,2500);
messag ('$x = \frac{x_1 + \lambda x_2}{1 + \lambda}$', 1200, 2500);
disfin ();
end.
News
DISLIN manual as eBook from Amazon
5. April 2025
Support for OpenBSD 64-bit
17. January 2025
Support for Python 3.13 and Windows
17. January 2025
Updated PDF manual of the DISLIN book
8. January 2025
Upgrade 11.5.2
8. April 2024
Support for Python 3.11 and Windows
28. July 2023
Bug fix for the X11 distributions
22. July 2023
Upgrade 11.5.1
25. April 2023
Support for Linux 64-bit on IBM z series
30. October 2022
Support for MingW 64-bit UCRT runtime environment
28. September 2022
Release 11.5
15. March 2022
DISLIN Book Version 11 is available
8. March 2017
5. April 2025
Support for OpenBSD 64-bit
17. January 2025
Support for Python 3.13 and Windows
17. January 2025
Updated PDF manual of the DISLIN book
8. January 2025
Upgrade 11.5.2
8. April 2024
Support for Python 3.11 and Windows
28. July 2023
Bug fix for the X11 distributions
22. July 2023
Upgrade 11.5.1
25. April 2023
Support for Linux 64-bit on IBM z series
30. October 2022
Support for MingW 64-bit UCRT runtime environment
28. September 2022
Release 11.5
15. March 2022
DISLIN Book Version 11 is available
8. March 2017