Modules bsp et animate

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.

Modules bsp et animate

Messagepar Romain Janvier » Mercredi 30 Mars 2011, 11:40

Bonjour,

Je suis en train d'essayer de faire une animation où je fais l'intersection d'un plan et d'un pavé droit. Si je ne fais qu'une image tout va bien. Mais si je fais une animation, il n'y a que l'intersection que je rajoute à la main qui est dessinée :

Code: Tout sélectionner
import bsp;
import animate;

settings.tex="pdflatex";
settings.outformat="pdf";

currentprojection=obliqueX;
settings.render=0;
settings.prc=false;
currentlight = nolight;

typedef path3[] shape;

shape operator *(transform3 T, shape p){
  shape os;
  for(path3 g:p) os.push(T*g);
  return os;
}


path3 path(triple[] T){
  path3 P;
  for(triple i:T) P=P--i;
  return P;
}

void addshapes(face[] F, shape[] shp, pen drawpen=currentpen, pen fillpen=white)
{
  for(int i=0; i < shp.length; ++i)
    for(int j=0; j < shp[i].length; ++j) {
      path3 g=shp[i][j];
      picture pic=F.push(g);
      if(fillpen != nullpen) filldraw(pic,project(g),fillpen, drawpen);
      else draw(pic,project(g),drawpen);
      // filldraw(pic,g,currentlight.intensity(F[F.length-1].point)*fillpen, drawpen);
    }
}

real long=2,larg=2,haut=4;
real marge=1;

shape face1,face2,face3,face4,face6,plan;
//dessous
face1=(0,0,0)--(long,0,0)--(long,0,haut)--(0,0,haut)--cycle;
face2=(0,larg,0)--(long,larg,0)--(long,larg,haut)--(0,larg,haut)--cycle;
face3=(0,0,0)--(0,larg,0)--(0,larg,haut)--(0,0,haut)--cycle;
face4=(long,0,0)--(long,larg,0)--(long,larg,haut)--(long,0,haut)--cycle;
//face5=(0,0,0)--(long,0,0)--(long,larg,0)--(0,larg,0)--cycle;
face6=(0,0,haut)--(long,0,haut)--(long,larg,haut)--(0,larg,haut)--cycle;
real h2;

animation Anim;
for(real h1=6;h1>-1;h1-=1)
{
write("on passe a h="+(string)h1);
h2=h1-marge;
plan=(-marge,-marge,h1)--(long+marge,-marge,h1)--(long+marge,larg+marge,h2)--(-marge,larg+marge,h2)--cycle;

triple[] A1;
A1=intersectionpoints((0,0,0)--(0,larg,0)--(0,larg,haut)--(0,0,haut)--cycle,surface(plan));
face[] hidden,visible;
shape[] Shapes;
Shapes.push(face1);
Shapes.push(face2);
Shapes.push(face3);
Shapes.push(face4);
Shapes.push(plan);
Shapes.push(face6);
addshapes(hidden, Shapes, drawpen=linewidth(bp));
addshapes(visible, Shapes, drawpen=dashed, fillpen=nullpen);

picture pic;
size(pic,10cm,0);

if (A1.length >1){
  draw(pic,surface((long,0,0)+A1[1]--(long,0,0)+A1[0]--A1[0]--A1[1]--cycle),lightgreen+opacity(0.2));
  draw(pic,(long,0,0)+A1[1]--(long,0,0)+A1[0]--A1[0]);
  draw(pic,A1[0]--A1[1],dashed);
  pen pdernier=linewidth(bp);
  if (A1[1].z<haut){
    pdernier=dashed;
    }
  draw(pic,A1[1]--(long,0,0)+A1[1],pdernier);
  }
add(pic,hidden);
add(pic,visible);
add(pic.fit(),bbox(xmargin=3mm,invisible));
Anim.add(pic);
//restore();
erase();
};
Anim.movie();


Si je ne mets pas de pic, ca fait pareil. Par contre si j'enleve les rajouts de l'intersection (tous les draw que je fais), alors le pavé et le plan sont bien affichés.

Je ne comprends plus rien...
Romain Janvier
Kilo-utilisateur
 
Messages: 146
Inscription: Lundi 23 Août 2010, 13:57
Statut actuel: Actif et salarié | Enseignant

Publicité

Re: bsp et animate

Messagepar GMaths » Mercredi 30 Mars 2011, 12:36

Pas le temps de tester maintenant, en ce qui me concerne.

Juste une intervention pour rappeler que, quitte à utiliser bsp, il existe cela qui s'y rapporte : http://www.piprime.fr/files/tmp/geoespace.asy (version modifiée par Philippe de ce que l'on trouve sur syracuse/melusine)

Ainsi, ceci :

Code: Tout sélectionner
import geoespace_pi;
defaultbackpen +=linewidth(0);
currentprojection=orthographic(5,2,4);
size(8cm,0);
pave((-1,-1,-1),2,2,3,.9palegreen);
//(partie du plan d'équation x+y+z=3)
insertscene((1.5,-.5,2)--(2.5,0.5,0)--(-.5,2.5,1)--(-.5,.5,3)--cycle,red);
trace();


donne cela :

2011-03-30_133344.png
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Re: Modules bsp et animate

Messagepar Romain Janvier » Mercredi 30 Mars 2011, 15:46

C'est marrant, avec geoespace j'obtenais des tirets qui etaient assez moche. Et comme il ne me tracait pas l'intersection, je ne gagnais pas grand chose par rapport à bsp.

J'ai fait un petit script qui me genere un fichier asy pour chaque iteration de la boucle et je vais concatener tous les pdf pour en faire un seul.

Mais ce n'est pas très pratique...

Edit :
Voici ce que j'ai reussi à faire en concatenant tous mes fichiers pdf.

animation-coupe-pave.gif
animation-coupe-pave.gif (131.97 Kio) Vu 827 fois
Romain Janvier
Kilo-utilisateur
 
Messages: 146
Inscription: Lundi 23 Août 2010, 13:57
Statut actuel: Actif et salarié | Enseignant

Re: Modules bsp et animate

Messagepar GMaths » Mercredi 30 Mars 2011, 16:33

Romain Janvier a écrit:C'est marrant, avec geoespace j'obtenais des tirets qui etaient assez moche.


C'est l'une des raisons justifiant cette version modifiée (par Philippe) de geoespace.asy : l'amélioration des pointillés.

Romain Janvier a écrit:Et comme il ne me tracait pas l'intersection, je ne gagnais pas grand chose par rapport à bsp.

J'ai fait un petit script qui me genere un fichier asy pour chaque iteration de la boucle et je vais concatener tous les pdf pour en faire un seul.

Mais ce n'est pas très pratique...


Effectivement, ce n'est pas très satisfaisant.

Pas le temps de "rentrer" dans ton code maintenant pour essayer de comprendre ce que tu as fait : je ne peux faire que des réponses rapides, désolé.
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Re: Modules bsp et animate

Messagepar Romain Janvier » Mercredi 30 Mars 2011, 18:28

C'est pas grave. De toute facon, il faut que je finisse tout cela pour demain, donc je vais faire avec mon script. Par contre j'aimerai bien comprendre. Je pense que le probleme vient de bsp qui doit creer une image intermediaire pour faire ses calculs et animate ne doit pas très bien gérer cela. Ou alors c'est le addshapes qui pose problème...
Romain Janvier
Kilo-utilisateur
 
Messages: 146
Inscription: Lundi 23 Août 2010, 13:57
Statut actuel: Actif et salarié | Enseignant


Retourner vers Asymptote

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité