De belles rosaces en BASIC Applesoft

Je suis tombé récemment sur un article de l’Ordinateur Individuel n°69 publié en avril 1985. Cet article propose de tracer des rosaces avec l’imprimante graphique du TRS-80 modèle 3 ou de les afficher avec le mode graphique haute résolution de l’Apple II. Les programmes sont en langage BASIC, en Applesoft pour l’Apple II.

Cet article présente le programme « ROSACES » et en explique les principes. Il sera suivi d’un autre article qui sera la deuxième partie de ma page sur la programmation graphique en C sur Apple II, et qui proposera une implémentation en C de ROSACES.

Le listing en BASIC Applesoft

Voici un exemple de résultat :

La rosace obtenue avec les paramètres A=3.75 ; B=2 ; PE=4 ; PA=0.02
Quelques explications

Les coordonnées des points de la rosace sont données par les formules mathématiques suivantes :

On retrouve une équation proche de celle d’un cercle, mais le rayon n’est pas constant et fonction de θ, la fonction n(θ) étant comprise entre -1 et 1 si b est un nombre positif ou nul.

En jouant sur les paramètres a et b vous modifiez la fonction n(θ) et donc la forme de la rosace ; a influe sur la fréquence et b sur l’amplitude des variations du rayon.

PA et PE sont des paramètres utilisés dans la boucle FOR...NEXT qui effectue le tracé de la rosace ; PA est le pas de variation de θ (en radian) et PE le nombre de tours. A noter que dans le programme la variable mathématique θ est remplacée par la variable i.

A vous de jouer

A vous de faire des essais maintenant, en jouant sur les paramètres A, B, PE et PA. Voici quelques combinaisons intéressantes issues de l’article de l’OI.

RosaceABPEPA
n°171010,02
n°27310,02
n°37110,02
n°470,310,01
n°53,5320,02
n°63,50,320,03
n°73,75240,02
n°87,51,420,02
n°90,30100,03
n°101,750,740,04
Quelques rosaces intéressantes, à vous d’en découvrir d’autres
L’articlE de l’Ordinateur Individuel

Voici l’article d’origine d’où est issu le programme ROSACES.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *