FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Logiciel de planétarium.
Les transformations affines Emptypar Pedro Aujourd'hui à 8:08

» Un autre pense-bête...
Les transformations affines Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Les transformations affines Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Les transformations affines Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Les transformations affines Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Les transformations affines Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Les transformations affines Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Les transformations affines Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Les transformations affines Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Les transformations affines Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Les transformations affines Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Les transformations affines Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Les transformations affines Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Les transformations affines Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Les transformations affines Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
Le Deal du moment :
Code promo Nike : -25% dès 50€ ...
Voir le deal

 

 Les transformations affines

Aller en bas 
4 participants
AuteurMessage
papydall

papydall


Nombre de messages : 7017
Age : 74
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Les transformations affines Empty
MessageSujet: Les transformations affines   Les transformations affines EmptyLun 14 Déc 2015 - 18:15

Quand j’étais en 2ème année Panoramic, j’ai posté un code sur la transformation conforme. C'était ici.
Je poste aujourd'hui un code sur les transformations affines

Rapel :
La transformation conforme conserve localement les angles, alors que les transformations affines conservent le parallélisme.

Code:

rem ============================================================================
rem             Transformations affines
rem                 par Papydall
rem ============================================================================
rem les transformations suivantes sont données avec leurs matrices de transformation
rem Etirement (changement d échelle) selon les axes
rem Rotation autour de l origine
rem Inclinaison le long de l axe des X
rem Inclinaison le long de l axe des Y
rem Déplacement relatif par rapport aux axes X et/ou Y
rem ============================================================================

Init()

Trace_Figure() : ' Tracer la flèche comme figure exemple
input bidon$ : cls

Etirement_Figure(1/4,1) : ' changement d'échelle (1/4 donc rapetissement) selon l'axe X, inchangé selon l'axe Y (1)
Etirement_Figure(2,1)   : ' changement d'échelle (2  donc agrandissement) selon l'axe X, inchangé selon l'axe Y (1)
Etirement_Figure(4,1/3) : ' Agrandissement 4 fois selon l'axe X et rapetissement 1/3 selon l'axe Y
caption 20,"Changement d'échelle selon les axes X et Y"
caption 20,caption$(20) + chr$(13) + string$(30," ") + "<Entree> pour la suite" : input bidon$ : cls

Rotation() : ' Rotation autour de l'origines des axes
caption 20, "<Entree> pour la suite"

Inclinaison_Figure("x",45) : ' Inclinaisons de 45° le long de de l'axe X
caption 20,"Inclinaison le long de l'axe des X de 45°"
caption 20,caption$(20) + chr$(13) + string$(20," ") + "<Entree> pour la suite" : input bidon$ : cls

Inclinaison_Figure("y",60) : ' Inclinaisons de 60° le long de de l'axe Y
caption 20,"Inclinaison le long de l'axe des Y de 60°"
caption 20,caption$(20) + chr$(13) + string$(20," ") + "<Entree> pour la suite" : input bidon$ : cls

Translation_Figure(-3,0) : ' Déplacement relatif par rapport à l'axe X
Translation_Figure(-5,6) : ' déplacement relatif par rapport aux deux axes X et Y
Translation_Figure(-9,-5): ' déplacement relatif par rapport aux deux axes X et Y
caption 20,"Translation de la figure <Entree> pour la suite" : input bidon$ : cls
caption 20,"That's all Folks !" + chr$(13) + "<Entree> pour terminer"
input bidon$
for a = 2*y0 to 10 step -10 : height 0,a : pause 50 : next a
terminate
end
rem ============================================================================
SUB Init()
    dim x0,y0,a,newx,newy,zoom,bidon$
    full_space 0
    picture 10 : full_space 10 : 2d_target_is 10 : print_target_is 10
    font_bold 10 : font_color 10,0,0,255
    font_size 10,12
    x0 = width(10)/2 : y0 = height(10)/2  : ' Coordonée de l'origine
    zoom = 30 : ' facteur d'aggrandissement
    alpha 20 : top 20,50 : left 20,100 : font_bold 20 : font_name 20,"tahoma"
    font_color 20 ,100,50,20 : font_size 20, 14 : color 20,255,255,255
    caption 20,"C'est sur cette flèche que nous allons tester les transformations affines :"
    caption 20,caption$(20) + chr$(13) + "Changement d'échelle selon les axes,"
    caption 20,caption$(20) + chr$(13) + "Rotation autour de l'origine,"
    caption 20,caption$(20) + chr$(13) + "Inclinaison le long des axes,"
    caption 20,caption$(20) + chr$(13) + "Déplacement relatif par rapport aux axes X et/ou Y."
    caption 20,caption$(20) + chr$(13) + string$(30," ") + "<Entree> pour commencer"

    degrees : ' on travaille en degrés
