Je suis en train d'apprendre Asymptote et ce qui m'intéresse est la 3D manipulable avec la souris. Pour ma première figure en 3D, j'ai dessiné un dé à jouer dont le code est ci-dessous. Malheureusement les disques représentant les points scintillent lorsque l'on fait tourner ce dé à la souris.
J'en conclus que je dois m'y prendre autrement pour colorier les faces du dé car lorsque je supprime l'instruction de la ligne 25
Code : Tout sélectionner
draw(tX*scale3(84a)*unitcube, surfacepen=white);
je pense qu'il faudrait arriver à colorier une première fois les faces sans les disques, puis en une deuxième étape les disques eux-mêmes.
Seulement , je ne sais pas comment faire cela en 3D.
remarque : le dé mesure 4,2 cm et a = 0,05, d'où 84a = 4,2 cm.
Code : Tout sélectionner
import three;
currentprojection =orthographic((5,2,3));
currentlight=nolight;
settings.tex="latex"; // Moteur LaTeX utilisé pour la compilation (latex, pdflatex, ...)
settings.outformat="pdf"; // Format de sortie ; eps par défaut
settings.prc=true; // Format PRC de la figure ; vrai par défaut
settings.render=-1; // Rendu des figures ; -1 par défaut
size(6cm,0);
real a = 0.05;
path carre = box ((0,0),(84a,84a)),
disque = scale(9a)*unitcircle,
patron1[] = shift(42a,42a)*disque,
patron2[] = shift(14a,70a)*disque^^shift(70a,14a)*disque,
patron3[] = shift(14a,70a)*disque^^shift(70a,14a)*disque^^shift(42a,42a)*disque,
patron4[] = shift(14a,14a)*disque^^shift(14a,70a)*disque^^shift(70a,14a)*disque^^shift(70a,70a)*disque,
patron5[] = shift(14a,14a)*disque^^shift(14a,70a)*disque^^shift(70a,14a)*disque^^shift(70a,70a)*disque^^shift(42a,42a)*disque,
patron6[] = shift(14a,14a)*disque^^shift(14a,70a)*disque^^shift(70a,14a)*disque^^shift(70a,70a)*disque^^shift(42a,70a)*disque^^shift(42a,14a)*disque;
transform3 tX=shift(84a*X), tY=shift(84a*Y), tZ=shift(84a*Z);
path3 facegauche[] =path3(patron6,ZXplane),
facedroite[] =path3(patron1,ZXplane),
faceavant[] =path3(patron2,YZplane),
facearriere[] =path3(patron5,YZplane),
facehaut[] =path3(patron4,XYplane),
facebas[] =path3(patron3,XYplane);
draw(scale3(84a)*unitcube, surfacepen=white);
draw(box(O, 84a*(X+Y+Z)), gray);
draw(surface(facegauche),blue);
draw(surface(tY*facedroite),blue);
draw(surface(tZ*facehaut),blue);
draw(surface(facebas),blue);
draw(surface(facearriere),blue);
draw(surface(tX*faceavant),blue);
Je vous remercie de vos lumières.