Animer une figure

Tout ce qui concerne le langage Asymptote. Ce langage est utilisable sur le forum via les balises asy.
[participation réservée aux utilisateurs inscrits]
Règles du forum
Merci de soigner la rédaction de vos messages et de consulter ce sujet avant de poster. Pensez également à utiliser la fonction recherche du forum.
XavteX

Animer une figure

Message non lu par XavteX »

Bonjour,

Je souhaiterais transformer la figure suivante (in Gallery du site Asymptote) en gif animé avec le module animate. Que faut-il ajouter au code ? Est-ce envisageable ?

Merci de vos bons conseils.

Code : Tout sélectionner

import graph3;

size(200);

defaultrender.merge=true;

real c=(1+sqrt(5))/2;

triple[] z={(c,1,0),(-c,1,0),(-c,-1,0),(c,-1,0)};
triple[] x={(0,c,1),(0,-c,1),(0,-c,-1),(0,c,-1)};
triple[] y={(1,0,c),(1,0,-c),(-1,0,-c),(-1,0,c)};

triple[][] Q={
  {(c,1,0),(1,0,-c),(0,c,-1),(0,c,1),(1,0,c),(c,-1,0)},
  {(-c,1,0),(0,c,1),(0,c,-1),(-1,0,-c),(-c,-1,0),(-1,0,c)},
  {(-c,-1,0),(-c,1,0),(-1,0,-c),(0,-c,-1),(0,-c,1),(-1,0,c)},
  {(c,-1,0),(c,1,0),(1,0,c),(0,-c,1),(0,-c,-1),(1,0,-c)},
  {(0,c,1),(0,c,-1),(-c,1,0),(-1,0,c),(1,0,c),(c,1,0)},
  {(0,-c,1),(0,-c,-1),(-c,-1,0),(-1,0,c),(1,0,c),(c,-1,0)},
  {(0,-c,-1),(0,-c,1),(c,-1,0),(1,0,-c),(-1,0,-c),(-c,-1,0)},
  {(0,c,-1),(0,c,1),(c,1,0),(1,0,-c),(-1,0,-c),(-c,1,0)},
  {(1,0,c),(-1,0,c),(0,-c,1),(c,-1,0),(c,1,0),(0,c,1)},
  {(1,0,-c),(-1,0,-c),(0,-c,-1),(c,-1,0),(c,1,0),(0,c,-1)},
  {(-1,0,-c),(1,0,-c),(0,c,-1),(-c,1,0),(-c,-1,0),(0,-c,-1)},
  {(-1,0,c),(1,0,c),(0,c,1),(-c,1,0),(-c,-1,0),(0,-c,1)}
};

real R=abs(interp(Q[0][0],Q[0][1],1/3));

triple[][] P;
for(int i=0; i < Q.length; ++i) {
  P[i]=new triple[] ;
  for(int j=0; j < Q[i].length; ++j) {
    P[i][j]=Q[i][j]/R;
  }
}

for(int i=0; i < P.length; ++i) {
  for(int j=1; j < P[i].length; ++j) {
    triple C=P[i][0];
    triple A=P[i][j];
    triple B=P[i][j % 5+1];
    triple[] sixout=new
      triple[] {interp(C,A,1/3),interp(C,A,2/3),interp(A,B,1/3),interp(A,B,2/3),
                interp(B,C,1/3),interp(B,C,2/3)};
    triple M=(sum(sixout))/6;
    triple[] sixin=sequence(new triple(int k) {
        return interp(sixout[k],M,0.1);
      },6);
    draw(surface(reverse(operator--(...sixout)--cycle)^^
                 operator--(...sixin)--cycle,planar=true),magenta);
  }
}

for(int i=0; i < P.length; ++i) {
  triple[] fiveout=sequence(new triple(int k) {
      return interp(P[i][0],P[i][k+1],1/3);
    },5);
  triple M=(sum(fiveout))/5;
  triple[] fivein=sequence(new triple(int k) {
      return interp(fiveout[k],M,0.1);
    },5);
  draw(surface(reverse(operator--(...fiveout)--cycle)^^
               operator--(...fivein)--cycle,planar=true),cyan);
}
:
OG
Modérateur spécialisé
Modérateur spécialisé
Messages : 2293
Inscription : lundi 12 mars 2007, 11:20
Localisation : Rouen

