positionner en rangs et colonnes ################################ Dans ce chapitre, nous allons voir comment positionner des éléments en rangs et colonnes .. figure:: images/colonnes.png calculer colonne et rang ************************ Pour calculer le rang et la colonne d'un élément d'après : * son index * le nombre de colonnes on procède comme suit : .. image:: images/rangs-et-colonnes--calcul.png :width: 400px Appliquons en effet ce calcul sur une grille : .. image:: images/rangs-et-colonnes--illustration.png :width: 400px On peut voir que : * le dividende est constant dans chaque rang * le reste est constant dans chaque colonne calculer les coordonnées ************************ Reprenons le premier schéma : .. figure:: images/colonnes.png Nous pouvons voir ici que : * la ``largeur d'une colonne`` est égale à la ``largeur de la composition`` divisée par ``le nombre de colonnes`` * la position en x d'un élément est égal à : ``largeur d'une colonne`` multiplié par la somme du numéro de colonne + ``0,5`` (la même chose en y avec la hauteur d'une colonne) Application sur After Effects ***************************** prérequis ========= Différents mots-clés nous serons nécéssaires : * ``width`` : largeur de la composition en pixels (fourni par After Effects) * ``index`` : numéro du calque (de 1 à n) définir le nombre de colonnes ============================= On peut définir ce nombre « en dur » directement dans le code, où en ajoutant un calque « controles » avec un effet « options pour expressions ». .. code-block:: javascript // définition "en dur" var nombre_de_colonnes = 4; // depuis un effet pour expression situé sur un calque « contrôle » var nombre_de_colonnes = Math.round( thisComp.layer("controles").effect("Paramètre glissière")("Curseur") ); index → colonne =============== .. code-block:: javascript var colonne = (index - 1) % nombre_de_colonnes; index → rang ============ .. code-block:: javascript var rang = Math.floor( (index - 1) / nombre_de_colonnes ); calculer la largeur d'une colonne ================================= .. code-block:: javascript var largeur_colonne = width / nombre_de_colonnes calculer la marge externe ========================= .. code-block:: javascript var marge_interieure = largeur_colonne / 2; colonne → x =========== .. code-block:: javascript var x = marge_interieure + colonne * largeur_colonne; rang → y ======== .. code-block:: javascript var y = marge_interieure + rang * largeur_colonne; au final ======== .. code-block:: javascript var nombre_de_colonnes = 4; var colonne = (index - 1) % nombre_de_colonnes; var rang = Math.floor( (index - 1) / nombre_de_colonnes ); var largeur_colonne = thisComp.width / nombre_de_colonnes var marge_interieure = largeur_colonne / 2; var x = marge_interieure + colonne * largeur_colonne; var y = marge_interieure + rang * largeur_colonne; [ x, y ] En vidéo ******** .. raw:: html