END_SUB
rem ============================================================================
' Tracé d'une flèche comme exemple
SUB Trace_Figure()
    dim_local i,p,x,y
    restore
    read p : read x : read y : 2d_poly_from x0 + zoom * x, y0 - zoom * y
    for i = 2 to p
        read x : read y : 2d_poly_to x0 + zoom * x,y0 - zoom * y
    next i
    2d_pen_color 255,0,0 : 2d_fill_color 255,0,0 : 2d_circle x0,y0,5
    2d_line x0-50,y0, x0+50,y0 : ' tracé de l'axe horizontal
    2d_line x0,y0-50, x0,y0+50 : ' tracé de l'axe vertical
    2d_pen_color 0,0,0
    read x : read y : 2d_flood x0 + zoom * x,y0 - zoom * y , 0,0,0
    2d_fill_color 255,255,255
    print_locate x0 + zoom * (x+2),y0 - zoom * (y-1) : print "Figure exemple"
END_SUB
rem ============================================================================
SUB Rotation()
    caption 20,"Rotation autour de l'origine ..."
    Trace_Figure() : ' on trace une figure , une flèche vers le haut comme exemple
' On va faire tourner cette figure autour de l'origine
    for a = 0 to 2*360 step 10 : ' Faire un tour complet
        cls : 2d_pen_color 255,0,0 : 2d_fill_color 255,0,0 : 2d_circle x0,y0,5
        2d_line x0-50,y0, x0+50,y0 : ' tracé de l'axe horizontal
        2d_line x0,y0-50, x0,y0+50 : ' tracé de l'axe vertical
        2d_pen_color 0,0,0
        Rotation_Figure(a)    : ' Faire tourner la figure
        pause 100
    next a

END_SUB
rem ============================================================================

' Rotation de la flèche de l'exemple autour de l'origine des axes d'un angle en dégrés
' Pour faire tourner une figure, il suffit de faire tourner tous ses points
SUB Rotation_Figure(angle)
    dim_local i,p,x,y
    restore
    read p : read x : read y : Rotation_Point(x,y,angle)
    2d_poly_from x0 + zoom * newx, y0 - zoom * newy
    for i = 2 to p
        read x : read y : Rotation_Point(x,y,angle)
        2d_poly_to x0 + zoom * newx,y0 - zoom * newy
    next i
    read x : read y : Rotation_Point(x,y,angle)
    2d_flood x0 + zoom * newx,y0 - zoom * newy , 0,0,0
    2d_fill_color 255,255,255
    print_locate x0 + zoom * (x+5),y0 - zoom * (y-1)
    print "Rotation de la figure autour de l'origine"
END_SUB
rem ============================================================================
' Rotation autour de l'origine d'un point (x,y) d'un angle tetha en degrés.
' Pour effectuer une rotation à un point il suffit de multiplier ses coordonnées
' par la matrice de rotation suivante :
' cos(tetha)   -sin(tetha)
' sin(tetha)    cos(tetha)
SUB Rotation_Point(x,y,tetha)
    newx =  x * cos(tetha) - y * sin(tetha)
    newy =  x * sin(tetha) + y * cos(tetha)