Re: Animer une figure

Message non lu par OG »

Bonsoir

Je n'ai pas regardé ce que donnait la figure. Au pifomètre, je dirai que oui
cela sera peut-être très/trop lourd.
Quelle animation ici veux-tu faire ?

O.G.

edit : j'avais fait jadis une sphère avec un chemin dessiné sur cette sphère le tout animé
mais je viens de voir que ça ne compile plus. C'est du au modifications du module solids depuis...
XavteX

Re: Animer une figure

Message non lu par XavteX »

Je voudrais la faire tourner lentement sur elle même.
Le code permet d'obtenir une figure 3D manipulable donc je me dis que c'est peu-être possible...
GMaths
Utilisateur chevronné
Utilisateur chevronné
Messages : 2042
Inscription : lundi 01 octobre 2007, 10:20

Re: Animer une figure

Message non lu par GMaths »

Bonjour,
XavteX a écrit :Je voudrais la faire tourner lentement sur elle même.
Le code permet d'obtenir une figure 3D manipulable donc je me dis que c'est peu-être possible...
Je l'ai peut-être faite tourner trop lentement : http://asy.gmaths.net/forum/animations- ... html#p1362
Changer la valeur de delay en ms si nécessaire.
XavteX

Re: Animer une figure

Message non lu par XavteX »

:D Incroyable !
Tu es un magicien !
Je vais étudier le code proposé...
Un grand MERCI !
XavteX

Re: Animer une figure

Message non lu par XavteX »

Je souhaite encore changer la couleur du fond :

Code : Tout sélectionner

shipout(bbox(0.1cm,0.1cm,Fill(154666)));
modifie la couleur du cadre extérieur de l'image mais je veux changer la couleur d'arrière plan !
ça ne doit pas être très compliqué mais je ne connais pas la commande !

Merci
GMaths
Utilisateur chevronné
Utilisateur chevronné
Messages : 2042
Inscription : lundi 01 octobre 2007, 10:20

Re: Animer une figure

Message non lu par GMaths »

XavteX a écrit :Je vais étudier le code proposé...
Une info : j'ai ajouté la sphère circonscrite... invisible... pour avoir une "box" d'une taille fixe et éviter un sautillement de l'animation qui était induit par des hauteurs d'images différentes, quand le volume tourne.
XavteX a écrit :ça ne doit pas être très compliqué mais je ne connais pas la commande !
Bein en fait si, cela l'est : je crois bien, même, qu'asymptote (limitation d'asymptote et/ou du format prc ?) ne le permet pas.

Mais, comme la conversion en gif, est confiée à la fonction convert d'ImageMagick, on peut ruser en lui passant les bonnes options :

Essaye ceci :

Code : Tout sélectionner

A.movie(delay=100,options=" -fill yellow -opaque white ");
pour obtenir cela :

Image
GMaths
Utilisateur chevronné
Utilisateur chevronné
Messages : 2042
Inscription : lundi 01 octobre 2007, 10:20

Re: Animer une figure

Message non lu par GMaths »

Une version totalement différente de l'icosaèdre tronqué :

Image
OG
Modérateur spécialisé
Modérateur spécialisé
Messages : 2293
Inscription : lundi 12 mars 2007, 11:20
Localisation : Rouen

Re: Animer une figure

Message non lu par OG »

Bonsoir

Pour une fois que j'allais répondre :)
Enfin j'étais à la journée Gutenberg.

A plus
O.g.
XavteX

Re: Animer une figure

Message non lu par XavteX »

Une dernière chose. Lorsque j'ouvre le fichier obtenu l'image est encore encadré d'un bandeau blanc même si l'arrière plan est bien dans la couleur souhaitée. L'image est donc un peu plus large que la figure elle même et se trouve encadrée d'un cadre blanc...

Merci beaucoup !
OG
Modérateur spécialisé
Modérateur spécialisé
Messages : 2293
Inscription : lundi 12 mars 2007, 11:20
Localisation : Rouen

Re: Animer une figure

Message non lu par OG »

J'ai testé le code de Gaëtan avec l'ajout de l'instruction "fill yellow -opaque white"
et je n'ai pas en gif de blanc tout autour ?
Au passage je confirme qu'actuellement le moteur de rendu OpenGL ne permet pas d'avoir un fond coloré,
la question a été posée sur le forum d'asymptote.

O.G.
XavteX

Re: Animer une figure

Message non lu par XavteX »

Le fond est bien coloré mais lorsque j'ouvre le fichier dans firefox (l'objectif est d'insérer l'image dans une page HTML) il y a un cadre autour qui n'est pas joli.
Les animation du site de P. Ivaldi sont également entourés d'un cadre blanc...
Je cherche dans les options de Convert Image Magick...

