CODINGAMSLIVE ★ AMSLIVE n°17 - SYNTHESE : SAINTE THERESE QUELQU'UN ? ★

AMSLIVE n°17 - 3DCoding Amslive

J'étais parti (pas bien loin rassurez-vous) pour continuer la série d'articles sur la 3D. À l'instant précis où je me mis au travail, armé d'un crayon papier dont il faudra que je vous énu-mère les qualités, le téléphone se manifesta par d'inamicaux cris animaux. Une ancienne copine lancée dans le mannequinat (comme quoi on ne lance pas que les nains) cherchait du réconfort. Elle redoutait de se retrouver dans un catalogue des Trois Suisses (la voie de garage du mannequin) ou de sombrer dans la prostitution. Je la rassurai sur ce dernier point : « Ne t'inquiète pas, je te soutiendrai toujours ».

Cet entrefaite mit en évidence l'aspect prématuré de ma démarche, bien que les deux sujets n'aient absolument rien à voir entre eux.

Peut-on décemment faire virevolter un objet dans l'espace sans savoir rotation-ner une figure dans le plan ? A-t-on objectivement le droit d'exploiter des calculs dont on ne connaît pas la précision ?

Comment oserait-on tracer une simple ligne en ignorant les tenants et aboutissants d'un tel acte ?

LE BUT EN BLANC

De toute façon, l'objectif n'était pas d'afficher de bêtes objets 3D d'une platitude propre à tuer de rire un chien errant dépressif, mais de donner les outils permettant de créer ou précalculer toutes sortes d'images, d'animations...
Pardon ? Nous voilà déjà à la moitié de la page ? Que voulez-vous, en garçon bien attentionné, je propose une introduction sans oublier les préliminaires.

FAIS TOURNER

Cela n'aura échapé à personne, la qualité des intertitres oscille entre pauvreté humoristique lacrymogène et rare délicatesse (il dépanne bien, l'adjectif « rare », vous pouvez vérifier au JT : « Un acte d'une rare violence », « Une tempête d'une rare intensité », « Un film - russe -d'une sobriété rare »). Présentement, comment mieux introduire un paragraphe traitant de rotation écrit chez Shap ?

Prenons, sans le violenter, un point M de coordonnées (x,y). On souhaite lui faire subir une gentille rotation d'angle a. Que valent les sympathiques coordonnées (x',y') du nouveau point M' ?

Je vous livre la formule (contrairement aux écrivains qui formulent des livres) :

x* = cos(a)*x - sin(a)*y
y' = sin(a)*x + cos(a)*y

Attention au piège sous BASIC quand on affecte les nouvelles coordonnées au mêmes variables : un fois le « nouvel x » calculé, on n'a plus accès à l'ancien x pour le calcul du nouvel y. il faut introduire une variable intermédiaire, ce qui donnera un truc du genre :

100 temp=COS(a)*x-SIN(a)*y
105y=SIN(a)*x+COS(a)*y
110x=temp

AIDE ARMOIRE

Truc mnémotechnique pour retrouver dans cette formule où sont les sinus, les cosinus, les +, les - : on peut examiner l'effet d'une rotation d'un petit angle a positif (donc dans le sens inverse des aiguilles d'une montre) sur les points P(1,0)etQ(0,1).

Comme a est petit, cos(a) reste proche de 1, tandis que sin(a) est près de 0.

L'abscisse de P', proche de 1, témoigne de x*cos(a)
L'abscisse de Q', négative, témoigne de -y*sin(a)

L'ordonnée de P' , posiiive, témoigne de x*sin(a)
L'ordonnée do Q' , proche de 1, témoigne de y*cos(a)

Je vous l'accorde, ce n'est pas plus évident à retenir que les formules elles-mêmes. Mais tel n'est pas le but de la mnémotechnie : il s'agit plutôt de donner une alternative destinée à confirmer la connaissance acquise par un autre moyen. J'écrirai un livre, un jour, même de nuit.

LE CERCLE DES INITIES

Vous me connaissez, je ne laisse jamais de formules sans au moins une petite justification, même mal formulée (houlà, je n'imaginais pas que l'utilisation prolongée de PROTEXT en noir sur fond gris provoquait cet effet).

Au fait, je ne maintiens le vouvoiement collectif que par habitude, n'étant même pas certain d'avoir encore un lecteur à ce point de l'article.
Le point M de tout à l'heure s'écrit en coordonnées polaires (r,t) où r est la distance par rapport à l'origine, et t l'angle formé avec l'axe des abscisses. On a :

x = r * cos(t)
y = r * sin(t)

Appliquer la rotation d'angle a revient à ajouter a à r. D'où

x'= r * cos(t+a)
y'= r * sin(t+a)

Les formules de trigonométrie donnent :

x = r * ( cos(t)cos(a) - sin(t)sin(a) )
y' = r * ( cos(t)sin(a) + sin(t)cos(a) )

En remplaçant r*cos(t) par x et r*sin(t) par y, on retrouve nos équations de départ.
La justification est loin d'être complète puisqu'il resterait à démontrer les formules trigonométriques employées (ce qui peut se faire géométriquement, par exemple en partant de deux triangles rectangles ayant le côté adjacent en commun). De même, le passage d'un repère à l'autre serait à expliciter plus rigoureusement.

Mais le but était de fournir un nouveau point de vue rendant compte de toute la cohérence des mathématiques. En bref,

vous pouvez passer à la suite sans avoir assimilé ce paragraphe, donné à titre indicatif.
Remarquez que ce principe reste valable en d'autres occasions : nul besoin de comprendre parfaitement une phrase pour passer à la suivante ! L'acquisition de connaissances se fait plus globalement que séquentiellement.

MATRICE T'AIDE

Il existe une façon équivalente de noter ces calculs :

Mais n'allez pas conclure que les matrices se limitent à une simple convention d'écriture. Elles représentent un outil très puissant.
Par exemple, si on souhaite faire subir à un couple de coordonnées une série de transformations (on dit alors qu'on compose), on a le droit de multiplier entre elles les matrices associées à chaque opération, pour obtenir une nouvelle matrice correspondant à l'opération globale finalement réalisée.

Illustration avec la composition de deux rotations, d'angles a et b (voir figure 1). Encore une fois, on applique les formules trigonométriques pour obtenir la matrice équivalente :

Mon cher Watson, nous venons (enfin, surtout moi) de retomber sur un résultat élémentaire et donc intéressant :
La composition de deux rotations de même centre (ici le point d'origine) est une rotation, toujours centrée sur ce
point.

À votre avis, que donne une succession de rotations de centres distincts ?

Et d'ailleurs, comment calculer de telles rotations, non centrées en 0 ?

SANS RANCUNE

À suivre dans cette rubrique : le traçage de belles lignes, un poil de 3D optimisée, la génération de paysages, etc.

Yves Locomot, AMSLIVE n°17

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

Page précédente : AMSLIVE n°16 - les Gros Ports

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

Lien(s):
» Coding » AMSLIVE n°02 - Asm
» Coding » AMSLIVE n°17 - Comment Reagit Tout Crtc
» Coding » AMSLIVE n°14 - Multiplication Saignee a Mort
» Coding » AMSLIVE : La rubriques programmation
» Coding » AMSLIVE n°14 - 3D est-ce l'amour ?
» Coding » AMSLIVE n°06 - Sinus
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 287 millisecondes et consultée 2225 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.