3D - solids - hémisphère et sections

Pour toute demande d'aide sur des exemples non finalisés, c'est ici.
Les exemples aboutis et intéressants seront ajoutés aux sous-forums qui suivent.

Règles du forum
Pour toute demande d'aide pour la conception (ou la confirmation d'un code) d'une figure Asymptote, c'est ici.

J'invite ceux qui ont régulièrement des questions à poser à aller dans leur panneau de l'utilisateur pour indiquer dans la signature de leurs messages :

  1. Nom du système d'exploitation (W7 ou Ubuntu 12.04 ou ...)
  2. Version d'Asymptote et éditeur utilisé pour les figures Asymptote
  3. Distribution LaTeX et éditeur utilisé pour les tex.


On va gagner du temps dans les réponses !
Nico56
Messages : 58
Enregistré le : lun. 12 janv. 2015, 16:06

3D - solids - hémisphère et sections

Message non lu par Nico56 » mar. 22 nov. 2016, 23:46

Bonsoir à tous, j'ai eu beau faire tout un tas de tests, je n'arrive pas à résoudre mes problèmes...
1. Mon hémisphère n'est pas belle, j'ai un gros trait au niveau de la partie supérieure, j'avais le même problème avec le cône (voir code en commentaire), je l'ai rectifié en traçant le cône d'une autre manière. Le problème est: comment tracer mon hémisphère de la même manière ou comment faire pour ne plus avoir ce trait parasite.
2. Dans la ligne

Code : Tout sélectionner

c.transverse(s,reltime(c.g,.9),P=currentprojection);
, je ne comprends pas comment est géré le coefficient, j'ai essayé avec les codes trouvés dans la galerie et sur la doc ASY_3D, sans succès. Si vous avez un tuyau, je suis preneur!

Merci d'avance et bonne nuit!
Nico

PS: j'ai essayé d'utiliser les balises asy, il y avait des erreurs, j'ai mis des balises Code...

Code : Tout sélectionner

import solids;
settings.render = 5;
settings.prc = false;

picture pic1;
currentprojection=orthographic(0,10,1.5);

path3 gene=(1,0,0)..(0,0,-1)..(-1,0,0);
revolution c=revolution(O,gene,Z,0,360);

draw(pic1,c.silhouette());
skeleton s;

c.transverse(s,reltime(c.g,.9),P=currentprojection);
draw(pic1,s.transverse.back,black+linetype("10 10",10));
draw(pic1,s.transverse.front);

draw(pic1,"$r$",(1.2,0,0)--(1.2,0,-1),E,Arrows3);
draw(pic1,"$2r$",(-1,0,0.3)--(1,0,0.3),N,Arrows3);
frame f1=pic1.fit(5cm);
add(f1);

picture pic2;
currentprojection=orthographic(0,10,1.5);

//path3 gene=(1,0,-1)--(0,0,0)--(-1,0,-1);
//revolution c=revolution(O,gene,Z,0,360);
revolution c=cone((0,0,-1),1,1,axis=Z,n=1);
draw(pic2,c,black+.5bp);
skeleton s;

c.transverse(s,reltime(c.g,.5),P=currentprojection);
draw(pic2,s.transverse.back,black+linetype("10 10",10));
draw(pic2,s.transverse.front);

draw(pic2,"$r$",(-1.2,0,0)--(-1.2,0,-1),E,Arrows3);
draw(pic2,"$2r$",(-1,0,0.3)--(1,0,0.3),N,Arrows3);
frame f2=pic2.fit(5cm);
f2=shift(6cm)*f2;
add(f2);
Windows 10 - Asymptote(2.32)+texlive - Editeur: texmaker (4.5)

Nico56
Messages : 58
Enregistré le : lun. 12 janv. 2015, 16:06

Re: 3D - solids - hémisphère et sections

Message non lu par Nico56 » mer. 23 nov. 2016, 17:30

