Page 1 sur 2

Buildcycle

Posté : jeu. 15 avr. 2010, 19:40
par maurice
Bonjour, je n'arrive pas à bien utiliser buildcycle.
Voici mon code :

Code : Tout sélectionner

pair pA,pB,pC,pO,O;
     pA=(0,0);
     pB=(-1,0);
     pC=rotate(60,pB)*pA;
     pO=rotate(60,pA)*pB;
     O=((pA+2*((pB+pC)/2))/3);
path oreille=buildcycle(arc(O,pA,pB),arc(pO,1,120,60));
filldraw(oreille,lightgrey,blue);


lors de la compilation j'obtiens :

[tex] asy Mickey3.asy
/usr/share/asymptote/plain_picture.asy: 1625.11: runtime: non-cyclic path cannot be filled


C'est sans doute une erreur "bête" mais je tourne en rond depuis ...

merci de votre aide

Maurice

Re: Buildcycle

Posté : jeu. 15 avr. 2010, 20:00
par GM
message depuis un tel au pied de l'aiguille du midi

Voir exemples galerie "contours domaines"

Re: Buildcycle

Posté : jeu. 15 avr. 2010, 20:16
par maurice
bon, je vais re-re-regarder les exemples...

merci et bonne ascension

Maurice

Re: Buildcycle

Posté : jeu. 15 avr. 2010, 20:17
par chellier
Il faut spécifier la direction : CCW (counter-clockwise), ou CW (clockwise).
Remplace :

Code : Tout sélectionner

path oreille=buildcycle(arc(O,pA,pB),arc(pO,1,120,60));


par :

Code : Tout sélectionner

path oreille=buildcycle(arc(O,pA,pB,CCW),arc(pO,1,120,60,CCW));

Re: Buildcycle

Posté : jeu. 15 avr. 2010, 20:20
par chellier
Ah et aussi, rajoute quelque chose comme :

Code : Tout sélectionner

size(7cm);

au début, ou tu ne vas pas voir grand chose ;)

Re: Buildcycle

Posté : jeu. 15 avr. 2010, 20:22
par chellier
GM a écrit :message depuis un tel au pied de l'aiguille du midi

:D

Moi, ma femme veut plus que j'emmène mon téléphone en vacances :cry:

Re: Buildcycle

Posté : jeu. 15 avr. 2010, 21:11
par OG
chellier a écrit :
GM a écrit :message depuis un tel au pied de l'aiguille du midi

:D

Moi, ma femme veut plus que j'emmène mon téléphone en vacances :cry:


Pour ma santé mentale (déjà atteinte) il vaut mieux que je n'ai pas accès au web
par un téléphone.
Enfin maintenant tout le monde sait où Gaëtan passe ses vacances !


O.G. qui était au Mt St Michel la semaine dernière (sans Internet)

Re: Buildcycle

Posté : ven. 16 avr. 2010, 18:28
par maurice
Bonjour,

quand j'ajoute les CCW,
j'obtiens ce que je ne veux pas Mickey3.eps

Alors que je veux remplir la zone de Mickey.eps

Avez-vous des idées ?

Re: Buildcycle

Posté : ven. 16 avr. 2010, 19:44
par OG
Bonsoir

Pourrais-tu donner l'ensemble du code ?
Si j'ai bien compris tu veux remplir les oreilles et la tête (amputée du grand disque) ?

O.G.

Re: Buildcycle

Posté : ven. 16 avr. 2010, 20:00
par maurice
Bonjour, voici le code, c'est pour construire une figure fractale --> les oreilles de Mickey :

j'aimerais que la figure sois "pleine" :

Code : Tout sélectionner

//Fractales: Les oreilles de Mickey avec asymptote 1.92

import geometry;

//Taille de l'image
size(10cm,0);

void mickey(path p, pair centre, pair O, int n, pen stylo=black) {
       path image, im1, im2;
       transform h=scale(1/sqrt(3),centre);
       image=h*p;
       path oreille1=rotate(-60,O)*image;
       path oreille2=rotate(60,O)*image;
       draw(oreille1);
       draw(oreille2);
       if (n>0) {
                mickey(oreille1, rotate(-60,O)*centre, rotate(-60,O)*(h*O), n-1,stylo);
                mickey(oreille2, rotate(60,O)*centre, rotate(60,O)*(h*O), n-1, stylo);
       }
       else {
            //path oreille1=rotate(-60,O)*image;
            //path oreille2=rotate(60,O)*image;
            draw(oreille1);
            draw(oreille2);
       }
}

//Triangles de départ
pair pA,pB,pC,pO,O;
     pA=(0,0);
     pB=(-1,0);
     pC=rotate(60,pB)*pA;
     pO=rotate(60,pA)*pB;
     O=((pA+2*((pB+pC)/2))/3);
     
//dot("$A$",pA,N);
//dot("$B$",pB,S);
//dot("$C$",pC,W);
//dot("$O'$",pO,E);
//dot("$O$",O,SW);

//draw(arc(O,pA,pB));
//draw(arc(pO,pA,pB));
path oreille=(arc(O,pA,pB)--arc(pO,1,120,60));
draw(oreille);
//path oreille=bulidcycle(arc(O,pA,pB,CCW),arc(pO,1,120,60,CCW));  //C'Est la le problème
//filldraw(oreille,lightgrey,blue);


//Définition de l'homothétie
real k=(sqrt(3))/3;
pair centre=((O-k*pO)/(1-k));
//dot("$\Omega$",centre,N);
transform h=scale(k,centre);

//Récurssion  n=0 pour les oreilles simples
mickey(oreille,centre,O,1,blue);

// Ajout d'un cadre, distant des bords de l'image de 3mm
shipout(bbox(5mm,white));


Pour la figure de départ, qui donne la construction :

Code : Tout sélectionner

//Fractales: Les oreilles de Mickey avec asymptote 1.92

import geometry;

//Taille de l'image
size(10cm,0);

//Triangles de départ
pair pA,pB,pC,pO,O;
     pA=(0,0);
     pB=(-1,0);
     pC=rotate(60,pB)*pA;
     pO=rotate(60,pA)*pB;
     O=((pA+2*((pB+pC)/2))/3);
     
dot("$A$",pA,E);
dot("$B$",pB,W);
dot("$C$",pC,N);
dot("$O'$",pO,E);
dot("$O$",O,SW);

triangle TRI1=triangle(pA,pB,pC);

draw(TRI1);
draw(pA--pO--pB);

draw(circumcircle(TRI1));
draw(circle(pO,1));


Voila.

Merci

Maurice

PS : le blue de mickey(oreille,centre,O,1,blue); fait du noir (j'ai essayé avec red, c'est noir aussi, ...)