Figure à base de cylindre
-
- Administrateur
- Messages : 8058
- Inscription : samedi 28 mai 2005, 14:23
- Statut actuel : Enseignant
- Contact :
Figure à base de cylindre
Je souhaite réaliser la figure suivante avec Asymptote (mais pour l'instant j'ai du mal à utiliser la fonction cylinder).
-
- Administrateur
- Messages : 8058
- Inscription : samedi 28 mai 2005, 14:23
- Statut actuel : Enseignant
- Contact :
Ca m'intéresse toujours ! :DP.Fradin a écrit :Je sais que tu cherches à le faire avec Asymptote, mais est-ce que la version TeXgraph t'interesse?
(de même que la version geoPyX d'ailleurs).
En passant, geoPyX fait vraiment de belles choses (comme ça par exemple).
Re,
Pour une version TeXgraph, le code (toujours dans un élément graphique utilisateur):
Il s'agit d'une figure dans l'espace, c'est à dire qu'on peut la faire pivoter dans le logiciel.
Pour une version TeXgraph, le code (toujours dans un élément graphique utilisateur):
Code : Tout sélectionner
[ $R:=4, $h:=1.25, $O:=Origin+h*vecK, $O':=Origin-h*vecK,
HideStyle:=dashed, Width:=6, NbPoints:=75, DotStyle:=bigdot,
Dcylindre(O', 2*h*vecK, R, 0),
$A:=[R*exp(-i*pi/6), h], $B:=[R*exp(i*pi/2),h], $C:=B-2*h*vecK,
$D:=A-2*h*vecK, $F:=[R*exp(i*pi/6),h], $E:=(O+F)/2,
Ligne( Proj3D( [A, B, O, A, D, jump, O, F]), 0),
FillStyle:=full, FillColor:=black,
Ligne( [Get(angleD(Proj3D(B), Proj3D(E), Proj3D(O), 0.3)), Proj3D(E)],1),
FillStyle:=none,
markseg(Proj3D(O), Proj3D(E), 2,0.1,0.3), markseg(Proj3D(E), Proj3D(F), 2,0.1,0.3),
LineStyle:= dashed,
Ligne( Proj3D( [ D, C, O',D, jump, C, B, jump, O, O']), 0),
LabelDot(Proj3D(O),"$O$","N",1), LabelDot(Proj3D(O'),"$O'$","NE",1),
LabelDot(Proj3D(A),"$A$","NO",1), LabelDot(Proj3D(B),"$B$","N",1),
LabelDot(Proj3D(C),"$C$","S",1), LabelDot(Proj3D(D),"$D$","NO",1),
LabelDot(Proj3D(F),"$F$","NE",1), LabelDot(Proj3D(E),"$E$","S",1) ]
- Pièces jointes
-
- cylindre.png
- (23.03 Kio) Téléchargé 947 fois
Salut les fêlés du dessin
...et excusez-moi, j'ai râté la discussion. Comme geoPyX ne gêre pas la 3d, je peux le faire en 2d à coups d'ellipses et de quadrilatères, mais ce ne serait que de la triche, et je préfère attendre que tout cela soit implémenté plus tard.
En tout cas, chapeau à Patrick pour la version TeXgraph, c'est magnifique ! Tiens, pendant que j'y suis Patrick : quelles-ont été tes lectures pour la gestion de la 3d ?
Pour l'exemple des cocottes en papier, c'est vraiment très simple. La transparence y joue beaucoup, mais il y a un bug dans PyX que les auteurs doivent régler avant que ce ne soit totalement au point (on ne peut pas tracer le contour des objects autrement qu'en mode transparent, pas très gênant mais quand même un peu pour moi).
...et excusez-moi, j'ai râté la discussion. Comme geoPyX ne gêre pas la 3d, je peux le faire en 2d à coups d'ellipses et de quadrilatères, mais ce ne serait que de la triche, et je préfère attendre que tout cela soit implémenté plus tard.
En tout cas, chapeau à Patrick pour la version TeXgraph, c'est magnifique ! Tiens, pendant que j'y suis Patrick : quelles-ont été tes lectures pour la gestion de la 3d ?
Pour l'exemple des cocottes en papier, c'est vraiment très simple. La transparence y joue beaucoup, mais il y a un bug dans PyX que les auteurs doivent régler avant que ce ne soit totalement au point (on ne peut pas tracer le contour des objects autrement qu'en mode transparent, pas très gênant mais quand même un peu pour moi).
Salut, entre fêlés on se dit toujours salut!kib2 a écrit :Salut les fêlés du dessin
Rien de particulier, quelques trucs sur le net, comme l'algorithme du peintre. En fait TeXgraph ne sait pas faire grand-chose en 3D, il a seulement deux commandes: Surface (comme son nom l'indique) et Proj3D (qui calcule les projetés d'une liste de points de l'espace sur l'écran). Tout le reste (Axes3D, gestion des polyèdres avec arêtes cachées ...) ce sont des macros écrites dans le langage de TeXgraph et chargées au démarrage. Mais il n'y a pas de gestion d'ensemble des parties cachées de la scène comme avec OpenGL. Quant aux point de l'espace ils ne necéssitent pas de type particulier dans le logiciel car TeXgraph ne connait qu'un seul type: les listes de complexes, donc un point de l'espace de coordonnées (x,y,z) c'est: [x+i*y, z], de même le logiciel sait ajouter des listes, les multiplier par un nombre etc...Tiens, pendant que j'y suis Patrick : quelles-ont été tes lectures pour la gestion de la 3d ?
En parlant de geoPyX, peux-tu (peut-être en privé) me dire ce que je dois faire du fichier source que tu as donné sur un autre fil pour l'essayer? j'aurais également quelques questions sur Python (que je ne connais pas), est-il raisonnable d'écrire une interface graphique comme TeXgraph en Python, car c'est un langage interprêté non?mais il y a un bug dans PyX que les auteurs doivent régler avant que ce ne soit totalement au point (on ne peut pas tracer le contour des objects autrement qu'en mode transparent, pas très gênant mais quand même un peu pour moi).
Re: [Asymptote] Figure à base de cylindre
Salut,MB a écrit :Je souhaite réaliser la figure suivante avec Asymptote (mais pour l'instant j'ai du mal à utiliser la fonction cylinder).
Je ne vois pas de problème particulier avec cette fonction...
Le plus pénible est de créer un fonction qui trace un angle droit dans l'espace:
Code : Tout sélectionner
//Draw right angle (OA,OB) in 3D
void drawrightangle(picture pic=currentpicture,
triple Oo, triple A, triple B,
real radius,
pen p=currentpen,
pen fillpen=nullpen,
projection P=currentprojection)
{
p=linejoin(0)+linecap(0)+p;
transform3 T=shift(-Oo);
triple OA=radius/sqrt(2)*unit(T*A),
OB=radius/sqrt(2)*unit(T*B),
OC=OA+OB;
path3 _p=shift(Oo)*(O--OA--OC--OB--cycle3);
if (fillpen==nullpen)
draw(pic, _p, p=p);
else filldraw(pic, _p, fillpen=fillpen, drawpen=p);
}
Code : Tout sélectionner
real r=1, h=.75;
real gle=60;
real gleA=20;
transform3 tR=rotate(gle,Z);
transform3 tT=shift((0,0,-h));
triple H=(0,0,h),//the label is O in the picture.
A=rotate(gleA,Z)*(0,r,h),
F=tR*A,
B=tR*F,
D=tT*A,
C=tT*B,
E=intersectionpoint(H--F,A--B);
revolution r=cylinder(O,r,h,Z);
// r.fill(white);
r.draw();
draw(O--H, dashed);
draw(H--B--F--A--cycle3^^H--F^^A--B^^A--D);
draw(O--D--C--cycle3^^O--H^^B--C, dashed);
drawrightangle(E,H,B,.1,fillpen=black);
dot(Label("$A$",align=NW), A);
dot(Label("$B$",align=N),B);
dot(Label("$C$",align=S), C);
dot(Label("$D$",align=NW), D);
dot(Label("$E$",align=S), E);
dot(Label("$F$",align=S), F);
dot(Label("$O$",align=N), H);
dot(Label("$O'$",align=NE+E), O);
shipout(bbox(xmargin=10mm,invisible));
http://home.tele2.fr/phivaldi/asymptote ... index.html
Je vous laisse le soin d'utiliser les macros pour les marques de segments .
Re: [Asymptote] Figure à base de cylindre
Bonjour,Ph. Ivaldi a écrit : Le plus pénible est de créer un fonction qui trace un angle droit dans l'espace
J'ai vu dans ton code que tu utilises la projection orthographique (c'est le cas de TeXgraph aussi), auquel cas tu peux très bien dessiner ton angle droit dans le plan de projection en raisonnant non plus sur les points de l'espace mais sur les projétés. Cette projection étant affine, elle conserve le parallèlisme. Cette même propriété permet aussi de tracer une courbe de Bézier de l'espace en disposant seulement d'une fonction Bézier dans le plan.
Amicalement
Re: [Asymptote] Figure à base de cylindre
C'est vrai mais, à faire une macro, autant qu'elle fonctionne quelque soit le type de projection disponible sous Asymptote:P.Fradin a écrit :J'ai vu dans ton code que tu utilises la projection orthographique (c'est le cas de TeXgraph aussi), auquel cas tu peux très bien dessiner ton angle droit dans le plan de projection en raisonnant non plus sur les points de l'espace mais sur les projétés. Cette projection étant affine, elle conserve le parallèlisme. Cette même propriété permet aussi de tracer une courbe de Bézier de l'espace en disposant seulement d'une fonction Bézier dans le plan.
perspective, oblique, obliqueX, obliqueY ou orthographic.
Votre logiciel TeXGraph semble vraiment intéressant, je vais l'essayer prochainement bien que mon choix soit fixé sur Asymptote.
De même.Amicalement
-
- Modérateur honoraire
- Messages : 6962
- Inscription : mercredi 15 février 2006, 13:18
- Localisation : le havre
- Contact :
Je vais peut-être posé une question stupide, mais pourquoi ne pas placer la marque de l'angle droit dans le plan défini par les deux droites perpendiculaires et laisser à la macro de projection le soin de projeter le tout...
Ainsi, la macro rightmark fonctionnerais tout le temps, non ?
Pouvez-vous expliquer ce qui se cache derrière les noms de vos différentes projections ; perspective, oblique, obliqueX, obliqueY, orthographic ? Et leurs rapports éventuels avec les perspectives cavalière, isométrique,...
Je dois dire que mes connaissances là dessus sont assez parcellaires,...
Olivier
Ainsi, la macro rightmark fonctionnerais tout le temps, non ?
Pouvez-vous expliquer ce qui se cache derrière les noms de vos différentes projections ; perspective, oblique, obliqueX, obliqueY, orthographic ? Et leurs rapports éventuels avec les perspectives cavalière, isométrique,...
Je dois dire que mes connaissances là dessus sont assez parcellaires,...
Olivier
-
- Administrateur
- Messages : 8058
- Inscription : samedi 28 mai 2005, 14:23
- Statut actuel : Enseignant
- Contact :
Re: [Asymptote] Figure à base de cylindre
Bonjour, le problème que j'avais était que le cylindre apparaissait toujours déformé.Ph. Ivaldi a écrit :Salut,MB a écrit :Je souhaite réaliser la figure suivante avec Asymptote (mais pour l'instant j'ai du mal à utiliser la fonction cylinder).
Je ne vois pas de problème particulier avec cette fonction...
Par exemple, avec le code suivant :
Code : Tout sélectionner
unitsize(1cm);
import solids;
real r=4, h=2.5;
revolution r=cylinder(O,r,h,Z);
r.draw();
Je vois maintenant qu'il faut utiliser en premier :
Code : Tout sélectionner
currentprojection=orthographic(-50,100,40);
- Pièces jointes
-
- Figure2_bad.png
- (64.34 Kio) Téléchargé 816 fois
Re: [Asymptote] Figure à base de cylindre
Je comprends mieux maintenant. Sous TeXgraph il n'y a que la projection orthographique par défaut (mais on peut évidemment programmer les autres).Ph. Ivaldi a écrit : C'est vrai mais, à faire une macro, autant qu'elle fonctionne quelque soit le type de projection disponible sous Asymptote:
perspective, oblique, obliqueX, obliqueY ou orthographic.
Merci du compliment, je dois dire que moi aussi je suis d'assez près ce que peuvent les autres outils comme Asymptote ou geoPyX, ou les macros de pstricks-add etc... Condition indispensable pour faire progresser ses propres outils! Pour le moment je constate que le langage de programmation est plus complet dans Asymptote que dans TeXgraph mais peut-être un peu plus "lourd".Votre logiciel TeXGraph semble vraiment intéressant, je vais l'essayer prochainement bien que mon choix soit fixé sur Asymptote.
De même.
Ce n'est pas du tout stupide mais dans le cas présent c'est un peu plus compliqué.rebouxo a écrit :Je vais peut-être posé une question stupide, mais pourquoi ne pas placer la marque de l'angle droit dans le plan défini par les deux droites perpendiculaires et laisser à la macro de projection le soin de projeter le tout...
Ainsi, la macro rightmark fonctionnerais tout le temps, non ?
Un marque d'angle n'est pas un chemin (une courbe), c'est une image.
En effet, avec Asymptote on peut spécifier la taille finale de l'image.
Si par exemple je place un "size(10cm,0);" dans le code (au début pour plus de lisibilité) alors:
Code : Tout sélectionner
size(10cm,0);
draw((0,0),(1,0));
Code : Tout sélectionner
size(10cm,0);
draw((0,0),(1000,0));
Code : Tout sélectionner
size(10cm,0);
draw((0,0),(1,0));
draw((0,0),(2,-.1));
donnera un segment de 5cm et un segment de 10cm.
Comment, dans ces conditions savoir quelle taille donner à la marque?
Simplement en traçant la marque dans une autre image avec une mesure absolue, puis en ajoutant cette image au bon endroit:
Code : Tout sélectionner
size(10cm,0);
draw((0,0)--(1,0));
picture pic;
draw(pic, (0,0)--(1cm,0));
add(pic,(0,-.1));
S'il me vient l'envie de sortir la figure en 15cm de large, le segment du bas (maintenant 1.5cm plus bas) fera toujours 1cm de long.
En disant ça je me rends compte que la façon dont j'ai coder la fonction pour marquer l'angle dans l'espace n'est pas propre, puisque la taille de ma marque dépend de l'échelle utilisée.
Je vais la modifier prochainement...
Dans le plan les marques que j'ai définies ici
[url]file:///home/pi/www/phivaldi/asymptote/geometrie/index.html[/url] figure : fig1055.asy
sont, elles, indépendantes de la taille de sortie (ce qui est souhaité par les développeurs d'Asymptote).
Reste à voir si l'on peut appliquer les transformations de l'espace à un image du plan XY...
Si quelqu'un à le code Asymptote pour balancer les marques du plan dans l'espace, je suis preneur!
Peut être (???) avec la commande:
Code : Tout sélectionner
triple invert(pair z, triple normal, triple point,
projection P=currentprojection);
Ben comme ça on est au moins deux...rebouxo a écrit :Pouvez-vous expliquer ce qui se cache derrière les noms de vos différentes projections ; perspective, oblique, obliqueX, obliqueY, orthographic ? Et leurs rapports éventuels avec les perspectives cavalière, isométrique,...
Je dois dire que mes connaissances là dessus sont assez parcellaires,...
C'est l'occasion pour moi aussi de tirer ça au clair.
Voici ce que j'ai compris grâce à cette page:
http://rvirtual.free.fr/programmation/O ... /c1106.htm
8<------8<------8<------8<------8<------8<------8<------8<------
,----[les fonctions d'asymptotes
| orthographic(triple camera, triple up=Z)
| orthographic(real x, real y, real z, triple up=Z)
| This projects three dimensions onto two using the view seen at the
| location camera or (x,y,z), respectively, orienting the camera so
| that, if possible, the vector up points upwards. Parallel lines are
| projected to parallel lines.
`----
Dans cette projection les droites de projection sont parallèles entre elles.
Elle est dites:
* ORTHOGONALE:
quand la direction de projection est orthogonale au plan de
projection lui même parallèle à un des axes du repère;
* DIMÉTRIQUE ou ISOMÉTRIQUE:
quand le plan de projection n'est parallèle à aucun des plans X=0 ou
Y=0 ou Z=0.
. Si seulement deux vecteurs unitaires du repère sont de même longueur
après projection, elle est dite dimétrique;
. Si les trois V.U. ont la même longueur après projection elle est
dite isométrique.
8<------8<------8<------8<------8<------8<------8<------8<------
,----[les fonctions d'asymptotes
| oblique
|
| oblique(real angle) The point (x,y,z) is projected to
| (x-0.5z,y-0.5z). If an optional real argument is given, the negative
| z axis is drawn at this angle in degrees. The projection obliqueZ is
| a synonym for oblique.
|
| oblique
|
| obliqueX(real angle) The point (x,y,z) is projected to
| (y-0.5x,z-0.5x). If an optional real argument is given, the negative
| x axis is drawn at this angle in degrees.
|
| obliqueY
|
| obliqueY(real angle)
| The point (x,y,z) is projected to (x+0.5y,z+0.5y). If an optional
| real argument is given, the positive y axis is drawn at this angle
| in degrees.
`----
8<------8<------8<------8<------8<------8<------8<------8<------
Dans ces projections dites OBLIQUES:
le plan de projection est perpendiculaire, non plus à la direction de
projection comme précédemment, mais à l'un des axes du repère.
En particulier, elle est dite:
. CAVALIÈRE quand la direction de projection fait un angle de 45° avec
le plan de projection et les distances ne sont pas réduites. Les
lignes de fuite sont dessinées généralement avec un angle de 30 ou 45°
avec l'horizontale;
. CABINET quand on raccourcit les arrêtes portées par les lignes
fuyantes dans le rapport de 1/2.
8<------8<------8<------8<------8<------8<------8<------8<------
,----[les fonctions d'asymptotes
| perspective(triple camera, triple up=Z)
| perspective(real x, real y, real z, triple up=Z)
| These project three dimensions onto two taking account of
| perspective, as seen from the location camera or (x,y,z),
| respectively, orienting the camera so that, if possible, the vector up
| points upwards.
`----
Dans cette projection dite PERSPECTIVE:
le centre de projection se situe à une distance finie du plan de
projection.
La taille des objets est inversement proportionnelle à leur distance
au centre de projection : un objet éloigné sera plus petit que s'il
était prés, comme il nous paraît dans la réalité. Les distances et
les angles sont modifiés lors de la projection sauf lorsque les
faces sont parallèles au plan de projection. De même, le
parallélisme n'est pas conservé sauf pour les droites incluses dans un
plan parallèle au plan de projection.
8<------8<------8<------8<------8<------8<------8<------8<------
Merci de me corriger s'il y a des erreurs.
-
- Administrateur
- Messages : 8058
- Inscription : samedi 28 mai 2005, 14:23
- Statut actuel : Enseignant
- Contact :
Voici la figure obtenue après adaptation du code :
Pour les marqueurs, j'ai utilisé les macros réalisée par Ph. Ivaldi, mais je ne sais pas si il n'y a pas plus simple ...
Code : Tout sélectionner
unitsize(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);
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);
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);
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
- (132.13 Kio) Téléchargé 697 fois
La nouvelle mouture de cette fonction, plus propre:MB a écrit :Voici la figure obtenue après adaptation du code :
Code : Tout sélectionner
//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); }
Code : Tout sélectionner
//Draw right angle (MA,MB) in 3D
void drawrightangle(picture pic=currentpicture,
triple M, triple A, triple B,
real radius=0,
pen p=currentpen,
pen fillpen=nullpen,
projection P=currentprojection)
{
p=linejoin(0)+linecap(0)+p;
if (radius==0) radius=arrowfactor*sqrt(2);
transform3 T=shift(-M);
triple OA=radius/sqrt(2)*unit(T*A),
OB=radius/sqrt(2)*unit(T*B),
OC=OA+OB;
path3 _p=OA--OC--OB;
picture pic_;
draw(pic_, _p, p=p);
if (fillpen!=nullpen) fill(pic_, O--_p--cycle3, fillpen);
add(pic,pic_,M);
}
Code : Tout sélectionner
drawrightangle(pE,p0,pB,0.6,fillpen=gray);
Code : Tout sélectionner
drawrightangle(pE,p0,pB,fillpen=gray);
Une question: comment faites vous pour obtenir de la transparence dans le .png ?
asy -V -f png fichier.asy ne rend pas la transparence.
Merci.
-
- Administrateur
- Messages : 8058
- Inscription : samedi 28 mai 2005, 14:23
- Statut actuel : Enseignant
- Contact :
Merci pour la modification de la fonction.
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)
[Edit] Par contre, ce qui n'est pas super, c'est que les lignes du cylindre et les segments qui devraient être en noir sont un peu grisé lors du remplissage de la surface. Il faudrait sans doute remplir la surface avant de tracer ces lignes.
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)
En fait, je compile toujours en PDF avec Asymptote et j'effectue ensuite la conversion en PNG via la fonction convert d'ImageMagick.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.
[Edit] Par contre, ce qui n'est pas super, c'est que les lignes du cylindre et les segments qui devraient être en noir sont un peu grisé lors du remplissage de la surface. Il faudrait sans doute remplir la surface avant de tracer ces lignes.
J'ai l'impression que cette conversion fait des images un peu gourmandes en taille quand je compare les différentes productions. Personnellement, je fais un apercu dans acrobat reader puis une capture d'écran (avec KSnapshot sous linux et Qv sous windows) j'ai l'impression que la taille est moins importante. Tu peux aussi faire la conversion avec ghostscript.MB a écrit : 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 la transparence qui fait cela, j'ai constaté la même chose avec pstricks, il faut remplir le fond en transparence (sans contour), puis dessiner le contour sans remplissage.Par contre, ce qui n'est pas super, c'est que les lignes du cylindre et les segments qui devraient être en noir sont un peu grisé lors du remplissage de la surface. Il faudrait sans doute remplir la surface avant de tracer ces lignes.
Comment fait on avec gs ?P.Fradin a écrit :J'ai l'impression que cette conversion fait des images un peu gourmandes en taille quand je compare les différentes productions. Personnellement, je fais un apercu dans acrobat reader puis une capture d'écran (avec KSnapshot sous linux et Qv sous windows) j'ai l'impression que la taille est moins importante. Tu peux aussi faire la conversion avec ghostscript.MB a écrit : En fait, je compile toujours en PDF avec Asymptote et j'effectue ensuite la conversion en PNG via la fonction convert d'ImageMagick.
J'ai regardé le script imagen du paquet Hevea mais je n'ai pas vu comment augmenter la qualité.
Pour mon site (toutes les pages sont génrées automatiquement à partir d'un répertoire de travail; la ligne de commande est donc obligatoire), j'utilise la commande:
Code : Tout sélectionner
convert -density 200 -geometry 50%x +antialias ${ficssext}.eps ${ficssext}.${EXTIMAG}
Par contre, ce qui n'est pas super, c'est que les lignes du cylindre et les segments qui devraient être en noir sont un peu grisé lors du remplissage de la surface. Il faudrait sans doute remplir la surface avant de tracer ces lignes.
Il faut peut-être essayer la commande filldraw, quand c'est possible.P.Fradin a écrit : C'est la transparence qui fait cela, j'ai constaté la même chose avec pstricks, il faut remplir le fond en transparence (sans contour), puis dessiner le contour sans remplissage.
-
- Administrateur
- Messages : 8058
- Inscription : samedi 28 mai 2005, 14:23
- Statut actuel : Enseignant
- Contact :
Oui, c'est vrai que c'est plus lourd.P.Fradin a écrit :J'ai l'impression que cette conversion fait des images un peu gourmandes en taille quand je compare les différentes productions. Personnellement, je fais un apercu dans acrobat reader puis une capture d'écran (avec KSnapshot sous linux et Qv sous windows) j'ai l'impression que la taille est moins importante. Tu peux aussi faire la conversion avec ghostscript.MB a écrit : En fait, je compile toujours en PDF avec Asymptote et j'effectue ensuite la conversion en PNG via la fonction convert d'ImageMagick.
Je passe la résolution à 300dpi. Ca doit être pour ça.
-
- Sujets similaires
- Réponses
- Vues
- Dernier message