END_SUB
rem ============================================================================
' Inclinaison de la flèche de l'exemple le long de l'axe des X ou l'axe des Y
' d'un angle a en degrés
' paramètre : axe$ = "X" <---- inclinaison le long de l'axe des X
' paramètre : axe$ = "Y" <---- inclinaison le long de l'axe des Y
SUB Inclinaison_Figure(axe$,a)
    dim_local i,p,x,y
    if upper$(axe$) <> "X" and upper$(axe$) <> "Y"
       message "ERREUR !" + chr$(13) + "Vous avez indiqué un mauvais axe !"
       exit_sub
    end_if
    cls
    restore
    read p : read x : read y : Inclinaison_Point(x,y,axe$,a)
    2d_poly_from x0 + zoom * newx, y0 - zoom * newy
    for i = 2 to p
        read x : read y : Inclinaison_Point(x,y,axe$,a)
        2d_poly_to x0 + zoom * newx,y0 - zoom * newy
    next i
    2d_pen_color 255,0,0 : 2d_fill_color 255,0,0 : 2d_circle x0,y0,5
    2d_line x0-50,y0, x0+50,y0 : ' tracé de l'axe horizontal
    2d_line x0,y0-50, x0,y0+50 : ' tracé de l'axe vertical
    2d_pen_color 0,0,0
    read x : read y : Inclinaison_Point(x,y,axe$,a)
    2d_flood x0 + zoom * newx,y0 - zoom * newy , 0,0,0
    2d_fill_color 255,255,255
    if upper$(axe$) = "X"
       print_locate x0 + zoom * (x+5),y0 - zoom * (y-1)
    else
       print_locate x0 + zoom * (x+3),y0 - zoom * (y+5)
    end_if
    print "Inclinaison le long de l'axe " + upper$(axe$) + " d'un angle de " + str$(a) +"°"
END_SUB
rem ============================================================================
' Les matrices de l'inclinaison sont :
' le long de l'axe des X :
' 1  tan(a)
' 0   1
' Le long de l'axe des Y :
' 1      0
' tan(a) 1
SUB Inclinaison_Point(x,y,axe$,a)

    if upper$(axe$) = "X"
       newx =  x * 1 + y * tan(a)
       newy =  x * 0 + y * 1
    else
       newx = x * 1 + y * 0
       newy = x * tan(a) + y * 1
    end_if

END_SUB

rem ============================================================================
' Etirement de la flèche de l'exemple selon les axes X / Y
' Pour étirer une figure, il suffit d'étirer tous ses points
SUB Etirement_Figure(sx,sy)
    dim_local i,p,x,y
    restore
    read p : read x : read y : Etirer_Point(x,y,sx,sy)
    2d_poly_from x0 + zoom * newx, y0 - zoom * newy
    for i = 2 to p
        read x : read y : Etirer_Point(x,y,sx,sy)
        2d_poly_to x0 + zoom * newx,y0 - zoom * newy
    next i
    2d_pen_color 255,0,0 : 2d_fill_color 255,0,0 : 2d_circle x0,y0,5
    2d_line x0-50,y0, x0+50,y0 : ' tracé de l'axe horizontal
    2d_line x0,y0-50, x0,y0+50 : ' tracé de l'axe vertical
    2d_pen_color 0,0,0
    read x : read y : Etirer_Point(x,y,sx,sy)
    2d_flood x0 + zoom * newx,y0 - zoom * newy , 0,0,0
    2d_fill_color 255,255,255
    print_locate x0 + zoom * (x+4),y0 - zoom * (y-4)
    print "Etirement selon les axes X / Y"
END_SUB
rem ============================================================================
' Etirement d'un point (x,y) selon les axes d'un facteur sx et xy.
' Pour effectuer un étirement à un point il suffit de multiplier ses coordonnées
' par la matrice d'étirement suivante :
' sx  0
' 0   sy
SUB Etirer_Point(x,y,sx,sy)
    newx =  x * sx
    newy =  y * sy
