CODINGAMSLIVE ★ AMSLIVE n°6 - SINUS SITE (1/2) ★

AMSLIVE n°06 - SinusCoding Amslive
Pour sortir de la platitude routinière des animations rectilignes, le programmeur ajoute dans son code une pincée de sinus. Mais le mathématicien devra se porter à son secours pour lui éviter de tomber dans les pièges des erreurs de précisions.

Jetez un œil à la PLASMA DEMO de GOZEUR ou à la partie de RAINBIRD de la TERROR UNDER THE X-MAS TREE. On y voit des animations basées sur l'addition de courbes sinusoïdales. Mais le mouvement est tremblotant. A la fin de cet article (dans 1 mois, désolé), vous saurez pourquoi.

RAPPELS

C'est pas que ça me fasse particulièrement plaisir, mais j'ai promis à votre mère de vous inculquer certaines bases en mathématiques.

On part d'un angle aigu que forment 2 demi-droites. En dressant une perpendiculaire à l'une d'entre elles, on obtient un triangle rectangle. Eh bien, le sinus de cet angle est le rapport du coté opposé sur l'hypoténuse.

Dans un repère orthonormal (càd dont les axes sont perpendiculaires et les unités de mesure identiques en x et en y), on trace un cercle de rayon 1. Un rayon forme un angle avec l'axe horizontal. Cet angle varie de 0 à 360 ou de 0 à 2n suivant que vous parliez en degrés ou en radians. On mesure en partant de l'axe des abscisses, qui est fixe, dans le sens inverse des aiguilles d'une montre (on parle de sens trigonométrique).

Le triangle OMH est rectangle. On a SIN (a) = HM/OM Et comme OM=1, on obtient la mesure de SIN (a) en projetant M sur l'axe des ordonnées.
On peut considérer des angles plus grands que In, ou négatifs, en remarquant que les angles x et X+2TI sont équivalents. On peut donc donner une valeur à SIN (x) quelque soit le réel x.

CARACTERISTIQUES

Soit la fonction f : x -> SIN x, où x est un réel, on déduit des remarques précédantes que :
— f varie entre-1 et 1.
— f est impaire, càd que si on trace la courbe, le centre du repère est centre de symétrie
— f est périodique de période 2 pi, càd qu'elle se "répète" tout les 2 pi.

ET LE COSINUS ?

Revenons au cercle trigonométrique, le COSINUS de l'angle a est l'abscisse du point M, tout comme le SINUS correspondait à l'ordonnée.

En résumé, le point M a pour coordonnées (COS(a);SIN(a)). Ceci explique la formule de tracé de cercle :

ORIGIN 320,200:DEG:R%=100:FOR X%=0 TO 358 STEP 2:PLOT COS(X%) *R%,SIN (X%)*R%:NEXT

La courbe de la fonction COS n'est pas très intéressante en soi, car elle équivaut à celle de la fonction SIN décalée (on dit déphasée) de -90 degrés.

EN MODULUS SINUSUS CLAUDIO

Dans une fonction de la forme SIN(A*x+B)*C+D, A détermine la fréquence, B le déphasage, C l'amplitude et D le domaine d'arrivée. Pour un affichage à l'écran par exemple, on peut souhaiter ne pas obtenir des valeurs négatives.

Rien n'oblige ces paramètres à être constants. Eux-mêmes peuvent être fonctions de x. FINIE LA THEORIE ! On passe aux applications basiques ; la boucle suivante affiche une courbe dont l'amplitude va croissant.

DEG : FOR X=0 TO 638 STEP 2:PLOT X,SIN (3*X) *X/4 + 200 :NEXT


Figure 1

Celle-ci a une fréquence modulée :

DEG:FOR X = 0 to 638 STEP 2:PLOT X,SIN((SIN(X)+10) * X)*30+ 200:
NEXT


Figure 2

Une bonne façon d'obtenir des courbes "originales" est d'additionner des sinusoïdales de fréquences différentes. On obtiendra une courbe, à l'apparence plus complexe, dont la période est le plus petit commun multiple (PPCM) des périodes des courbes de départ. Par exemple, en additionnant les fonctions fi et f2 de période 8 et 6 respectivement, on

obtient une fonction de période 24. En 24 unités, f1 aura décrit 3 fois les mêmes variations, et il 4 fois les siennes. Allez, tapez :

DEG:FOR X=0 to 638 STEP 2:Y1=SIN(2*X)*40:Y2=SIN(3*X)*40:PLOT X,Y1+200,1:PLOT X,Y2 + 200,2:PLOT X,Y1+Y2+200,3:NEXT


Figure 3

SINUS & SCROLLINGS

Il y a plein de manières d'accommoder ces 2 ingrédients. La plus simple est d'afficher les caractères suivant votre courbe, et de déplacer le tout (comme dans la démo BYTE'96 de CMP/TOM&JERRY). Là, la courbe se déplace à la même vitesse que le scrolling, si je puis dire.
Si la courbe est fixe, le scrolling suit son tracé tout comme des wagons sur une montage russe (voir l'intro de la' TRASH des KRAD'OS). L'effet inverse est obtenu dans ce qu'on appelle les screen waggles. Une courbe SINUS déforme un dessin : cette courbe se déplace en Y mais le dessin lui reste fixe (en Y bien sur). L'intérêt croit quand les courbes et scrollings se meuvent à différentes vitesses. On obtient un joli effet de vagues (le précurseur sur CPC fut P007 dans la MADSINUS part de la YAO).

Quand je parle de déplacement de courbe, imaginez-vous une onde qui se propage le long d'une corde ou sur une surface d'eau dans laquelle on a jeté un caillou. Que se passerait-il si on faisait partir une autre onde à l'autre bout de la corde ou si on jetait un deuxième caillou à coté du 1er ? Et bien 2 ondes vont se superposer. Pour simuler ça, on additionne 2 fonctions, mais en décalant progressivement la position de l'une par rapport à l'autre. Si on prend l'exemple d'une onde sinus toute simple, en l'additionnant sur elle-même, on double l'amplitude. Mais si on déphase de 180 degrés, on obtient la fonction nulle. Suivant le déphasage, on a des sinusoidales d'amplitudes intermédiaires. Les spécialistes feront le lien avec ma méthode PDC de multiplication. Cet effet fut employé la première fois par OVERFLOW dans l'intro du fanz THE OTHER WORLD 3, sous le nom de PVC (plasma version CPC).

A SUIVRE ...

AMSLIVE n°6

★ ANNÉE: ???
★ AUTEUR: MADRAM

Page précédente : AMSLIVE n°06 - Rsx Amsdos

★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Coding » AMSLIVE n°04 - Z80
» Coding » AMSLIVE n°20 - CRTC bien Digérer
» Coding » AMSLIVE n°05 - CPC Sos Partie 1
» Coding » AMSLIVE n°14 - Sound Player 2
» Coding » AMSLIVE n°02 - Balayage Video
» Coding » AMSLIVE n°19 - Crtc Detection - Retour Au Source
Je participe au site:

» 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.7-desktop/c
Page créée en 397 millisecondes et consultée 3635 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.