.\"	French Translation of MINI-EXPLOR article			2jun
.so mxi:Tmac.S
.\"	define (9) special characters for French accents
.ds [ \o"e\(aa"
.ds ] \o"e\(ga"
.ds @ \o"a\(ga"
.ds $ \o"u\(ga"
.ds & c\h'-0.35m'\v'7u'\z,\v'-7u'\h'0.35m'
.ds # \o"e^"
.ds | \o"i^"
.ds ^ \o"o^"
.ds !! \o"u^"
.de ht     \"restore tabs to initial half-inch spacing
.ta .5i +.5i +.5i +.5i +.5i +.5i +.5i +.5i +.5i +.5i +.5i +.5i	\"set tabs
..
.nr rf 0 1	\"set up register for reference numbering
.de fs     \"define reference macro (first and third arguments are for text)
\\$1\s-2\u\\$2\s+2\d\\$3
..
.\"	Abstract for French Translation of MINI-EXPLOR article
.ps 14
.nr PS 14
.vs 17
.nr VS 17
.ce 8
MINI-EXPLOR
Une Version FORTRAN du Langage
EXPLOR pour Mini-ordinateur
.ps 10
.nr PS 10
.vs 12
.nr VS 12
.sp 1
par
.sp 1
Ken Knowlton
Bell Laboratories
Murray Hill, New Jersey 07974
.sp 4
.UL R\*[sum\*[
.sp 2
.PP
Le langage EXPLOR, qui g\*[n\*]re des dessins \*@ partir du "\fBEx\fPplicit 2-D
\fBP\fPatterns, \fBL\fPocal \fBO\fPperations, and \fBR\fPandomness", a permis au programmeur
d\*[butant d'obtenir des r\*[sultats graphiques et de travailler avec
d'autres notions fondamentales de programmation telles que algorithmes,
boucles embo\*|t\*[es, triage, heuristique et recherche, automates
cellulaires, calculs de Monte-Carlo, machines \*@ \*[tat fini.
.PP
Ce document d\*[crit une version simplifi\*[e du syst\*]me, cod\*[e en 430
lignes seulement, pouvant op\*[rer sur la plupart des machines \*@ mot de
16-bit (ou plus grand) ayant 8K \*@ 16K capacit\*[ de m\*[moire.  Une telle
mise en oeuvre, avec sortie sur imprimante par ligne ou t\*[l\*[imprimeur,
peut maintenant produire un assortiment d'\*[chantillons presque aussi
riche que les versions beaucoup plus grandes sur lesquelles des
rapports ant\*[rieurs avaient \*[t\*[ r\*[dig\*[s.
.sp 2
.ce 6
\s-5\(bs      \(bs      \(bs      \(bs      \(bs      \(bs      \(bs      \(bs      \(bs\s+5
.sp 2
.PP
Cet article est la traduction d'un texte anglais qui comprend aussi deux
appendices avec des indications techniques suppl\*[mentaires sur la mise
en pratique du programme.
.sp 2
.ce 5
Pour toute information s'adresser \*@
.sp 1
Computing Information Service Group, Rm. 2F-126
Bell Laboratories
Murray Hill, New Jersey  07974
United States of America
.PP
La traduction en fran\*&ais de ce document a \*[t\*[ r\*[alis\*[e par
Mariano Perero, Francis Wilson, Peggy O'Brien, Catherine Berdonneau,
C\*[cile Groupil et Nadia Wilson.
.PP
La composition automatis\*[e a \*[t\*[ ex\*[cut\*[e par Francis Wilson et Jerold
Barnard au Centre de Calcul, City College de New York.
.PP
.tl '''Juin 1980'
.ps 12
.vs 14
.nr PS 12
.nr VS 14
.nr HM 0.5i	\"begin first page (after abstract) higher than default
.nr FM 0.5i	\"end first page (after abstract) lower than default
.bp -1
.ce 8
MINI-EXPLOR
Une Version FORTRAN du Langage
EXPLOR pour Mini-ordinateur
.ps 10
.vs 12
.nr PS 10
.nr VS 12
.sp 1
par
.sp 1
Ken Knowlton
Bell Laboratories
Murray Hill, New Jersey 07974
USA
.sp 1.4
.NH
Introduction
.PP
Le langage EXPLOR, sur lequel des
.fs rapports 1,2
ant\*[rieurs ont \*[t\*[
r\*[dig\*[s g\*[n\*]re des mod\*]les \*@ deux dimensions, des dessins et 
des images \*@ partir du "\fBEx\fPplicitly provided 2-D \fBP\fPatterns, \fBL\fPocal
\fBO\fPperations and \fBR\fPandomness."  Il s'est av\*[r\*[ efficace pour la
description de r\*[sultats de simulations dans des situations
naturelles (c.-\*@-d. croissance cristallographique) et hypoth\*[tiques
(ex. automates cellulaires) et pour la production d'une grande vari\*[t\*[
de dessins.  Ce langage s'est av\*[r\*[ particuli\*]rement utile comme
instrument p\*[dagogique pour l'enseignement des graphiques automatis\*[s
et de l'informatique en g\*[n\*[ral.  Je m'en suis servi
dans des cours et des ateliers \*@ l'Universit\*[ de Santa
.fs Cruz 2
en Californie, \*@ l'Universit\*[ de East Michigan et \*@ l'Universit\*[
de Syracuse.  La "version de Santa Cruz" a \*[t\*[ export\*[e
dans trente autres coll\*]ges et universit\*[s.
.PP
Ce document pr\*[sente une version abr\*[g\*[e mais puissante du syst\*]me
cod\*[ en 430 lignes du sous-ensemble portatif de FORTRAN
apppel\*[ 
.fs PFORT 3,4,5 .
Il peut op\*[rer sur la plupart des mini-ordinateurs \*@ mot de 16-bit
(ou plus) et 8K \*@ 16K capacit\*[ de m\*[moire et, bien entendu, ayant
un compilateur de FORTRAN.
.PP
La "portabilit\*[" a \*[t\*[ contr\*^l\*[e par la v\*[rificatrice
.fs PFORT 6 .
A moins
de modification, la sortie est obtenue au moyen des instructions
\fBWRITE\fP,
produisant jusqu'\*@ trois surimpressions d'imprimante par 
ligne ou de t\*[l\*[imprimeur - ce qui peut donner quatre nuances distinctes
de gris.  L'image interne est conserv\*[e en format de balayage
horizontal et est constitu\*[e de 140 lignes de 140 points chacune,
group\*[es en sept cellules de deux bits par mot machine.  La plupart
des op\*[rations am\*]nent \*@ condenser et d\*[condenser certaines sections
de l'image totale.  Peut-\*#tre est-il souhaitable de recoder en
langage machine les programmes primaires corres\%pondant \*@ ces op\*[rations.
.sp 2
.NH
Description du MINI-EXPLOR pour le Programmeur
.PP
Du point de vue du programmeur, le syst\*]me comprend les neuf fonctions
et sous-programmes suivants, appelables en FORTRAN,
et d\*[crits en d\*[tail:
.sp 1
.ta .5i 1i 1.7i 2.33i 3.9i\"set tabs for pretty printing fonctions etc.
.nf
.ce
Fonctions
.sp 0.6
		\h'0.2i'\fBNUM\fP	(x,y)
		\h'0.2i'\fBNE\fP	(min,max)
.sp 1.6
.ce
Sous-Programmes
.sp 0.6
	\fBCALL	SHOW\fP	(x,y,w,h)
	\fBCALL	PUT\fP	(x,y,	n)
	\fBCALL	PUT4\fP	(x,y,	n)
	\fBCALL	PUT16\fP	(x,y,	n1,n2,n3,n4)
	\fBCALL	CHANJ\fP	(x,y,w,h,%,		rule)
	\fBCALL	LOCOP\fP	(x,y,w,h,%,many,neighbors,these,	rule)
	\fBCALL	COMBN\fP	(x,y,w,h,%,xf,yf,orientation,	r0,r1,r2,r3)
.ht    \"restore half-inch tab settings
.fi
.nr HM 1.0i	\"restore default page top margin
.nr FM 0.9i	\"restore (almost) default page bottom margin for second page
.bp	\"page # 2 coming up
.PP
Pour utiliser efficacement ces sous-programmes, le programmeur
devra conna\*|tre la partie de FORTRAN traitant de:
.DS
appels d'un sous-programme
.B "GO TO"
variables nombres entiers
instructions d'affectation arithm\*[tique; op\*[rateurs +  \-  *  /  **
boucles \fBDO\fP
d\*[cisions logiques \fBIF\fP; op\*[rateurs logiques \fB.AND. .OR. .NOT.\fP
fonctions, y compris fonctions FORTRAN: \fBMINO, MAXO, MOD, IABS, ISIGN\fP
matrices \*@ 1, 2, et 3 dimensions
.DE
.sp .9
.PP
Tous les param\*]tres utilis\*[s dans ces sous-programmes sont des entiers
(c.\*@.d. \*@ valeur 0, 1, 2, 3, 4 . . . ) et peuvent prendre des valeurs
n\*[gatives.  Il est donc recommand\*[ de commencer tout programme (si cela
est accept\*[ par le compilateur FORTRAN) par l'instruction:\0
\fBIMPLICIT INTEGER\fP (A-Z).
.sp 1.6
.PP
L'utilisateur doit imaginer l'image en m\*[moire comme un treillis de
140\(mu140 cellules, chacune contenant le chiffre 0, 1, 2, ou 3 et
adress\*[e par ses coordonn\*[es x,y.
.sp 1.8
.nf
.in +4i
x = 140\h'-.65i'\v'1'\s22{\s10\v'-1'
y = 140
.sp 3
.in -3.6i
\s+4y \(ua\s-4
.in +3.8i
.sp -1.2
.TS
allbox;
n n n n n.
0	1	1	2	3
0	1	3	1	0
0	1	3	1	0
1	2	3	1	0
1	2	3	1	0
.TE
.in 0
.sp 1.1
x = 1\h'0.05i'\v'.9'\s22}\s10\v'-.9'
y = 1
.ti 2i
\s+4x \(->\s-4
.fi
.sp 1.8
.LP
Au d\*[but du programme toutes les cellules contiennent des z\*[ros. Dans ce
qui suit, tous les sous-programmes relatifs aux aires rectangulaires
contiennent les param\*]tres factices
.sp 0.7
.ce
(x,y,w,h,%, . . . . )
.sp 0.7
qui ont les significations suivantes:
.nf
.ta .57i .7i .8i	\"set tabs for pretty printing significations
.sp 0.2
	x	:	abscisse du centre du rectangle (\(12 cellule \*@ gauche du centre si
			la largeur est un nombre pair)
	y	:	ordonn\*[e du centre du rectangle (\(12 cellule au-dessous du centre
			si hauteur est un nombre pair)
	w	:	largeur
	h	:	hauteur
	%	:	un entier de 1 \*@ 100 indiquant approximativement le pourcentage
			des cellules \*@ traiter sur une base pseudo-al\*[atoire (100 indiquera
			que toutes les cellules seront \*@ traiter)
.fi
.ht    \"restore half-inch tab settings
.nr HM 1.25i	\"begin third and fourth pages lower than default
.nr FM 1.0i	\"restore default bottom margin
.bp	\"page # 3 coming up
.UL Fonctions
.sp 0.8
.PP
.UL \fBNUM\fP\0(x,y)
a la valeur (0-3) du nombre en m\*[moire dans la cellule (x,y);
si (x,y) n'est pas dans la surface repr\*[sent\*[e en m\*[moire, la valeur de
.B NUM
(x,y) est 4.
.PP
.UL \fBNE\fP\0(min,max)
, prononc\*[ "enni", a, pour chaque cas, une nouvelle valeur
al\*[atoire qui va de min \*@ max; max peut \*#tre plus petit que min et l'un
ou l'autre ou les deux peuvent \*#tre n\*[gatifs mais la diff\*[rence
\h'0.3m'\(br\h'0.1m'max\-\h'0.1m'min\h'0.1m'\(br\h'0.3m' doit \*#tre inf\*[rieure \*@ 199.
.sp 1.7
.UL Sous-Programmes
.sp 0.8
.PP
.UL \fBCALL\0SHOW\fP\0(x,y,w,h)
produira un imprim\*[ montrant le contenu d'un rectangle sp\*[cifi\*[.  L'aire
sp\*[cifi\*[e sera tronqu\*[e si elle d\*[passe l'aire repr\*[sent\*[e dans la
machine ou si elle est trop large pour l'appareil de sortie.  Les
chiffres 0, 1, 2, 3 apparaissent en tons de gris:    ,
\0\v'0.3m'\s+4\(fm\s-4\v'-0.3m',\0 \zX\h'-8u'\-\h'8u',\0 \o"MW$"  respectivement.
.PP
.UL \fBCALL\0PUT\fP\0(x,y,\0n)
place au point (x,y) le nombre n (effa\*&ant le contenu
pr\*[c\*[dent).  Si n>3, la cellule ne change pas.
.PP
.UL \fBCALL\0PUT4\fP\0(x,y,\0n)
, o\*$ n est un nombre \*@ quatre chiffres, "place" le premier chiffre
de gauche au point (x,y), le suivant au point (x+1,y), etc. Si
l'un des chiffres est sup\*[rieur \*@ 3, la cellule correspondante ne
change pas.
.PP
.UL \fBCALL\0PUT16\fP\0(x,y,\0n1,n2,n3,n4)
, o\*$ n1, n2, n3, n4 sont des nombres \*@
quatre chiffres, "place" ou \*[crit les 16 chiffres dans 16 cellules successives
(x,y), (x+1,y), etc.  Noter qu'une s\*[rie d'instructions
.B PUT16
\*@ valeurs
d\*[croissantes de y peut servir \*@ placer un mod\*]le explicite \*@
2-dimensions dans le treillis interne:
.DS
\fBCALL PUT16\fP (50,40, 3311,\|3333,\|3311,\|3311)
\fBCALL PUT16\fP (50,39, 3311,\|3311,\|3311,\|3311)
\fBCALL PUT16\fP (50,38, 3311,\|3311,\|3311,\|3311)
\fBCALL PUT16\fP (50,37, 3333,\|3311,\|3333,\|3311)
.DE
.PP
.UL \fBCALL\0CHANJ\fP\0(x,y,w,h,%,\0rule)
, prononc\*[ "change", permet de remplacer le
contenu de l'aire rectangulaire sp\*[cifi\*[e selon la r\*]gle (rule)
sp\*[cifi\*[e: la r\*]gle est un nombre de quatre chiffres indiquant de gauche
\*@ droite comment remplacer les chiffres 0, 1, 2, 3.  Par exemple - la
r\*]gle 1033 indique que 0 est remplac\*[ par 1, 1 par 0, 2 par 3, et
3 par 3 (ne change pas).
.PP
.UL \fBCALL\0LOCOP\fP\0(x,y,w,h,%,\0OK-counts,neighbors,these,rule)
est une op\*[ration locale qui permet de changer
certaines cellules de la r\*[gion sp\*[cifi\*[e selon la
.UL r\*]gle
indiqu\*[e. Les cellules chang\*[es sont celles qui ont un
nombre acceptable (OK-counts) de cellules adjacentes d\*[sign\*[es
(neighbors) contenant des chiffres appropri\*[s (these):
.IP
.UL OK-counts
indique jusqu'\*@ quatre nombres permis de voisins qui, ayant
satisfait le test, permettent que la cellule soit chang\*[e par la r\*]gle.
Si 0 est un de ces nombres, il doit \*#tre le dernier.
.IP
.UL neighbors
est un nombre \*@ trois chiffres qui sp\*[cifie un ensemble de
voisins obtenu par addition des nombres correspondants du tableau
suivant:
.in +2i
.TS
allbox;
n n n.
400	200	100
40	 	10
4	2	1
.TE
.in -2i
.IP
.UL these
sont jusqu'\*@ quatre valeurs que les voisins individuels doivent
avoir pour passer le test.  Si 0 est une de ces valeurs, il doit \*#tre
le dernier.
.bp	\"page # 4 coming up
.PP
Par Exemple:
.UL \fBCALL\0LOCOP\fP\0(x,y,w,h,50,\0350,707,120,\0rule)
indique: dans l'aire
.UL x,y,w,h,
remplacer, suivant la r\*]gle donn\*[e, la moiti\*[ (50%) des cellules o\*$ 3,
5, ou pas un seul des six voisins suivants: cellules adjacentes diagonalement
(400\|\|+\0100\|\|+\04\|\|+\01) plus cellules directement au-dessus et au-dessous
(+\0200\|\|+\02 = 707\|), contiennent des 1, des 2, ou des 0.
.PP
Le sous-programme fonctionne de telle mani\*]re que les effets ne se
propagent pas au cours d'un seul appel.  Par exemple, une seule couche
de 3 peut \*#tre plac\*[e autour des 3 existants sans produire des courants
illimit\*[s de 3.  Le sous-programme n'affecte pas les cellules en
fronti\*]re de l'aire repr\*[sent\*[e quel que soit le voisinage sp\*[cifi\*[.
.PP
.UL \fBCALL\0COMBN\fP\0(x,y,w,h,%,\0xf,yf,orient,\0r0,r1,r2,r3)
, prononc\*[ "combine" - 
change le contenu du pourcentage indiqu\*[ de x,y,w,h suivant une de
quatre r\*]gles, selon le contenu d'une des cellules correspondantes dans
l'aire qui a pour centre (xf,yf).  Le r\*[sultat est donc une
"combinaison" simple ou compliqu\*[e de deux aires de dessins, et
fonctionne de la mani\*]re suivante: une copie du voisinage de l'aire "de
d\*[part" qui a pour centre (xf,yf) est obtenue, (r\*[)orient\*[e selon la valeur
1-8 de
.UL orient
:
.DS
1  sans changement
2  rotation de 90\(de dans le sens n\*[gatif
3  rotation de 180\(de
4  rotation de 90\(de dans le sens positif
5  sym\*[trie verticale
6  sym\*[trie verticale suivie d'une rotation de 90\(de n\*[gatif
7  sym\*[trie verticale suivie d'une rotation de 180\(de
8  sym\*[trie verticale suivie d'une rotation de 90\(de positif
.DE
.LP
et replac\*[e de telle mani\*]re que la cellule centrale (xf,yf) de l'aire
"de d\*[part" soit sur (x,y), centre de l'aire \*@ changer.  Chacune des
cellules affect\*[es est alors modifi\*[e par une de quatre r\*]gles de
traduction: cette r\*]gle \*[tant d\*[termin\*[e cellule par cellule d'apr\*]s le
contenu de "la cellule de d\*[part" situ\*[e directement au-dessus.  Nous
donnons ici quatre exemples d'ensembles des r\*]gles de traduction:
.ta 0.9i 1.7i	\"set tabs for pretty printing exemples
.nf
.sp
		\h'0.17i'0     \h'.5n'1     \h'.5n'2     \h'.5n'3     \h'.5n'\(<- contenu de "la cellule de d\*[part"
.sp 0.2
	  (a) . . . ,	 0000,1111,2222,3333
	  (b) . . . ,	 0123,1123,2223,3333
	  (c) . . . ,	 0123,1111,2222,3333
	  (d) . . . ,	 0123,1230,2310,3012
.fi
.sp
.ht    \"restore half-inch tab settings
.PP
Dans l'exemple (a) si la cellule \*@ modifier a un 0 au-dessus d'elle
(dans la cellule de l'"aire de d\*[part" correspondante),
dans ce cas 0, 1, 2, ou 3 sera chang\*[ en 0; de m\*#me s'il y a un 1
au-dessus, il deviendra un 1, etc.  L'effet total de l'ensemble des
r\*]gles (a) est une op\*[ration de
.UL copie
dans laquelle, si la probabilit\*[ correspondante est 100, une copie
de l'aire "de d\*[part" remplace l'aire "d'arriv\*[e".
.PP
Dans l'exemple (b) le plus grand des contenus des deux cellules reste
apr\*]s l'op\*[ration - par exemple, 0 reste seulement l\*@ o\*$ il y avait 0
dans les deux cellules, celle "de d\*[part" et celle "d'arriv\*[e"; il reste
un 3 si l'un ou l'autre \*[tait 3.  Dans (c) l'aire "de d\*[part" est un
mod\*]le qui transforme x,y,w,h sauf que 0 est un nombre "\*@ ne pas copier"
c'est-\*@-dire que l\*@ o\*$ il y a des 0 dans l'aire "de d\*[part", le
contenu original x,y,w,h n'est pas modifi\*[.  L'exemple (d) conserve la
somme (mod 4) des contenus des deux cellules.
.nr HM 1.35i	\"begin fifth page even lower
.bp	\"page # 5 coming up
.PP
Dans les cas o\*$ la cellule "de d\*[part" est en dehors de la surface
repr\*[sent\*[e, la cellule "d'arriv\*[e" n'est pas modifi\*[e.  Si les aires
"de d\*[part" et "d'arriv\*[e" se chevauchent, le programmeur doit prendre
garde aux effets ind\*[sirables qui peuvent r\*[sulter de l'ordre dans
lequel le sous-programme modifie les cellules!  L'ordre est le suivant:
la colonne le plus \*@ gauche est modifi\*[e d'abord, de bas en haut.
.PP
L'utilisateur doit noter que dans la description pr\*[c\*[dente il y a beaucoup
d'exemples o\*$ les chiffres individuels des nombres de quatre chiffres ont
une signification ind\*[pendante; ces quatre chiffres ont \*[t\*[ group\*[s en
un seul entier pour faciliter une meilleure utilisation de la structure et de
la syntaxe de FORTRAN.
Dans tous les cas, les variables factices dans les descriptions repr\*[sentent
soit des nombres entiers explicites de quatre chiffres (les z\*[ros de t\*#te
sont facultativement omis) soit des variables dont les valeurs,
pendant l'ex\*[cution du programme, seront des entiers significatifs ayant un
sens selon les r\*]gles discut\*[es.
.sp 2
.NH
Exemples de Programmation
.PP
J'essaierai de d\*[montrer, au moyen de six programmes et leurs r\*[sultats,
l'utilit\*[ de MINI-EXPLOR en montrant la concision des programmes et la
vari\*[t\*[ des r\*[sultats graphiques.  Puisque l'objectif est de sugg\*[rer
la vari\*[t\*[ et la complexit\*[ des programmes possibles, ces exemples ne
s'adressent donc pas au d\*[butant; ils devraient \*#tre compris rapidement
par quelqu'un qui voudrait utiliser ce langage pour l'enseignment de la
programmation et/ou des graphismes par ordinateur.  Il para\*|tra tr\*]s vite
\*[vident que l'habilet\*[ \*@ manipuler des expres\%sions arithm\*[tiques
permettra de rendre l'activit\*[ plus int\*[ressante.
.PP
Dans les programmes pr\*[sent\*[s toutes les instructions en FORTRAN sont
num\*[rot\*[es pour les citer facilement; seuls les num\*[ros en retrait
sont utilis\*[s par le programme.  Pour aider la compr\*[hension visuelle,
les mod\*]les explicites d\*[finis par les appels \*@
.B PUT4
et
.B PUT16
sont, en
plus, encadr\*[s sur la liste, et les param\*]tres sont group\*[s comme dans
les descriptions des sous-programmes.  Chaque r\*[sultat pr\*[sent\*[ est une
photo d'une page de sortie d'imprimante: 80 lignes de 120 positions
(sur)imprim\*[es \*@ 8 lignes par pouce.
.PP
.UL Exemple\01
\0Il utilise un module (lignes 2-8) ayant pour centre le point
(137,137) et con\*&u de mani\*]re que les lignes de 3 m\*]nent au centre de
chaque c\*^t\*[ de la surface de 7\(mu7; ces lignes vont se rejoindre au
moment o\*$ des copies du module ayant des orientations diverses sont plac\*[es
c\*^te \*@ c\*^te jusqu'\*@
remplir l'espace \*@ 2-dimensions.  Le mod\*]le total est donc g\*[n\*[r\*[ par
une double boucle
.B DO
(lignes 9-11) utilisant la forme "copie" du
.B COMBN,
avec les orientations al\*[atoires obtenues en exprimant l'orientation par
.B NE
(1,8).  Le programme commence (ligne 1) en remplissant un grand
rectangle de 3; \*@ la fin, la couche ext\*[rieure seulement reste comme
cadre.
.PP
.UL Exemple\02
\0C'est simplement le graphe d'une fonction arbitraire en x et y:
.sp 1.4
.EQ
left | { {( x-y)( x+2y) } over 70 } right |
.EN
.sp 1.4
.LP
L'expression est calcul\*[e pour chaque cellule (x,y) traduites en tons de gris
par r\*[duction au modulo 4.
.nr HM 1.0i	\"restore default header margin
.bp	\"page # 6 coming up
.PP
.UL Exemple\03
\0C'est une "carte" de 18 pyramides octogonales qui se chevauchent, chaque
pyramide (lignes 7-8) \*[tant construite au moyen de la r\*]gle de translation
3012 appliqu\*[e \*@ 9 rectangles:
.sp 20
.LP
Ces 18 pyramides sont donc construites de plus en plus \*[troites, de plus
en plus longues, et plac\*[es de plus en plus haut sur le dessin. (\*@ noter aux lignes
2-6, IX, IY, IW, et IH sont reli\*[s \*@ K, le nombre de la pyramide).
Elles sont plac\*[es au hasard lat\*[ralement, mais en \*[vitant un
chevauchement trop compact de la mani\*]re suivante: si le centre choisi
tombe sur une cellule ne contenant pas 0, x prend une autre valeur
(lignes 3-4).
.PP
.UL Exemple\04
\0C'est une forme du fameux "jeu de vie" invent\*[ par John
Conway
.fs 7,8 .
Il commence par une sorte de \(*p en bas \*@ droite et continue par
24 it\*[rations, faisant une copie ailleurs, entre \*[tapes successives.  Le
"jeu" est une it\*[ration sur un balayage en carr\*[, o\*$ les cellules ont
deux \*[tats que nous appellerons ici
.UL point
(3) ou
.UL vacant
(0); les points apparaissent
ou disparaissent \*@ la prochaine it\*[ration selon le nombre
de points parmi les 8 cellules voisines: \*@ la prochaine \*[tape, les
points vont \*#tre pr\*[sents dans les cellules vides ayant au pr\*[alable
exactement trois points voisins; simultan\*[ment tous les points existant au pr\*[alable
auront disparu, sauf ceux qui avaient exactement 2 ou 3 points voisins.
La mise en place de ces r\*]gles est obtenue en trois \*[tapes: premi\*]rement
(ligne 8) les cellules vacantes (0) qui vont devenir des points sont
transform\*[es en 1, c'est-\*@-dire si 3 de tout le voisinage (757) ont la
valeur 3, le 0 se change en 1 (1123); deuxi\*]mement, (ligne 9) les
points (3) qui ont deux ou trois 3 comme voisins prennent temporairement
la valeur 2; finalement, (ligne 10) les cellules (1) qui vont
appara\*|tre et les cellules (2) qui sont pr\*[serv\*[es deviennent des 3 en
m\*#me temps que tous les autres points s'effacent (0) par la r\*]gle 0330.
.PP
.UL Exemple\05
\0Il donne vingt-quatre formes d'une op\*[ration locale r\*[p\*[t\*[e
huit fois qui produit une sorte de croissance \*@ partir d'une simple
cellule "occup\*[e" (c.\*@.d. un 3 sur
un fond de 0).  Pour chacun de ces vingt-quatre essais, le
.UL voisinage
et
.UL "les nombres acceptables"
.UL dans\0un\0voisinage\0de\03
sont choisis au hasard mais en tenant compte des consid\*[rations
suivantes: (1) Un nombre d\*[signant un voisinage est compos\*[ au hasard
(lignes 4-8) en additionnant ou non les nombres 400, 200, 100, 40,
10, 4, 2, et 1; mais, si le voisinage ainsi choisi est nul (0), le
processus est r\*[p\*[t\*[ jusqu'\*@ l'obtention d'un voisinage fini.  (2) Le
nombre de voisinage de 3 doit inclure 1 (c'est-\*@-dire, d\*[sign\*[ par 1000
en ligne 9) afin que la croissance puisse d\*[buter \*@ partir d'un 3 isol\*[;
trois autres nombres de 3 sont choisis au hasard (lignes 9-11), lesquels
peuvent produire deux sortes de sp\*[cifications sans aucun sens mais
inoffensives: (a) un chiffre peut \*#tre r\*[p\*[t\*[, en ce cas, la deuxi\*]me
r\*[p\*[tition est ignor\*[e (par
.bp	\"page # 7 coming up
exemple, MANY = 1353 est effectivement la
m\*#me chose que MANY = 135) et (b) le nombre acceptable de voisins peut
\*#tre plus grand que le voisinage sp\*[cifi\*[, dans ce cas, bien s\*(!!r,
ce nombre de 3 ne peut jamais \*#tre compt\*[ - par exemple,
\&...1738, 700, 3, 3333) est effectivement le m\*#me que ...13,
700, 3, 3333).
.PP
.UL Exemple\06
\0Il montre une m\*[thode g\*[n\*[ralisable de structures
architecturales quasi-perspectives compos\*[es de cubes.  On forme d'abord
l'image d'un seul cube (lignes 2-8) qui, dans ce cas, appara\*|t dans le
coin inf\*[rieur droit lors de la sortie de l'image finale.  Puis le
programme se r\*[p\*]te en trois dimensions, en fait testant pour chaque
cellule si elle fait partie de la structure, c'est-\*@-dire si elle est
"occup\*[e" par un cube.  Si oui, le cube de base est copi\*[ \*@ la position
(IX,IY) de cette cellule (\*@ noter que les 0, les 2, et les 3, qui
repr\*[sentent les surfaces visibles du cube, sont copi\*[s, alors que les
l ne sont pas copi\*[s par l'ensemble de r\*]gles
.sp 0.5
.ce
\&. . .  0000, 0123, 2222, 3333)
.LP
Du fait que les cubes sont copi\*[s d'arri\*]re en avant suivant un syst\*]me
d'axes orient\*[ vers l'observateur
.nf
.sp 0.9
.in 2.8i
L
.sp 1.5
.in +0.5i
J
.sp 1.0
.in -1.2i
K
.in 0
.sp 4
.fi
.EQ
gfont R
delim $_
.EN
.LP
les cubes les plus proches assombrissent automatiquement les parties les
plus lointaines.  Dans cet exemple particulier, le test pour la mise en
place d'un cube (ligne 12) est essentiellement la formule de la sph\*]re,
c'est-\*@-dire, si $ (J-9) sup 2 + (K-9) sup 2 + (L-1) sup 2 _
est inf\*[rieur \*@ 70, alors le centre du cube \*@ (J,K,L) est distant du
point (9,9,1) de moins de \(sr\o"7\(rn"\o"0\(rn"\h'0.1m'.  Pour des structures plus
compliqu\*[es, le programmeur devra d'abord r\*[tablir une matrice \*@ trois
dimensions compos\*[e de nombres indiquant la mise en place des cubes (ou
d'une autre forme de base); le test comprendrait alors une r\*[f\*[rence \*@ la
matrice.
.sp 2
.NH
Remerciements
.PP
Pour l'aide apport\*[e \*@ la formulation d'EXPLOR, je remercie Lillian
Schwartz, avec qui j'ai fait plusieurs films de Computer Art, la plupart
desquels utilisent
.fs EXPLOR 9 .
Pour les modifications ult\*[rieures, je
suis redevable en grande partie \*@ mes \*[tudiants - \*@ l'Universit\*[ de
Californie \*@ Santa Cruz,\*@ l'Universit\*[ de East Michigan et \*@ l'Universit\*[
de Syracuse - ainsi qu'\*@ Dan Ross
qui a fait un excellent codage de la version FORTRAN
d'EXPLOR qui peut \*#tre obtenue du "Department of Information and Computer
Science" \*@ UCSC.
.PP
Pour l'aide qu'ils ont apport\*[e \*@ la r\*[alisation de la version actuelle,
je remercie Andrew Hall, Barbara Ryder et Brian Kernighan.  Pour la
v\*[rification et la pr\*[sentation des figures de ce document, je remencie
le Professeur Joe Scala, qui utilise actuellement MINI-EXPLOR pour 
l'enseignement de l'informatique graphique aux \*[tudiants
d\*[butants de l'Universit\*[ de Syracuse.  Je remercie aussi son assistant,
David Carr, pour le contr\*^le du codage et plusieurs suggestions utiles.
.bp +7
.ll -.5i
.nr LL -.5i
.sp 2.5
.ce
.UL REFERENCES
.in +0.3i
.sp 2
.IP \n+(rf. 3
Knowlton, Ken, "EXPLOR - A Generator of Images from Explicit
Patterns, Local Operations, and Randomness", Proc. of the 9th Annual
UAIDE Meeting, Miami Beach, Florida, (1970) pp. 543-583.
.sp 0.2
.IP \n+(rf. 3
Knowlton, Ken, "A Report on the Use of FORTRAN-coded EXPLOR for
the Teaching of Computer Graphics and Computer Art", Proc. of ACM
SIGPLAN Symposium on 2-D Man-Machine Communication, Los Alamos,
N.M., October 1972.
.sp 0.2
.IP \n+(rf. 3
USA Standard FORTRAN, USA Standards Institute, New York, New York,
1966.
.sp 0.2
.IP \n+(rf. 3
Clarification of FORTRAN Standards - Initial Progress,
Communications of the ACM, Vol. 12, May 1969, pp. 289-294.
.sp 0.2
.IP \n+(rf. 3
Clarification of FORTRAN Standards - Second Report, Communications
of the ACM, Vol. 14, October 1971, pp. 628-642.
.sp 0.2
.IP \n+(rf. 3
B. G. Ryder, "The PFORT Verifier", Software Practice and Experience,
Vol. 4, No. 4, October-December 1974, pp. 359-378.
.sp 0.2
.IP \n+(rf. 3
Gardner, Martin, "Mathematical Games", Scientific American, October
1970, pp. 120-123.
.sp 0.2
.IP \n+(rf. 3
Gardner, Martin, "Mathematical Games", Scientific American, February
1971, pp. 112-117.
.sp 0.2
.IP \n+(rf. 3
Knowlton, Ken, "Collaborations with Artists - A Programmer's
Reflections", in \fIGraphic Languages\fP, F. Nake and A. Rosenfeld, Eds.,
North Holland Publishing Co., (1972), pp. 399-418.
.in 0
.tm Frex.txt over!                     
  