END_SUB
rem ============================================================================
SUB Translation_Figure(tx,ty)
    dim_local i,p,x,y,t$
    restore
    read p : read x : read y : Translater_Point(x,y,tx,ty)
    2d_poly_from x0 + zoom * newx, y0 - zoom * newy
    for i = 2 to p
        read x : read y : Translater_Point(x,y,tx,ty)
        2d_poly_to x0 + zoom * newx,y0 - zoom * newy
    next i
    2d_pen_color 255,0,0 : 2d_fill_color 255,0,0 : 2d_circle x0,y0,5
    2d_line x0-50,y0, x0+50,y0 : ' tracé de l'axe horizontal
    2d_line x0,y0-50, x0,y0+50 : ' tracé de l'axe vertical
    2d_pen_color 0,0,0
    read x : read y : Translater_Point(x,y,tx,ty)
    2d_flood x0 + zoom * newx,y0 - zoom * newy , 0,0,0
    2d_fill_color 255,255,255
    print_locate x0 + zoom * (newx+2),y0 - zoom * (newy-1)
    if tx <> 0 and ty <> 0
       t$ = "aux axes X et Y"
    else
       if tx <> 0 and ty = 0
          t$ = "à l'axe X"
       else
          t$ = "à l'axe Y"
       end_if
    end_if
    print "Déplacement relatif par rapport " + t$
END_SUB
rem ============================================================================
SUB Translater_Point(x,y,tx,ty)
    newx = x + tx
    newy = y + ty
END_SUB
rem ============================================================================
' dessin d'une flèche
data 8    : ' nombre de points de la figure
data 3,0  : ' coordonnées 1er point
data 4,0  : ' coordonnées 2ème point
data 4,3
data 5,3
data 3.5,4.5
data 2,3
data 3,3
data 3,0  : ' coordonnées dernier point qui est le même que le 1er pour boucler la boucle
data 3.5,3 : ' coordonnées du flood
rem ============================================================================

Transformez, transformez, il en restera toujours ! sunny

A+
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Les transformations affines Empty
MessageSujet: Re: Les transformations affines   Les transformations affines EmptyLun 14 Déc 2015 - 19:22

Tu as encore un sujet d'article que tu pourrais illustrer avec de beaux graphiques ....  Wink
Bon sinon à par ça, plein d'applications possibles dont par exemple pour les jeux en dessins vectoriels (mais il y en a des tas d'autres)


Dernière édition par Jicehel le Lun 14 Déc 2015 - 23:06, édité 1 fois
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 7017
Age : 74
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Les transformations affines Empty
MessageSujet: Re: Les transformations affines   Les transformations affines EmptyLun 14 Déc 2015 - 22:05

Je n’ai pas trop d’affinité pour un article sur les transformations affines. Crying or Very sad
Mais merci Jicehel pour le retour. Wink
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Marc

Marc


Nombre de messages : 2466
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

Les transformations affines Empty
MessageSujet: Re: Les transformations affines   Les transformations affines EmptyLun 14 Déc 2015 - 23:26

Super !
Décidément, tu ne t'arrêtes jamais !
Je reste bouche bée !
BRAVO et M E R C I ! ! !
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 7017
Age : 74
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Les transformations affines Empty
MessageSujet: Re: Les transformations affines   Les transformations affines EmptyLun 14 Déc 2015 - 23:44

Les transformations affines Merci_10 Marc37 pour tes encouragements.
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Les transformations affines Empty
MessageSujet: re   Les transformations affines EmptyLun 14 Déc 2015 - 23:45

C' est vrai que çà serait sympa un petit article.
Moi je dis çà mais je dis rien...
... Embarassed
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 7017
Age : 74
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Les transformations affines Empty
MessageSujet: Re: Les transformations affines   Les transformations affines EmptyLun 14 Déc 2015 - 23:49

Les transformations affines Bonjou10
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Les transformations affines Empty
MessageSujet: re   Les transformations affines EmptyLun 14 Déc 2015 - 23:51

Laughing
Revenir en haut Aller en bas
Contenu sponsorisé





Les transformations affines Empty
MessageSujet: Re: Les transformations affines   Les transformations affines Empty

Revenir en haut Aller en bas
 
Les transformations affines
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Mathématiques pour les transformations du plan
» Transformations bijectives d'images: Photomaton et Boulanger

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: