#######################################################################################################################################
#                                                                                                                                     #
#         V I S U A L I S A T I O N   D ' U N   T R I P L E T   P Y T H A G O R I C I E N  :                                          #
#                                                                                                                                     #
#                                                                                                                                     #
#         Author of '$xiirv/.PYTH.21.1.$U' :                                                                                          #
#                                                                                                                                     #
#                     Jean-Francois Colonna (LACTAMME, 20130302114425).                                                               #
#                                                                                                                                     #
#######################################################################################################################################

$Z        SETParam            _____Rayon1                   0.005

$Z        setParam            _____Rayon2                   0.010

$Z        setParam            _____Grossissement            2

$Z        setParam            _____Zoom                     1.8

$Z        SET                 Triplet1=3
$Z        SET                 Triplet2=4
$Z        SET                 Triplet3=5
$Z                                      # Definition du triplet pythagoricien {3,4,5}.                                                #

$Z        set                 ChEcK1=`calcul ($Triplet3*$Triplet3)`
$Z        set                 ChEcK2=`calcul ($Triplet1*$Triplet1) + ($Triplet2*$Triplet2)`

$Z        if                  ($ChEcK1 != $ChEcK2) then
$Z                                      # Test introduit le 20130303081048...                                                         #
$Z                            EROR                "Le triplet {$Triplet1,$Triplet2,$Triplet3} n'est pas pythagoricien."
$Z        else
$Z        endif

$Z        SET                 FaCtEuR=0.2
$Z                                      # Facteur de passage des nombres entiers {3,4,5} a des coordonnees dans [0,1].                #

$Z        SET                 Coord_X1=0.9
$Z        SET                 Coord_Y1=0.2
$Z                                      # Premier sommet fixe arbitrairement (en bas et a droite).                                    #

$Z        SET                 Coord_X2=`calcul $Coord_X1 - ($FaCtEuR*$Triplet2)`
$Z        SET                 Coord_Y2=$Coord_Y1
$Z                                      # Deuxieme sommet (en bas et a gauche).                                                       #

$Z        SET                 Coord_X3=$Coord_X2
$Z        SET                 Coord_Y3=`calcul $Coord_Y2 + ($FaCtEuR*$Triplet1)`
$Z                                      # Troisieme sommet (en haut et a gauche).                                                     #


$Z   SET  HyPo2=`calcul ((($Coord_X1)-($Coord_X3))*(($Coord_X1)-($Coord_X3))) + ((($Coord_Y1)-($Coord_Y3))*(($Coord_Y1)-($Coord_Y3)))`

$Z        SET                 TrAnSlAtIoN=0.08

$Z        SET                 Coord_X4=`calcul $Coord_X1 + $TrAnSlAtIoN`
$Z        SET                 LoNgUeUr2=`calcul (($Coord_X4)-($Coord_X3))*(($Coord_X4)-($Coord_X3))`

$Z        if                  (`$xcg/IFGT.01$X n1=$LoNgUeUr2 n2=$HyPo2` == $EXIST) then
$Z                                      # Test introduit le 20130303093808...                                                         #
$Z                            EROR                "La longueur du troisieme brin de la corde est superieure a l'hypothenuse, \c"
$Z                            echo                "il faut donc reduire '"'$TrAnSlAtIoN'"' qui vaut actuellement $TrAnSlAtIoN."

$Z                            SET                 LoNgUeUr2=$HyPo2
$Z                                      # Afin d'eviter des "nan"...                                                                  #
$Z        else
$Z        endif

$Z        set                 Coord_Y4=`calcul $Coord_Y3 - sqrt($HyPo2 - $LoNgUeUr2)`
$Z                                      # Ainsi, on ne referme pas le triangle rectangle, le sommet {$Coord_X4,$Coord_Y4} etant       #
$Z                                      # different du somme de depart {$Coord_X1,Coord_Y1}, bien que proche de lui (via le "+0.08"   #
$Z                                      # ci-dessus...).                                                                              #
$Z                                      #                                                                                             #
$Z                                      # On remarquera que pour '$Coord_Y4' il y a deux solutions '-sqrt(...)' et '+sqrt(...)'       #
$Z                                      # et que c'est evidemment la solution "-" qu'il faut utiliser si l'on veut que le point       #
$Z                                      # {$Coord_X4,$Coord_Y4} soit au voisinage du point {$Coord_X1,$Coord_Y1}...                   #

$Z        alias     Genere    'set      FiLe=\!:1 ; set TrIpLeT=\!:2 ; set vDvA=(\!:3*)                                           ;    \\
$Z                             set      ArGs="premiere=0 lineaire=VRAI"                                                           ;    \\
$Z                             $xci/valeurs_inte$X $ArGs derniere=$TrIpLeT vD=$vDvA[1] vA=$vDvA[2]     >>! $FiLe$COORD_X          ;    \\
$Z                             $xci/valeurs_inte$X $ArGs derniere=$TrIpLeT vD=$vDvA[3] vA=$vDvA[4]     >>! $FiLe$COORD_Y          ;    \\
$Z                             $xci/valeurs_inte$X $ArGs derniere=$TrIpLeT vD=$vDvA[5] vA=$vDvA[6]     >>! $FiLe$ROUGE            ;    \\
$Z                             $xci/valeurs_inte$X $ArGs derniere=$TrIpLeT vD=$vDvA[7] vA=$vDvA[8]     >>! $FiLe$VERTE            ;    \\
$Z                             $xci/valeurs_inte$X $ArGs derniere=$TrIpLeT vD=$vDvA[9] vA=$vDvA[10]    >>! $FiLe$BLEUE            ;    \\
$Z                             unset    FiLe TrIpLeT vDvA'
$Z                                      # Il est imperatif d'avoir "premiere=0" et ainsi, '$TrIpLeT' donne un nombre de "piquets"     #
$Z                                      # et non pas un nombre d'intervalles...                                                       #

