Page 1 sur 1

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

Posté : mar. 22 nov. 2016, 23:46
par Nico56
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);

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

Posté : mer. 23 nov. 2016, 17:30
par Nico56
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);

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

Posté : mer. 23 nov. 2016, 19:57
par GM
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 ! :-)

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

Posté : jeu. 24 nov. 2016, 11:26
par Nico56
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

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

Posté : jeu. 24 nov. 2016, 13:52
par GM
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));

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

Posté : jeu. 24 nov. 2016, 18:05
par Nico56
Parfait!
Merci encore!