Gestion de la transparence

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.

Gestion de la transparence

Messagepar Fabrice Couvreur » Lundi 05 Décembre 2011, 23:27

Bonsoir,
Dans le code ci-dessous :

c78aac5714e8b9f92a9ade30b7fb4e72.png

Code: Tout sélectionner
import math;
settings.outformat="pdf";
settings.pdfviewer="xpdf";
unitsize(0.5cm,0.5cm);
pair z1=(0,0), z2=(5,0), z3=(5,5), z4=(0,5);
pair centre[]={z1,z2,z3,z4,(z1+z3)/2};
path carre=z1--z2--z3--z4--cycle;
real r=5*sqrt(2)/4;
for (int i=0 ; i<5 ; ++i){
path ci=circle(centre[i],r);
filldraw (ci,darkgray,0.8bp+black);
};
filldraw(carre,lightgray+opacity(0.5),0.8bp+black);

j'aimerais mieux gérer la transparence. En effet, les parties communes (4 quarts de cercle + cercle du centre) sont en gris clair, et le reste du carré doit être en blanc.
Merci.
Fabrice Couvreur
Giga-utilisateur
 
Messages: 601
Inscription: Samedi 18 Août 2007, 00:55

Publicité

Re: Gestion de la transparence

Messagepar GMaths » Mardi 06 Décembre 2011, 00:22

Avec un effet de transparence... ce que tu obtiens est correct.

... mais ce n'est pas de la transparence que tu veux donc. J'y réfléchirai demain... car j'ai encore des copies à corriger avant de me coucher.
Dernière édition par GMaths le Mardi 06 Décembre 2011, 00:45, édité 1 fois.
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Re: Gestion de la transparence

Messagepar GMaths » Mardi 06 Décembre 2011, 00:44

J'ai quand même pris quelques minutes pour y réfléchir :

28cd86bed7dc0ab34115325dfd6b544b.png

Code: Tout sélectionner
import math;
settings.outformat="pdf";
unitsize(0.5cm);
pair z1=(0,0), z2=(5,0), z3=(5,5), z4=(0,5);
pair centre[]={z1,z2,z3,z4,(z1+z3)/2};
path carre=z1--z2--z3--z4--cycle;
real r=5*sqrt(2)/4;
for(int i=0 ; i<5 ; ++i) filldraw(circle(centre[i],r),darkgray,0.8bp+black);
picture fr;
unitsize(fr,0.5cm);
for (int i=0 ; i<5 ; ++i) filldraw (fr,circle(centre[i],r),gray,0.8bp+black);
clip(fr,carre);
add(fr);
Dernière édition par GMaths le Mardi 06 Décembre 2011, 19:01, édité 1 fois.
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Re: Gestion de la transparence

Messagepar maurice » Mardi 06 Décembre 2011, 00:52

Bonsoir, je ma suis fait gratter par Gaétan mais voici quand même ma solution (sans transparence mais avec le carré) :

52db78d84aec1ece3362494cc8763dba.png

Code: Tout sélectionner
//import math;
settings.outformat="pdf";
settings.pdfviewer="xpdf";
unitsize(0.5cm,0.5cm);

pair z1=(0,0), z2=(5,0), z3=(5,5), z4=(0,5);
real r=5*sqrt(2)/4;

void cercle(pair z, real ang1, real ang2, real r=5*sqrt(2)/4, pen stylo1=1bp+black, pen stylo2=gray) {
pair p1=z+r*dir(ang1),
p2=z+r*dir(ang2);
path c1=z--p1--arc(z,p1,p2,CW)--cycle,
c2=z--p1--arc(z,p1,p2,CCW)--cycle;
filldraw(c1, stylo1);
filldraw(c2, stylo2, stylo1);
}

cercle(z1, ang1=0, ang2=90);
cercle(z2, ang1=90, ang2=180);
cercle(z3, ang1=180, ang2=270);
cercle(z4, ang1=270, ang2=0);

filldraw(circle((z1+z3)/2, r), gray, 1bp+black);

path carre=z1--z2--z3--z4--cycle;
draw(carre);


et sans le carré :

11686bc3f55c2e6f3fefad50c56eb3ba.png

Code: Tout sélectionner
//import math;
settings.outformat="pdf";
settings.pdfviewer="xpdf";
unitsize(0.5cm,0.5cm);

pair z1=(0,0), z2=(5,0), z3=(5,5), z4=(0,5);
real r=5*sqrt(2)/4;

void cercle(pair z, real ang1, real ang2, real r=5*sqrt(2)/4, pen stylo1=1bp+black, pen stylo2=gray) {
pair p1=z+r*dir(ang1),
p2=z+r*dir(ang2);
path c1=z--p1--arc(z,p1,p2,CW)--cycle,
c2=z--p1--arc(z,p1,p2,CCW)--cycle;
filldraw(c1, stylo1);
filldraw(c2, stylo2);
}