En cherchant à droite à gauche (forum mathematex, pas eu l'idée hier soir...), j'ai réussi à corriger mes erreurs.
Voilà le code si ça peut servir à quelqu'un.
Bonne fin de journée.
Nico

Code : Tout sélectionner

import solids;
settings.render = 2;
settings.prc = false;

size(0,18cm);

real h=.45;
real r=1;

picture pic1;
currentprojection=orthographic(0,10,1.5);

revolution d=revolution(O,Arc(O,r,180,0,90,0,Y),Z);
revolution dd=revolution(O,Arc(O,r,180,0,90+aSin(1-h/r),0,Y),Z);

draw(pic1,d.silhouette());
draw(pic1,dd.silhouette());

draw(pic1,"$r$",(r+.2,0,0)--(r+.2,0,-1*r),E,Arrows3);
draw(pic1,"$2r$",(-1*r,0,0.3)--(r,0,0.3),N,Arrows3);

draw(pic1,"$z_1$",(0,0,-r+h)--(-sqrt(2*r*h-h^2),0,-r+h),N,dashed);
dot(pic1,(0,0,-r+h));
frame f1=pic1.fit(5cm);
add(f1);

picture pic2;
currentprojection=orthographic(0,10,1.5);

revolution c=cone((0,0,-1*r),r,r,axis=Z,n=1);
draw(pic2,c,black+.5bp);

revolution cc=cone((0,0,-r+h),r-h,r-h,axis=Z,n=1);
draw(pic2,cc,black+.5bp);

draw(pic2,"$r$",(-1*r-.2,0,0)--(-1*r-.2,0,-1*r),E,Arrows3);
draw(pic2,"$2r$",(-1*r,0,0.3)--(r,0,0.3),N,Arrows3);
draw(pic2,"$h$",(r+.2,0,-r)--(r+.2,0,-r+h),E,Arrows3);

draw(pic2,"$z_2$",(0,0,-r+h)--(r-h,0,-r+h),N,dashed);
dot(pic2,(0,0,-r+h));

frame f2=pic2.fit(5cm);
f2=shift(6cm)*f2;
add(f2);
Windows 10 - Asymptote(2.32)+texlive - Editeur: texmaker (4.5)

Avatar du membre
GM
Administrateur du site
Administrateur du site
Messages : 1512
Enregistré le : dim. 7 mars 2010, 14:50

Re: 3D - solids - hémisphère et sections

Message non lu par GM » mer. 23 nov. 2016, 19:57

Bonsoir,
Nico56 a écrit :j'ai réussi à corriger mes erreurs.
Je n'ai pas testé le code mais si le problème est résolu, je me contente de : bravo ! :-)
Index des fonctions - Exemple de lien donnant le résultat d'une recherche sur les mots 'arc' et 'triple' : http://asy.marris.fr/indexasy/?filtre=arc triple
Mes configurations (le 24/02/21) :
PC n°1 :Windows 10 - Asymptote(2.82)+MikTeX2.9 - Editeurs : Notepad++, TeXworks, Visual Studio Code.
PC n°2 : Ubuntu 20.04LTS - Asymptote(2.67-?? git) + TexLive2020
Mon serveur : Debian Stretch- Asymptote(2.68-16 git) + TexLive2018
Merci de préciser la votre !

Nico56
Messages : 58
Enregistré le : lun. 12 janv. 2015, 16:06

Re: 3D - solids - hémisphère et sections

Message non lu par Nico56 » jeu. 24 nov. 2016, 11:26

Bonjour, merci pour le soutien!
J'ai toutefois un petit soucis avec:

Code : Tout sélectionner

unitsize(pic2,unite);
frame f2=pic2.fit();
f2=shift(2.1*unite)*f2;
add(f2);
Mes 2 figures sont côte à côte mais légèrement décalées et j'aimerai corriger ceci.
Je ne maîtrise pas les 2 1e lignes du code précédent...

Le code des 2 figures côte à côte.

Code : Tout sélectionner

import solids;
settings.render = 3;
settings.prc = false;

real h=.45;
real r=1;
real unite=30mm;

picture pic1;
currentprojection=orthographic(0,10,1.5);

revolution c=cone((0,0,-1*r),r,r,axis=Z,n=1);
draw(pic1,c,black+.5bp);

revolution cc=cone((0,0,r),-r,-r,axis=Z,n=1);
draw(pic1,cc,black+.5bp);

draw(pic1,(0,0,-r)--(0,0,r),dashed);

unitsize(pic1,unite);
frame f1=pic1.fit();
add(f1);

picture pic2;
currentprojection=orthographic(0,10,1.5);

revolution c=cone((0,0,-1*r),r,2r,axis=Z,n=1);
draw(pic2,c,black+.5bp);

draw(pic2,(0,0,-r)--(0,0,r),dashed);

unitsize(pic2,unite);
frame f2=pic2.fit();
f2=shift(2.1*unite)*f2;
add(f2);

shipout(bbox(0.1cm,0.1cm,invisible));
Merci d'avance pour les lumières!
Nico
Windows 10 - Asymptote(2.32)+texlive - Editeur: texmaker (4.5)

Avatar du membre
GM
Administrateur du site
Administrateur du site
Messages : 1512
Enregistré le : dim. 7 mars 2010, 14:50

Re: 3D - solids - hémisphère et sections

Message non lu par GM » jeu. 24 nov. 2016, 13:52

bonjour,
Nico56 a écrit :Mes 2 figures sont côte à côte mais légèrement décalées et j'aimerai corriger ceci.
elles sont en fait centrées verticalement.

Pour aligner des frames dans une direction donnée, il y a la commande align.

Remplacer :

Code : Tout sélectionner

add(f1);
par

Code : Tout sélectionner

add(align(f1,N));
et

Code : Tout sélectionner

f2=shift(2.1*unite)*f2;
add(f2);
par

Code : Tout sélectionner

add(shift(2.1*unite)*align(f2,N));
Index des fonctions - Exemple de lien donnant le résultat d'une recherche sur les mots 'arc' et 'triple' : http://asy.marris.fr/indexasy/?filtre=arc triple
Mes configurations (le 24/02/21) :
PC n°1 :Windows 10 - Asymptote(2.82)+MikTeX2.9 - Editeurs : Notepad++, TeXworks, Visual Studio Code.
PC n°2 : Ubuntu 20.04LTS - Asymptote(2.67-?? git) + TexLive2020
Mon serveur : Debian Stretch- Asymptote(2.68-16 git) + TexLive2018
Merci de préciser la votre !

Nico56
Messages : 58
Enregistré le : lun. 12 janv. 2015, 16:06

Re: 3D - solids - hémisphère et sections

Message non lu par Nico56 » jeu. 24 nov. 2016, 18:05

Parfait!
Merci encore!
Windows 10 - Asymptote(2.32)+texlive - Editeur: texmaker (4.5)

Répondre