CODINGCLASSEURS WEKA ★ Comment exploiter toutes les ressources et augmenter les performances de votre AMSTRAD CPC ★

5/10.3.1 - I. Le compacteur (1er Complément)Coding Classeurs Weka
5/10.3.1 Compactage filiforme

I. Le compacteur

Les dessins monochromes définis par leurs contours (dessins du genre « fil de fer ») pourront être énormément compactés (jusqu'à un facteur 20 !) par le programme qui va suivre.

Le procédé de compactage est très simple. Il consiste en :

  • la définition d'un point quelconque appartenant au dessin,
  • le codage de la direction dans laquelle il faut se déplacer pour atteindre le point suivant.

Le programme de compactage filiforme défini est écrit en BASIC et occupe les lignes 1200 à 1450.

Entrez le nom de l'écran à compacter. Cet écran aura été créé par le programme de tracé défini au chapitre 10.1 de la partie 5.

Déplacez ensuite le curseur graphique (grâce aux touches-flèches) jusqu'à rencontrer un point allumé sur le dessin.

Appuyez sur la touche « ENTER ». Le programme trace alors d'une autre couleur (PEN 2) le contour de la forme jusqu'à aboutir à une discontinuité. Arrivé à ce point, le tracé s'arrête. Il faut alors déplacer le curseur pour « sauter » la discontinuité. Dès que le curseur se trouve sur un autre point (voisin) du dessin, appuyez sur la touche « ENTER », et ainsi de suite jusqu'à ce que tout l'objet ait changé de couleur.

Appuyez alors deux fois sur la touche « ESC ». Le programme indique la place occupée par le fichier compacté et propose une sauvegarde magnétique ou un retour au compactage (appui sur « ENTER »).

Le programme de compactage est le suivant :



Lignes 1070 à 1090 : Chargement des sous-programmes Assembleur
Lignes 1110 à 1160 : Initialisation du programme
Lignes 1200 à 1390 : Codage de la forme
Lignes 1430 à 1450 : Calcul optimal du prochain point
Lignes 1490 à 1630 : Positionnement du curseur graphique sur le prochain départ
Ligne 1710 : Retour au compactage si appui sur ENTER
Ligne 1720 : ou sortie avec sauvegarde du fichier compacté

Une technique intéressante employée dans ce programme est la recherche du prochain point à allumer en créant le moins possible de discontinuités. Cette technique est basée sur le principe suivant :

Tout point de l'écran peut être entouré de huit façons différentes :

Appelons « t » le contexte actuel, « t + 1 » le contexte après un déplacement, et « t + n » le contexte après n déplacements.

Si, pour chacun de ces huit points, nous calculons le nombre de points immédiatement contigus P(i) (et donc le nombre de déplacements possibles en t + 2), il apparaît que :

8
Min (P(i))
i = 0

donnera le point i ayant le moins de chance de provoquer une discontinuité (Calcul de Min (P(i)) effectué ligne 1440, et calcul de P(i) effectué ligne 1430).

Remarque importante :

La forme devra OBLIGATOIREMENT être dessinée en PEN 1. Référez-vous aux lignes 1230 à 1300 du listing qui explique le pourquoi de la chose : le calcul du prochain point est effectué en comparant le résultat de la fonction TEST (qui donne la couleur d'un point) à 1.

Le programme défini ci-dessus utilise des sous-programmes écrits en langage d'assemblage pour l'affichage des dessins filiformes.

L'utilisation du langage d'assemblage est quasi obligatoire pour réduire le temps d'affichage qui, malgré tout, n'est pas négligeable (une seconde pour 2 000 points). Le principe est simple. Le fichier compacté généré par le programme précédent possède la structure suivante :

Si un des bits indicateur de saut est à un, un déplacement relatif sur 7 bits suit :

0 = vers la droite ou vers le haut
1 = vers la gauche ou vers le bas

* Remarque : b est l'abréviation de bit

Avec la convention de codage de déplacement suivante :

Partant de la structure de ce fichier, voyons comment écrire le programme de tracé.

d'où le programme d'assemblage suivant :








Remarque:

Ce programme utilise la routine du FIRMWARE « PLOT RELATIVE ». Reportez-vous en au chapitre 2.7 de la partie 4 pour avoir plus de détails.

Page précédente : 5/10.3.1 - Compactage filiforme
★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listing:
» WEKA  5-10-3-1-Compactage  filiformeDATE: 2021-02-02
DL: 202
TYPE: PDF
SiZE: 393Ko
NOTE: 13 pages/PDFlib v1.6

Je participe au site:
» Vous avez des infos personnel, des fichiers que nous ne possédons pas concernent ce programme ?
» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.73-desktop/c
Page créée en 457 millisecondes et consultée 292 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.