$Z        set                 ArGuMeNtS="$K_VIDE"
$Z        set                 ArGuMeNtS="$ArGuMeNtS"" np=1"
$Z        set                 ArGuMeNtS="$ArGuMeNtS"" LISTE_Z=0"
$Z        set                 ArGuMeNtS="$ArGuMeNtS"" isoles=FAUX"
$Z        set                 ArGuMeNtS="$ArGuMeNtS"" chainer=VRAI"
$Z        set                 ArGuMeNtS="$ArGuMeNtS"" ZOOM=$_____Zoom"
$Z        set                 ArGuMeNtS="$ArGuMeNtS"" Lz=100"
$Z        set                 ArGuMeNtS="$ArGuMeNtS"" editer_extrema_hors=FAUX"
$Z        set                 ArGuMeNtS="$ArGuMeNtS"" chiffres=0"

$Z        if                  ($_____Rayon1 == 0) then
$Z                            execRVB   $xci/init$X                                                                                     \
$Z                                                n=$NOIR                                                                               \
$Z                                                R=$xTV/PYTHAGORE%s                                                                    \
$Z                                                                                                                      $formatI
$Z        else
$Z                            FilSTmpB            FPyTh1

$Z                            set                 Triplet0=1

$Z                  Genere    $FPyTh1   $Triplet0 $Coord_X1 $Coord_X4 $Coord_Y1 $Coord_Y4 $BLANC $BLANC  $BLANC $BLANC  $BLANC $BLANC

$Z                            set                 NpointsX=`$CA $FPyTh1$COORD_X | $WCl`
$Z                            set                 NpointsY=`$CA $FPyTh1$COORD_Y | $WCl`
$Z                            set                 Npoints=`$xcg/MIN2.01$X x=$NpointsX y=$NpointsY`

$Z                            $xrv/particule.10$X                                                                                       \
$Z                                                iterations=$Npoints                                                                   \
$Z                                                LISTE_X=$FPyTh1$COORD_X                                                               \
$Z                                                LISTE_Y=$FPyTh1$COORD_Y                                                               \
$Z                                                LISTE_ROUGE=$FPyTh1$ROUGE                                                             \
$Z                                                LISTE_VERTE=$FPyTh1$VERTE                                                             \
$Z                                                LISTE_BLEUE=$FPyTh1$BLEUE                                                             \
$Z                                                points=8                                                                              \
$Z                                                rayon_de_visualisation=$_____Rayon1                                                   \
$Z                                                $ArGuMeNtS                                                                            \
$Z                                                R=$xTV/PYTHAGORE                                                                      \
$Z                                                                                                                      $formatI
$Z                                      # Marquage (sous forme d'un pointille blanc) de la manipulation a faire pour refermer la      #
$Z                                      # corde pythagoricienne afin d'en faire un triangle rectangle {3,4,5}.                        #

$Z                            FilSTmpE            FPyTh1
$Z        endif

$Z        FilSTmpB            FPyTh2

$Z        Genere    $FPyTh2   $Triplet2 $Coord_X1 $Coord_X2 $Coord_Y1 $Coord_Y2 $NOIR  $NOIR        $BLANC $BLANC       $NOIR  $NOIR
$Z        Genere    $FPyTh2   $Triplet1 $Coord_X2 $Coord_X3 $Coord_Y2 $Coord_Y3 $BLANC $BLANC       $NOIR  $NOIR        $NOIR  $NOIR
$Z        Genere    $FPyTh2   $Triplet3 $Coord_X3 $Coord_X4 $Coord_Y3 $Coord_Y4 $NOIR  $NOIR        $NOIR  $NOIR        $BLANC $BLANC

$Z        set                 NpointsX=`$CA $FPyTh2$COORD_X | $WCl`
$Z        set                 NpointsY=`$CA $FPyTh2$COORD_Y | $WCl`
$Z        set                 Npoints=`$xcg/MIN2.01$X x=$NpointsX y=$NpointsY`

$Z        $xrv/particule.10$X                                                                                                           \
$Z                            iterations=$Npoints                                                                                       \
$Z                            LISTE_X=$FPyTh2$COORD_X                                                                                   \
$Z                            LISTE_Y=$FPyTh2$COORD_Y                                                                                   \
$Z                            LISTE_ROUGE=$FPyTh2$ROUGE                                                                                 \
$Z                            LISTE_VERTE=$FPyTh2$VERTE                                                                                 \
$Z                            LISTE_BLEUE=$FPyTh2$BLEUE                                                                                 \
$Z                            Pajuster=VRAI equidistance=VRAI                                                                           \
$Z                            rayon_de_visualisation=$_____Rayon2                                                                       \
$Z                            grossissement=$_____Grossissement                                                                         \
$Z                            fond=VRAI F=$xTV/PYTHAGORE                                                                                \
$Z                            $ArGuMeNtS                                                                                                \
$Z                            R=$_____ImageR                                                                                            \
$Z                                                                                                  $formatI
$Z                                      # Materialisation en couleur de la corde pythagoricienne {3,4,5}.                             #

$Z        FilSTmpE            FPyTh2



Copyright © Jean-François Colonna, 2019-2021.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / Ecole Polytechnique, 2019-2021.