:shock:
OG
Modérateur spécialisé
Modérateur spécialisé
Messages : 2293
Inscription : lundi 12 mars 2007, 11:20
Localisation : Rouen

Re: Animer une figure

Message non lu par OG »

je crois que c'est firefox, avec chromium pas de blanc (quand j'ouvre un nouvel onglet pour le gif)

O.G.
GMaths
Utilisateur chevronné
Utilisateur chevronné
Messages : 2042
Inscription : lundi 01 octobre 2007, 10:20

Re: Animer une figure

Message non lu par GMaths »

XavteX a écrit :Les animation du site de P. Ivaldi sont également entourés d'un cadre blanc...
Celles que tu vois en ligne...
... ou une animation que tu as essayé de compiler ? laquelle ?
XavteX a écrit :Je cherche dans les options de Convert Image Magick...
Pour info : j'ai utilisé la dernière version d'ImageMagick (et donc de convert).
GMaths
Utilisateur chevronné
Utilisateur chevronné
Messages : 2042
Inscription : lundi 01 octobre 2007, 10:20

Re: Animer une figure

Message non lu par GMaths »

OG a écrit :je crois que c'est firefox
:shock:
Avec firefox, pas cadre blanc, chez moi, pour les deux gif de cette page.
OG
Modérateur spécialisé
Modérateur spécialisé
Messages : 2293
Inscription : lundi 12 mars 2007, 11:20
Localisation : Rouen

Re: Animer une figure

Message non lu par OG »

GMaths a écrit :
OG a écrit :je crois que c'est firefox
:shock:
Avec firefox, pas cadre blanc, chez moi, pour les deux gif de cette page.
moi non plus mais si j'ouvre le gif du style file://.. alors cadre blanc (pas sous chrome).
Il faut donc plutôt voir du côté du html chez xavtex

O.G.
XavteX

Re: Animer une figure

Message non lu par XavteX »

?? Voici mon code le fond est plus sombre :

