Figure à base de cylindre

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.
Ph. Ivaldi

Message non lu par Ph. Ivaldi »

MB a écrit :Merci pour la modification de la fonction.
Avec plaisir.
MB a écrit : Par ailleurs, ce que j'ai utilisé pour les marques d'égalité de longueurs est correct ou il y avait plus simple ? (ou plus propre)
Je n'ai pas trouvé plus simple. Il faut que j'en parle au principal développeur d'Asymptote pour voir s'il peut ajouter cette fonctionnalité, éventuellement utiliser mon code.
MB a écrit :
Ph. Ivaldi a écrit :Une question: comment faites vous pour obtenir de la transparence dans le .png ?
asy -V -f png fichier.asy ne rend pas la transparence.
En fait, je compile toujours en PDF avec Asymptote et j'effectue ensuite la conversion en PNG via la fonction convert d'ImageMagick.
C'est noté, merci.
MB
Administrateur
Administrateur
Messages : 8115
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant

Message non lu par MB »

Ph. Ivaldi a écrit :Il faut peut-être essayer la commande filldraw, quand c'est possible.
Il faudra essayer.
Mais je pense plutôt que c'est l'ordre qu'il faut changer.
Il faudrait à mon avis tracer les contours du cylindre après avec remplis la section.
MB. Rejoignez notre partenaire pCloud et bénéficiez de 10Go de stockage gratuits ou d'une offre premium !
Pas d'aide en message privé. Merci de consulter ce sujet avant de poster votre premier message.
MB
Administrateur
Administrateur
Messages : 8115
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant

Message non lu par MB »

