Draw, vide

Vous lisez 5 fils de discussion
  • Auteur
    Messages
    • #7582
      Hilaire Fernandes
      Participant
      Up
      0
      Down
      ::

      Bonjour,

      Comment expliquer que draw soit incapable d’afficher un texte dont les coordonnées sont calculées et issue d’une matrice.

      \integer{ deltaX = randint(0..10) }
      \integer{ deltaY = randint(0..4) }
      
      :Sommets du losange
      \matrix{ sommets = wims(eval -6 + \deltaX), wims(eval -1 + \deltaY)
      wims(eval -6 + \deltaX), wims(eval -6  + \deltaY)
      wims(eval -3 + \deltaX), wims(eval -2  + \deltaY)
      wims(eval -3 + \deltaX), wims(eval 3  + \deltaY) }
      
      \text{ sommetsPixel = }
      \for { p = 0 to 3 }{
      \text{ sommetsPixel = slib(draw/convpixel \sommets[4 - \p;], 400, 400, -7, 8, -7, 8, 1, pixels) ;
      \sommetsPixel }

      Lorsque j’examine le contenu de la matrice, ce sont des nombres, comme attendu:

      \sommetsPixel => 132,159 ; 132,292 ; 212,186 ; 212,52 ;

      Lorsque j’affiche l’instruction draw elle semble correcte aussi:

      \text{ points = text black, \sommetsPixel[2;] , giant, B
      crosshair \sommetsPixel[1;], black }
      
      \points => text black, 132,292 , giant, B crosshair 132,159 , black

      Le canvas est déclaré comme suit:

      \draw{ 400, 400 }{
      \repere
      \coordonnees
      \points
      }

      Bizarrement si j’utilise la première ligne de la matrice, draw est capable de faire son travail. avec les ligne 2, 3 ou 4 les valeurs ne lui conviennent pas. D’ailleurs dans l’exemple ci-dessus la crois est bien construite.

      Une idée ?

      Merci

    • #7585
      Hilaire Fernandes
      Participant
      Up
      0
      Down
      ::

      Il semble y avoir un truc bizrre:

      ok : \sommetsPixel[2;1,2]

      non ok : \sommetsPixel[2;]

      Bien que dans les deux cas cela affiche le même texte

    • #7586
      bernadette
      Maître des clés
      Up
      0
      Down
      ::

      Je n’ai pas testé mais j’aurais mis

      \matrix{ points = ...}
      ou bien \text{points= ...; ...}
      bref, bien indiquer les lignes.
      de manière à ce qu'il y ait bien un retour à la ligne avant
      crosshair
      
      Bernadette
      
    • #7587
      lemaire
      Participant
      Up
      0
      Down
      ::

      Bonjour,

      On voit dans votre affichage du contenu de la variable sommetsPixel qu’il y a un point-virgule en trop à la fin.

      
      \text{ sommetsPixel = slib(draw/convpixel \sommets[1;], 400, 400, -7, 8, -7, 8, 1, pixels)}
      \for { p = 2 to 4 }{
      \text{ sommetsPixel = \sommetsPixel ; slib(draw/convpixel \sommets[\p;], 400, 400, -7, 8, -7, 8, 1, pixels) }
      }
      

      fonctionne.

      NB : si vous ajoutez au début de la commande draw les instructions xrange et yrange pour définir les coordonnées « mathématiques » des bords de l’image ; par exemple :

      
      \draw{400,400}{xrange -7,8
      yrange -7, 8
      polygon red,\sommets[1;],\sommets[2;],\sommets[3;],\sommets[1;]}
      

      vous n’aurez pas besoin de convertir les coordonnées des points à tracer en pixels.

      • #7588
        Hilaire Fernandes
        Participant
        Up
        0
        Down
        ::

        Oui je sais pour le ; mais est-ce qu’une ligne supplémentaire vide est gênante? Cela ne devrait pas être le cas. Mais comme l’écrit Bernadette j’aurai du utiliser un type matrix, c’est peut-être la cause.

        A Bernadette, je prends note que le type text ne sait pas gérer les retours à la ligne, pour séparer les lignes.

        Ok pour les x/y-range pour éviter les conversions, c’est plutôt une bonne chose. En revanche le script repere ne fonctionne plus lorsqu’il y a des x/y-range 🙁
        Que faire ?

        • Cette réponse a été modifiée le il y a 2 semaines et 5 jours par Hilaire Fernandes.
        • Cette réponse a été modifiée le il y a 2 semaines et 5 jours par Hilaire Fernandes.
    • #7592
      bernadette
      Maître des clés
      Up
      0
      Down
      ::

      Je ne vois pas le script repere … Si tu mettais le script complet, cela serait plus simple.

    • #7598
      Hilaire Fernandes
      Participant
      Up
      0
      Down
      ::

      \text{ repere = slib( draw/repere 400, 400  0, -7, 8, -7, 8, , , red, blue) }

Vous lisez 5 fils de discussion
  • Vous devez être connecté pour répondre à ce sujet.