Code : Tout sélectionner

   settings.outformat="gif";
    settings.prc=false;
    import animate;
    import graph3;
    defaultrender.merge=true;

    size(78,78);

    animation A;

    real c=(1+sqrt(5))/2;

    triple[] z={(c,1,0),(-c,1,0),(-c,-1,0),(c,-1,0)};
    triple[] x={(0,c,1),(0,-c,1),(0,-c,-1),(0,c,-1)};
    triple[] y={(1,0,c),(1,0,-c),(-1,0,-c),(-1,0,c)};

    triple[][] Q={
      {(c,1,0),(1,0,-c),(0,c,-1),(0,c,1),(1,0,c),(c,-1,0)},
      {(-c,1,0),(0,c,1),(0,c,-1),(-1,0,-c),(-c,-1,0),(-1,0,c)},
      {(-c,-1,0),(-c,1,0),(-1,0,-c),(0,-c,-1),(0,-c,1),(-1,0,c)},
      {(c,-1,0),(c,1,0),(1,0,c),(0,-c,1),(0,-c,-1),(1,0,-c)},
      {(0,c,1),(0,c,-1),(-c,1,0),(-1,0,c),(1,0,c),(c,1,0)},
      {(0,-c,1),(0,-c,-1),(-c,-1,0),(-1,0,c),(1,0,c),(c,-1,0)},
      {(0,-c,-1),(0,-c,1),(c,-1,0),(1,0,-c),(-1,0,-c),(-c,-1,0)},
      {(0,c,-1),(0,c,1),(c,1,0),(1,0,-c),(-1,0,-c),(-c,1,0)},
      {(1,0,c),(-1,0,c),(0,-c,1),(c,-1,0),(c,1,0),(0,c,1)},
      {(1,0,-c),(-1,0,-c),(0,-c,-1),(c,-1,0),(c,1,0),(0,c,-1)},
      {(-1,0,-c),(1,0,-c),(0,c,-1),(-c,1,0),(-c,-1,0),(0,-c,-1)},
      {(-1,0,c),(1,0,c),(0,c,1),(-c,1,0),(-c,-1,0),(0,-c,1)}
    };

    real R=abs(interp(Q[0][0],Q[0][1],1/3));

    triple[][] P;
    for(int i=0; i < Q.length; ++i) {
      P[i]=new triple[] ;
      for(int j=0; j < Q[i].length; ++j) {
        P[i][j]=Q[i][j]/R;
      }
    }

    for (int k=0; k<180; k+=5) {
    transform3 T=rotate(-degrees(2pi*k/360),Z);

    for(int i=0; i < P.length; ++i) {
      for(int j=1; j < P[i].length; ++j) {
        triple C=P[i][0];
        triple A=P[i][j];
        triple B=P[i][j % 5+1];
        triple[] sixout=new
          triple[] {interp(C,A,1/3),interp(C,A,2/3),interp(A,B,1/3),interp(A,B,2/3),
                    interp(B,C,1/3),interp(B,C,2/3)};
        triple M=(sum(sixout))/6;
        triple[] sixin=sequence(new triple(int k) {
            return interp(sixout[k],M,0.1);
          },6);
        draw(T*surface(reverse(operator--(...sixout)--cycle)^^
                     operator--(...sixin)--cycle,planar=true),orange);
      }
    }

    for(int i=0; i < P.length; ++i) {
      triple[] fiveout=sequence(new triple(int k) {
          return interp(P[i][0],P[i][k+1],1/3);
        },5);
      triple M=(sum(fiveout))/5;
      triple[] fivein=sequence(new triple(int k) {
          return interp(fiveout[k],M,0.1);
        },5);
      draw(T*surface(reverse(operator--(...fiveout)--cycle)^^
                   operator--(...fivein)--cycle,planar=true),yellow);
    }
    draw(unitsphere,nullpen);
    A.add();
    erase();
    }
   A.movie(delay=100,options="-fill #154464 -opaque white");
Merci de me dire si toujours pas de cadre avec firefox...

XH
OG
Modérateur spécialisé
Modérateur spécialisé
Messages : 2293
Inscription : lundi 12 mars 2007, 11:20
Localisation : Rouen

Re: Animer une figure

Message non lu par OG »

Chez moi ça ne change pas.
h78.gif
h78.gif (136.93 Kio) Consulté 3503 fois
Je n'ai pas de blanc autour sur la page mathematex

Et toi ?

O.G.
XavteX

Re: Animer une figure

Message non lu par XavteX »

Effectivement... Je ne comprend pas... Je compile avec Notepad++ asy.exe -V ... Cela n'a rien à voir ???
Moi j'ai un cadre blanc dans le gif à la sortie ! :cry:
XH
GMaths
Utilisateur chevronné
Utilisateur chevronné
Messages : 2042
Inscription : lundi 01 octobre 2007, 10:20

Re: Animer une figure

Message non lu par GMaths »

XavteX a écrit :Effectivement... Je ne comprend pas... Je compile avec Notepad++ asy.exe -V ... Cela n'a rien à voir ???
Moi j'ai un cadre blanc dans le gif à la sortie ! :cry:
Rien à voir avec Notepad++, puisque je l'utilise.

Faute d'idée, je te suggère de tout vérifier point par point.
Notamment, pour ce qui est de la version de convert, vérifie la version employée :
Image
... et pour le fichier animation.asy (qui fait appel à convert, en lui passant des options), je suppose que tu tu as le plus récent fourni avec Asymptote et que tu ne l'as pas changé ?
Répondre
  • Sujets similaires
    Réponses
    Vues
    Dernier message