Ph. Ivaldi a écrit :(la suppression de l'anti-aliasing --option +antialias -- réduit le poids me semble-t-il).
J'ai essayé et j'ai pas trop l'impression.

Sinon, voici le code qui permet d'avoir les contours bien noirs.

Code : Tout sélectionner

nitsize(1cm);
import solids;
import math;

currentprojection=orthographic(-50,100,30);

//Draw right angle (MA,MB) in 3D
void drawrightangle(picture pic=currentpicture,
                    triple M, triple A, triple B,
                    real radius,
                    pen p=currentpen,
                    pen fillpen=nullpen,
                    projection P=currentprojection)
{
  p=linejoin(0)+linecap(0)+p;
  transform3 T=shift(-M);
  triple OA=radius/sqrt(2)*unit(T*A),
    OB=radius/sqrt(2)*unit(T*B),
    OC=OA+OB;
  path3 _p=shift(M)*(O--OA--OC--OB--cycle3);
  if (fillpen==nullpen)
    draw(pic, _p, p=p);
  else filldraw(pic, _p, fillpen=fillpen, drawpen=p);
}

real r=4, h=2.5;
real gle=60;
real gleA=20;
transform3 tR=rotate(gle,Z);
transform3 tT=shift((0,0,-h));

triple p0=(0,0,h),
  pA=rotate(gleA,Z)*(0,r,h),
  pF=tR*pA,
  pB=tR*pF,
  pD=tT*pA,
  pC=tT*pB,
  pE=intersectionpoint(p0--pF,pA--pB);

revolution r=cylinder(O,r,h,Z);

fill(pA--pD--pC--pB--cycle3,lightgray+opacity(0.5));

drawrightangle(pE,p0,pB,0.6,fillpen=gray);

dot(Label("$A$",align=NW),pA);
dot(Label("$B$",align=NE),pB);
dot(Label("$C$",align=S),pC);
dot(Label("$D$",align=NW),pD);
dot(Label("$E$",align=S),pE);
dot(Label("$F$",align=S),pF);
dot(Label("$O$",align=N),p0);
dot(Label("$O'$",align=NE),O);

r.draw();

draw(O--p0, dashed);
draw(p0--pB--pF--pA--cycle3^^p0--pF^^pA--pB^^pA--pD);
draw(O--pD--pC--cycle3^^O--p0^^pB--pC, dashed);

typedef void dotmark(picture, pair);
dotmark DotMark(pen p=currentpen)
{
  return new void(picture pic, pair pt)
    {
      dot(pic,pt,p);
    };
}

dotmark NoDotMark(pen p=currentpen)
{
  return new void(picture pic, pair pt){};
}

dotmark DotMark=DotMark();
dotmark NoDotMark=NoDotMark();

markroutine dirmarkroutine(int n, dotmark dotmark=NoDotMark) {
  return new void(picture pic=currentpicture, path g, frame f) {
    if(n == 0) return;
    else
      {
        real width=1/n;
        for(int i=0; i < n; ++i){
          add(pic,
              rotate(degrees(dir(g,arctime(g,(i+.5)*width*arclength(g)))))*f,
              relpoint(g,(i+.5)*width));
          dotmark(pic,relpoint(g,i*width));
        }
        dotmark(pic,relpoint(g,1));
      }
  };
}

picture picturemarkmaker(path g, real n=1,
                         real size=0, real space=0,
                         real angle=0, real hoffset=0, pen p=currentpen)
{
  picture opic;
  int pos=0;
  for(int i=1; i<=n; ++i)
    {
      draw (opic,shift((space*(pos-.5*((n+1)%2)),hoffset))*
            rotate(angle)*
            scale(size/2)*g,p);
      pos=pos+i*(-1)^(i+1);
    }
  return opic;
}

real minstickmarkspace=dotsize(currentpen);
real minstickmarksize=3*dotsize(currentpen);
frame stickpicture(real n=1, real size=0, real space=0,
                   real angle=0, real hoffset=0, pen p=currentpen)
{
  if(size == 0) size=minstickmarksize+2*linewidth(p);
  if(space == 0) space=minstickmarkspace+linewidth(p);
  return picturemarkmaker(N--S,n,size,space,angle,hoffset,p).fit();
}

marker StickMarker(int n=1, int div=1,
                   real size=0, real space=0,
                   real angle=0, real hoffset=0,
                   dotmark dotmark=NoDotMark(), pen p=currentpen)
  {
    return marker(stickpicture(n,size,space,angle,hoffset,p),dirmarkroutine(div,dotmark));
  }

draw(p0--pF,StickMarker(1,2,size=6,angle=-45,DotMark,red));  

shipout(bbox(xmargin=2mm,invisible));
Pièces jointes
Figure2.png
(134.59 Kio) Téléchargé 507 fois
MB. Rejoignez notre partenaire pCloud et bénéficiez de 10Go de stockage gratuits ou d'une offre premium !
Pas d'aide en message privé. Merci de consulter ce sujet avant de poster votre premier message.
MB
Administrateur
Administrateur
Messages : 8115
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant

Message non lu par MB »

Ph. Ivaldi a écrit :
MB a écrit : Par ailleurs, ce que j'ai utilisé pour les marques d'égalité de longueurs est correct ou il y avait plus simple ? (ou plus propre)
Je n'ai pas trouvé plus simple. Il faut que j'en parle au principal développeur d'Asymptote pour voir s'il peut ajouter cette fonctionnalité, éventuellement utiliser mon code.
Oui, c'est surprenant que ça ne soit pas compris dans le module géométrie ça quand même. C'est du même ordre que l'angle droit.
MB. Rejoignez notre partenaire pCloud et bénéficiez de 10Go de stockage gratuits ou d'une offre premium !
Pas d'aide en message privé. Merci de consulter ce sujet avant de poster votre premier message.
Ph. Ivaldi

Message non lu par Ph. Ivaldi »

MB a écrit :
Ph. Ivaldi a écrit :
MB a écrit : Par ailleurs, ce que j'ai utilisé pour les marques d'égalité de longueurs est correct ou il y avait plus simple ? (ou plus propre)
Je n'ai pas trouvé plus simple.
Oui, c'est surprenant que ça ne soit pas compris dans le module géométrie ça quand même. C'est du même ordre que l'angle droit.
Je crois que les anglo-saxons n'utilisent pas ces marques mais je dis peut-être une bêtise.
Quand au paquet geometry.asy, il se réduit à sa plus simple expression; il faut quand même voir que Asymptote est un logiciel encore très jeune.
J'ai dû y ajouter pas mal de chose pour pouvoir réellement faire des figures de géométrie.

Pour la 3D, il a été question dernièrement sur le forum de fournir une sortie "u3d" (pour ceux qui ne connaissent pas:http://www.pdf3d.co.uk/); j'attends ça avec impatience...
Ph. Ivaldi a écrit : Il faut que j'en parle au principal développeur d'Asymptote pour voir s'il peut ajouter cette fonctionnalité, éventuellement utiliser mon code.
Réflexion faite, si ça ne conserne que les "frogs", je n'en parlerais pas; mes macros me suffisent et sont relativement bien faites 8) .
MB
Administrateur
Administrateur
Messages : 8115
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant

Message non lu par MB »

Ph. Ivaldi a écrit :Quand au paquet geometry.asy, il se réduit à sa plus simple expression; il faut quand même voir que Asymptote est un logiciel encore très jeune.
J'ai dû y ajouter pas mal de chose pour pouvoir réellement faire des figures de géométrie.
Oui c'est vrai qu'il est assez court. J'ai vu ton package geometry_pi qui ajoute pas mal de choses en effet.
Ph. Ivaldi a écrit :Pour la 3D, il a été question dernièrement sur le forum de fournir une sortie "u3d" (pour ceux qui ne connaissent pas:http://www.pdf3d.co.uk/); j'attends ça avec impatience...
Ah oui, je ne connaissais pas. Ca semble puissant en effet. :D
Ph. Ivaldi a écrit :
Ph. Ivaldi a écrit : Il faut que j'en parle au principal développeur d'Asymptote pour voir s'il peut ajouter cette fonctionnalité, éventuellement utiliser mon code.
Réflexion faite, si ça ne conserne que les "frogs", je n'en parlerais pas; mes macros me suffisent et sont relativement bien faites 8) .
Bah, ça ne lui couterait pas grand chose de compléter son package geometry ... même si ça ne sert pas à tout le monde. :P
MB. Rejoignez notre partenaire pCloud et bénéficiez de 10Go de stockage gratuits ou d'une offre premium !
Pas d'aide en message privé. Merci de consulter ce sujet avant de poster votre premier message.
Ph. Ivaldi

Message non lu par Ph. Ivaldi »

MB a écrit : Sinon, voici le code qui permet d'avoir les contours bien noirs.

Code : Tout sélectionner

...
fill(pA--pD--pC--pB--cycle3,lightgray+opacity(0.5));
...
dot(Label("$O'$",align=NE),O);
...
Il faut placer le label O' de O avant le remplissage, sinon ça choque...
Chez moi il y a bogue, tous les labels sont grisés et je ne sais pas d'où vient le problème; pas d'Asymptote visiblement.

Que donne \$ gs --version chez vous ?
Chez moi 7.07.1.
MB
Administrateur
Administrateur
Messages : 8115
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant

Message non lu par MB »

Ph. Ivaldi a écrit :Que donne \$ gs --version chez vous ?
Chez moi 7.07.1.
C'est quoi ? (la version de Ghostscript ?)
Si c'est ça, j'ai la 8.54.
MB. Rejoignez notre partenaire pCloud et bénéficiez de 10Go de stockage gratuits ou d'une offre premium !
Pas d'aide en message privé. Merci de consulter ce sujet avant de poster votre premier message.
Ph. Ivaldi

Message non lu par Ph. Ivaldi »

MB a écrit :
Ph. Ivaldi a écrit :Que donne \$ gs --version chez vous ?
Chez moi 7.07.1.
C'est quoi ? (la version de Ghostscript ?)
Si c'est ça, j'ai la 8.54.
C'est bien la version de Ghostscript.
En plus chez moi j'avais la version gs-eps et non la gs-gpl standard.
En installant la version 8.54 tout rentre dans l'ordre:
https://sourceforge.net/forum/forum.php ... _id=409349

En revanche je suis déçu: que l'on ne puisse pas faire de labels transparent, je comprends, mais que la transparence n'affecte pas les labels c'est vraiment dommage...
MB
Administrateur
Administrateur
Messages : 8115
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant

Message non lu par MB »

Ph. Ivaldi a écrit :En revanche je suis déçu: que l'on ne puisse pas faire de labels transparent, je comprends, mais que la transparence n'affecte pas les labels c'est vraiment dommage...
Oui, j'ai vu dans la doc que c'était fait exprès.
On ne peut pas définir de transparence pour les labels ...
MB. Rejoignez notre partenaire pCloud et bénéficiez de 10Go de stockage gratuits ou d'une offre premium !
Pas d'aide en message privé. Merci de consulter ce sujet avant de poster votre premier message.
Ph. Ivaldi

Message non lu par Ph. Ivaldi »

MB a écrit :
Ph. Ivaldi a écrit :En revanche je suis déçu: que l'on ne puisse pas faire de labels transparent, je comprends, mais que la transparence n'affecte pas les labels c'est vraiment dommage...
Oui, j'ai vu dans la doc que c'était fait exprès.
On ne peut pas définir de transparence pour les labels ...
Je crois qu'on ne se comprend pas... :?
Dans le documentation je vois:
Labels are always drawn with an opacity of 1.
Cela ne signifie pas que la couleur du label ne soit pas affectée par un objet opaque(0.5).
Une surface opaque modifie la couleur des objets se trouvant dans cette surface, elle ne modifie pas leur opacité.
Aurais-je loupé quelque chose ?
MB
Administrateur
Administrateur
Messages : 8115
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant

Message non lu par MB »

Ph. Ivaldi a écrit :Je crois qu'on ne se comprend pas... :?
Dans le documentation je vois:
Labels are always drawn with an opacity of 1.
Oui, c'est ce que j'avais vu aussi.
Ph. Ivaldi a écrit :Cela ne signifie pas que la couleur du label ne soit pas affectée par un objet opaque(0.5).
Une surface opaque modifie la couleur des objets se trouvant dans cette surface, elle ne modifie pas leur opacité.
Aurais-je loupé quelque chose ?
Pour moi, cela signifie qu'il n'est pas possible de définir l'opacité d'un label (on ne peut pas le rendre transparent). Par contre, je pense que ça dépend de l'ordre dans lequel se trouve les instructions. Si le label était déjà imprimé lorsqu'on rempli une surface transparente par dessus-ce label, alors sa couleur sera sans doute modifiée. Par contre, si on le place après, la couleur ne sera pas modifiée et on ne pourra pas rendre le label transparent. Après, je ne suis pas certain qu'on se comprenne très bien en effet. Il faudrait faire des tests et donner des exemples de rendu.
MB. Rejoignez notre partenaire pCloud et bénéficiez de 10Go de stockage gratuits ou d'une offre premium !
Pas d'aide en message privé. Merci de consulter ce sujet avant de poster votre premier message.
MB
Administrateur
Administrateur
Messages : 8115
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant

Message non lu par MB »

MB a écrit :Si le label était déjà imprimé lorsqu'on rempli une surface transparente par dessus-ce label, alors sa couleur sera sans doute modifiée.
Après des tests, ça n'est pas le cas.

Code de la figure1 :

Code : Tout sélectionner

unitsize(1cm);

filldraw(circle((0,0),2),blue+opacity(0.6)); 
dot(Label("$O$",align=N),(0,0)); 

shipout(bbox(xmargin=1mm,invisible));
Code de la figure2 :

Code : Tout sélectionner

unitsize(1cm);

dot(Label("$O$",align=N),(0,0)); 
filldraw(circle((0,0),2),blue+opacity(0.6)); 

shipout(bbox(xmargin=1mm,invisible));
Pièces jointes
figure1.png
(4.44 Kio) Téléchargé 424 fois
figure2.png
(4.45 Kio) Téléchargé 424 fois
Dernière modification par MB le mercredi 17 janvier 2007, 23:07, modifié 1 fois.
MB. Rejoignez notre partenaire pCloud et bénéficiez de 10Go de stockage gratuits ou d'une offre premium !
Pas d'aide en message privé. Merci de consulter ce sujet avant de poster votre premier message.
Ph. Ivaldi

Message non lu par Ph. Ivaldi »

MB a écrit :
MB a écrit :Si le label était déjà imprimé lorsqu'on rempli une surface transparente par dessus-ce label, alors sa couleur sera sans doute modifiée.
Après des tests, ça n'est pas le cas.
Voilà, c'est bien ce que je voulais te dire...
C'est un peu décevant hein ?.. surtout dans l'espace.
MB
Administrateur
Administrateur
Messages : 8115
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant

Message non lu par MB »

Ph. Ivaldi a écrit :Voilà, c'est bien ce que je voulais te dire...
C'est un peu décevant hein ?.. surtout dans l'espace.
Oui en effet.
Je ne m'attendais pas à ce genre de comportement. Bizarre. :?
A signaler peut-être.
MB. Rejoignez notre partenaire pCloud et bénéficiez de 10Go de stockage gratuits ou d'une offre premium !
Pas d'aide en message privé. Merci de consulter ce sujet avant de poster votre premier message.
Ph. Ivaldi

Message non lu par Ph. Ivaldi »

MB a écrit :A signaler peut-être.
J'y vais de ce pas...
P.Fradin

Message non lu par P.Fradin »

Bonsoir,

Je viens de faire un test avec pstricks, j'avais une figure (ci-dessous) pour illustrer un théorème vu sur un autre forum (théorème des belges je crois), je repris le fichier pstricks pondu par texgraph pour ajouter à la main la transparence (et un peu de gradient), j'ai mis le label $F_1$ avant l'ellipse transparente, et le label $F_2$ après, on voit effectivement la différence (je n'ai pas essayé avec pgf).
Pièces jointes
belges.png
(46.9 Kio) Téléchargé 395 fois
rebouxo
Modérateur honoraire
Modérateur honoraire
Messages : 6962
Inscription : mercredi 15 février 2006, 13:18
Localisation : le havre

Message non lu par rebouxo »

Heu, je suis sur le c. Y a pas à dire TeXgraph c'est bien.

Depuis que j'utilise TeXgraph, les cours sont mieux. TeXgraph parce que tu le vaux bien. :D :D :D :D

Je vais me reconvertir en publicitaire.

Olivier
MB
Administrateur
Administrateur
Messages : 8115
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant

Message non lu par MB »

En effet, le résultat sous pstricks est plus logique.
Peut être que ce point sera bientôt réglé sous Asymptote. De plus, le développeur aurait aussi pu laisser la possibilité de définir l'opacité sur les labels, même si à priori ça n'est pas très utile.
MB. Rejoignez notre partenaire pCloud et bénéficiez de 10Go de stockage gratuits ou d'une offre premium !
Pas d'aide en message privé. Merci de consulter ce sujet avant de poster votre premier message.
MB
Administrateur
Administrateur
Messages : 8115
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant

Message non lu par MB »

Ph. Ivaldi a écrit :
MB a écrit :A signaler peut-être.
J'y vais de ce pas...
C'est bizarre ce que tu as demandé.
Ca ne correspond pas à ce que j'obtenais (vu que j'utilisais déjà la version 2.54 de GS).
Mais ça paraissait plutôt normal que le label soit grisé non ? (puisqu'il se trouve sous une surface grisée (si j'ai bien compris ton code))
MB. Rejoignez notre partenaire pCloud et bénéficiez de 10Go de stockage gratuits ou d'une offre premium !
Pas d'aide en message privé. Merci de consulter ce sujet avant de poster votre premier message.