cercle(z1, ang1=0, ang2=90);
cercle(z2, ang1=90, ang2=180);
cercle(z3, ang1=180, ang2=270);
cercle(z4, ang1=270, ang2=0);

filldraw(circle((z1+z3)/2, r), gray, 1bp+black);

//path carre=z1--z2--z3--z4--cycle;
//draw(carre);


maurice
Asymptote :
----> Démarrage rapide : http://cgmaths.fr/Atelier/Asymptote/Asymptote.html
----> Documentation 3D : http://www.mathco.tuxfamily.org et si ça ne marche pas, essayez la version pdf
maurice
Méga-utilisateur
 
Messages: 399
Inscription: Jeudi 25 Mars 2010, 13:49
Statut actuel: Actif et salarié | Enseignant

Re: Gestion de la transparence

Messagepar Fabrice Couvreur » Mardi 06 Décembre 2011, 15:49

Bonjour,
Merci à Gaëtan et à Maurice pour ces deux solutions (différentes mais élégantes toutes les deux).
Fabrice Couvreur
Giga-utilisateur
 
Messages: 601
Inscription: Samedi 18 Août 2007, 00:55

Re: Gestion de la transparence

Messagepar GMaths » Mercredi 07 Décembre 2011, 10:48

Si on optmise ce que je proposais, cela peut devenir cela, avec une seule boucle :

b537f8c0e3d258f0994cb75fd098d907.png

Code: Tout sélectionner
unitsize(0.5cm);
picture fr; unitsize(fr,0.5cm);
pair z1=(0,0), z2=(5,0), z3=(5,5), z4=(0,5), centre[]={z1,z2,z3,z4,(z1+z3)/2};
path carre=z1--z2--z3--z4--cycle, cercle;
real r=5*sqrt(2)/4;
currentpen=0.8bp+black;
for(int i=0 ; i<centre.length ; ++i){
cercle = circle(centre[i],r);
filldraw(cercle,darkgray); filldraw (fr,cercle,gray);
}
clip(fr,carre);
add(fr);


Je l'ajouterai dans la galerie d'exemples... comme exemple(s) de "clip" et/ou utilisation d'une "frame".

--------

La dernière ligne à changer pour avoir le carré :

06e832de987d7b1ce5fd9d48abea922e.png

Code: Tout sélectionner
unitsize(0.5cm);
picture fr; unitsize(fr,0.5cm);
pair z1=(0,0), z2=(5,0), z3=(5,5), z4=(0,5), centre[]={z1,z2,z3,z4,(z1+z3)/2};
path carre=z1--z2--z3--z4--cycle, cercle;
real r=5*sqrt(2)/4;
currentpen=0.8bp+black;
for(int i=0 ; i<centre.length ; ++i){
cercle = circle(centre[i],r);
filldraw(cercle,darkgray); filldraw (fr,cercle,gray);
}
clip(fr,carre);
add(bbox(fr,blue));


--------

... et on peut mettre en évidence une autre partie :

5a545e5c2ac63ebccb6b49261391ab2c.png

Code: Tout sélectionner
unitsize(0.5cm);
picture fr; unitsize(fr,0.5cm);
pair z1=(0,0), z2=(5,0), z3=(5,5), z4=(0,5), centre[]={z1,z2,z3,z4,(z1+z3)/2};
path carre=z1--z2--z3--z4--cycle, cercle;
real r=5*sqrt(2)/4;
currentpen=0.8bp+black;
for(int i=0 ; i<centre.length ; ++i){
cercle = circle(centre[i],r);
filldraw(cercle,darkgray); filldraw (fr,cercle,gray);
}
clip(fr,shift(1,-.5)*carre);
add(bbox(fr,red));
Dernière édition par GMaths le Mercredi 07 Décembre 2011, 13:23, édité 1 fois.
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Re: Gestion de la transparence

Messagepar GMaths » Mercredi 07 Décembre 2011, 11:24

Bloqué au Lycée, à attendre un parent d'élève... on se distrait comme on peut :

64eed4953a616c0c67f83e187131bbc8.png

Code: Tout sélectionner
size(200);
picture fr;
real a=2, r=a*sqrt(2)/4;
pair z1=(0,0), z2=(a,0), z3=(a,a), z4=(0,a), centre[]={z1,z2,z3,z4,(z1+z3)/2};
path carre=z1--z2--z3--z4--cycle, cercle;
pen col[]={red,red,green,green,blue};
for(int i=0 ; i<centre.length ; ++i) filldraw (fr,circle(centre[i],r),col[i%col.length]);
clip(fr,carre);
int n=4;
for(int i=0; i<n; ++i) for(int j=0; j<n; ++j) add(shift(a*i,a*j)*fr);
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
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 2 invités