Animer une figure

Tout ce qui concerne l'utilisation ou l'installation d'Asymptote.

Modérateur: gdm_asy

Règles du forum
Merci d'éviter le style SMS dans vos messages et de penser à utiliser la fonction Recherche avant de poster un message. Pour joindre des fichiers à vos messages, consulter ce sujet.
> Penser à utiliser les balises Code pour poster du code.

Animer une figure

Messagepar XavteX » Vendredi 13 Avril 2012, 19:25

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);
}
:
XavteX
Kilo-utilisateur
 
Messages: 122
Inscription: Jeudi 13 Janvier 2011, 09:44
Statut actuel: Actif et salarié | Enseignant

Publicité

Re: Animer une figure

Messagepar OG » Vendredi 13 Avril 2012, 21:22

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...
OG
Modérateur
 
Messages: 2261
Inscription: Lundi 12 Mars 2007, 11:20
Localisation: Rouen
Statut actuel: Actif et salarié | Maître de conférence

Re: Animer une figure

Messagepar XavteX » Samedi 14 Avril 2012, 07:44

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...
XavteX
Kilo-utilisateur
 
Messages: 122
Inscription: Jeudi 13 Janvier 2011, 09:44
Statut actuel: Actif et salarié | Enseignant

Re: Animer une figure

Messagepar GMaths » Samedi 14 Avril 2012, 09:41

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-f11/icosaedre-tronque-t180.html#p1362
Changer la valeur de delay en ms si nécessaire.
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Re: Animer une figure

Messagepar XavteX » Samedi 14 Avril 2012, 10:27

:D Incroyable !
Tu es un magicien !
Je vais étudier le code proposé...
Un grand MERCI !
XavteX
Kilo-utilisateur
 
Messages: 122
Inscription: Jeudi 13 Janvier 2011, 09:44
Statut actuel: Actif et salarié | Enseignant

Re: Animer une figure

Messagepar XavteX » Samedi 14 Avril 2012, 10:49

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
XavteX
Kilo-utilisateur
 
Messages: 122
Inscription: Jeudi 13 Janvier 2011, 09:44
Statut actuel: Actif et salarié | Enseignant

Re: Animer une figure

Messagepar GMaths » Samedi 14 Avril 2012, 12:54

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
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Re: Animer une figure

Messagepar GMaths » Samedi 14 Avril 2012, 14:23

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

Image
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Re: Animer une figure

Messagepar OG » Samedi 14 Avril 2012, 19:41

Bonsoir

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

A plus
O.g.
OG
Modérateur
 
Messages: 2261
Inscription: Lundi 12 Mars 2007, 11:20
Localisation: Rouen
Statut actuel: Actif et salarié | Maître de conférence

Re: Animer une figure

Messagepar XavteX » Samedi 14 Avril 2012, 20:00

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 !
XavteX
Kilo-utilisateur
 
Messages: 122
Inscription: Jeudi 13 Janvier 2011, 09:44
Statut actuel: Actif et salarié | Enseignant

Re: Animer une figure

Messagepar OG » Samedi 14 Avril 2012, 20:46

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.
OG
Modérateur
 
Messages: 2261
Inscription: Lundi 12 Mars 2007, 11:20
Localisation: Rouen
Statut actuel: Actif et salarié | Maître de conférence

Re: Animer une figure

Messagepar XavteX » Samedi 14 Avril 2012, 21:00

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:
XavteX
Kilo-utilisateur
 
Messages: 122
Inscription: Jeudi 13 Janvier 2011, 09:44
Statut actuel: Actif et salarié | Enseignant

Re: Animer une figure

Messagepar OG » Samedi 14 Avril 2012, 21:31

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

O.G.
OG
Modérateur
 
Messages: 2261
Inscription: Lundi 12 Mars 2007, 11:20
Localisation: Rouen
Statut actuel: Actif et salarié | Maître de conférence

Re: Animer une figure

Messagepar GMaths » Samedi 14 Avril 2012, 21:32

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
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Re: Animer une figure

Messagepar GMaths » Samedi 14 Avril 2012, 21:36

OG a écrit:je crois que c'est firefox

:shock:
Avec firefox, pas cadre blanc, chez moi, pour les deux gif de cette page.
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Re: Animer une figure

Messagepar OG » Samedi 14 Avril 2012, 21:40

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.
OG
Modérateur
 
Messages: 2261
Inscription: Lundi 12 Mars 2007, 11:20
Localisation: Rouen
Statut actuel: Actif et salarié | Maître de conférence

Re: Animer une figure

Messagepar XavteX » Samedi 14 Avril 2012, 21:46

?? 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
XavteX
Kilo-utilisateur
 
Messages: 122
Inscription: Jeudi 13 Janvier 2011, 09:44
Statut actuel: Actif et salarié | Enseignant

Re: Animer une figure

Messagepar OG » Samedi 14 Avril 2012, 21:57

Chez moi ça ne change pas.
h78.gif
h78.gif (136.93 Kio) Vu 901 fois

Je n'ai pas de blanc autour sur la page mathematex

Et toi ?

O.G.
OG
Modérateur
 
Messages: 2261
Inscription: Lundi 12 Mars 2007, 11:20
Localisation: Rouen
Statut actuel: Actif et salarié | Maître de conférence

Re: Animer une figure

Messagepar XavteX » Samedi 14 Avril 2012, 22:03

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
XavteX
Kilo-utilisateur
 
Messages: 122
Inscription: Jeudi 13 Janvier 2011, 09:44
Statut actuel: Actif et salarié | Enseignant

Re: Animer une figure

Messagepar GMaths » Samedi 14 Avril 2012, 23:02

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é ?
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Suivante

Retourner vers Asymptote

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 3 invités