Page 1 sur 2

Section cube par un plan

Posté : lun. 18 mai 2015, 08:05
par Nico56
Bonjour à tous, me revoilà pour des questions...
Je souhaite réaliser des sections de cubes par des plans, j'ai trouvé ce superbe doc: http://asy.marris.fr/slide_asy/sections_cube.pdf duquel j'ai récupéré le source. Impossible de compiler correctement le source (mon pc tourne une nuit complète sans résultat...) ni même d'en extraire correctement une partie du code, je compile ce qui suit sans erreur, j'obtiens un carré blanc, j'aime bien les Koendelietzsche mais pas tant que ça... Si vous avez une idée, je suis preneur!
Merci d'avance.
Nicolas

Figure asymptote 7ac24c67abde4741c8dd3a73120450a6
*** Pour masquer/découvrir le code Asymptote qui a permis de créer la figure, il faut cliquer dessus. ;-) ***

CODE ASYMPTOTE de la figure ci-dessus : Tout sélectionner
  1. import three;
  2. currentprojection=orthographic(5,2,3);
  3. picture piccube;
  4. real a=1;
  5. triple A=(a,0,0),B=(a,a,0),C=(0,a,0),D=(0,0,0),
  6. E=(a,0,a),F=(a,a,a),G=(0,a,a),H=(0,0,a),
  7. I=F+(E-F)/8,
  8. J=H+(E-H)/4,
  9. K=E+3*(A-E)/8;
  10. path3 facedevant=A--B--F--E--cycle,
  11. facedroite=B--C--G--F--cycle,
  12. facedessus=H--E--F--G--cycle;
  13. draw(piccube,facedevant^^facedroite^^facedessus,1bp+blue);
  14. draw(piccube,D--A^^D--C^^D--H,dashed+1bp+blue);
  15. label(piccube,"$A$",A,dir(G--A),fontsize(14));
  16. label(piccube,"$B$",B,dir(H--B),fontsize(14));
  17. label(piccube,"$C$",C,dir(E--C),fontsize(14));
  18. label(piccube,"$D$",D,dir(C--D),fontsize(14));
  19. label(piccube,"$E$",E,dir(C--E),fontsize(14));
  20. label(piccube,"$F$",F,dir(B--F),fontsize(14));
  21. label(piccube,"$G$",G,dir(A--G),fontsize(14));
  22. label(piccube,"$H$",H,dir(D--H),fontsize(14));
  23. shipout(format="pdf");

Re: Section cube par un plan

Posté : lun. 18 mai 2015, 11:11
par Nico56
Bon, je viens de me rendre compte de mes erreurs:
1. Je n'ouvrais pas mon doc avec adobe acrobat,
2. Je me rends compte que le résultat est beaucoup trop complexe, mon objectif est juste d'illustrer un document papier...
Existe-t-il une solution alternative?
Merci d'avance!
Nico

Re: Section cube par un plan

Posté : lun. 18 mai 2015, 11:49
par GM
Bonjour,
Nico56 a écrit :Je n'ouvrais pas mon doc avec adobe acrobat
Il n'y avait pas que cela comme erreur !
Si tu n'ajoutes pas piccube à currentpicture, je peine à croire que tu aies pu obtenir ta figure avec le code ci-dessus !

Il faut par exemple ajouter cette ligne à la place avant ou à la place du shipout !

Code : Tout sélectionner

add(piccube.fit(5cm));
Attention, aussi, pour ceux qui veulent tester l'exemple ci-dessus : j'avais une erreur en testant avec l'ancienne version 9.10 de ghostscript (que j'avais installé du fait du problème de eps2write rencontré avec asymptote 2.32 et ghostscript 9.15... problème qui doit être réglé depuis Asymptote 2.33)
et j'ai alors installé la version 9.16 de ghostscript et j'ai pu compiler.

Re: Section cube par un plan

Posté : lun. 18 mai 2015, 12:40
par GM
Encore une info : dans le source que tu as trouvé, qui date de 2008... autrement dit d'une éternité, tu dois avoir des choses comme cela :

Code : Tout sélectionner

fill(pictempo,E--F--G--H--cycle,paleyellow+opacity(0.8));
qui déclenche ce genre d'erreur :
no matching function 'fill(picture, void(flatguide3), pen)'
... et il faut alors les réactualiser par quelque chose comme cela :

Code : Tout sélectionner

draw(pictempo,surface(E--F--G--H--cycle,planar=true),paleyellow+opacity(0.8));

Re: Section cube par un plan

Posté : lun. 18 mai 2015, 13:38
par Nico56
Merci, en remplaçant le shipout par la ligne donnée, ça marche bien. :D
Par contre, je n'ai besoin que d'une projection en 2d d'un cube, juste pour faire une figure pour un exercice sur feuille. Est-ce qu'il y a un truc moins lourd? Le fichier que l'on obtient est interactif, ce n'est pas ce que je recherche!
Merci d'avance pour les tuyaux.
Nico

Re: Section cube par un plan

Posté : lun. 18 mai 2015, 13:56
par GM
Nico56 a écrit :Le fichier que l'on obtient est interactif, ce n'est pas ce que je recherche !
Je le compile avec la ligne de commande :
asy -f pdf -tex pdflatex -noprc nomdufichier
Si tu préfères compiler avec une simple commande asy, tu mets alors les mêmes options en début de fichier asy :
settings.outformat="pdf";
settings.tex="pdflatex";
settings.prc = false;
L'image deviendra statique ! ;-)

Re: Section cube par un plan

Posté : lun. 18 mai 2015, 14:13
par Nico56
Super, merci! Je venais de trouver la solution dans la galerie d'exemples...
Je reviens mettre qqs exemples quand j'ai fini, ça pourra peut-être servir.
Une dernière question: à quoi sert : settings.render=0; Est-ce utile dans mon cas?

Re: Section cube par un plan

Posté : lun. 18 mai 2015, 20:41
par GM
Nico56 a écrit :Je reviens mettre qqs exemples quand j'ai fini, ça pourra peut-être servir.
Euh... c'est gentil mais la 3D sur le forum, ce n'est pas vraiment cela.

Re: Section cube par un plan

Posté : mar. 19 mai 2015, 06:56
par Nico56
Ok, je garde ça de côté.

Re: Section cube par un plan

Posté : lun. 7 mars 2016, 16:04
par Nico56
Bonjour à tous, je déterre ce post car j'ai une question à ce sujet, je voudrais colorier une face, mais je ne trouve pas de solution, très probablement un problème lié à la 3D...
Voici mon code:

Code : Tout sélectionner

import three;
import geometry;
settings.render=0; 
settings.prc=false;  // pas d'interactivité

size(8cm);
currentprojection=obliqueX;

triple	v=(0,0,4),
		pA=(3,0,0), 
		pB=(3,4,0), 
		pC=(0,4,0), 
		pD=(0,0,0),
		pE=pA+v,
		pF=pB+v,
		pG=pC+v,
		pH=pD+v,
		pI=(pA+pC)/2
		;
	
fill(pA--pB--pC--pD--cycle,blue);
draw(pA--pB--pC--pG--pH--pE--pA^^pE--pF--pB^^pF--pG);
draw(pA--pD--pC^^pD--pH,dashed);
Merci d'avance pour vos lumières!
Nico