Empilement de boules

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 !
Fabrice
Messages : 118
Enregistré le : sam. 13 mars 2010, 11:41

Empilement de boules

Message non lu par Fabrice » sam. 6 oct. 2018, 11:15

Bonjour Gaetan,
L'idée est de reproduire au format pdf la figure jointe en image. Cette figure va servir dans un énoncé de devoir surveillé, et il faut pouvoir compter aisément le nombre de boules. Le problème, c'est que mon ordinateur qui veillit ne sait plus compiler au delà d'un certain nombre de boules. Peux-tu faire la figure et la joindre en fichier ?
Merci beaucoup.
Fabrice

Code : Tout sélectionner

import solids;
import palette;
size(14cm,0);

currentlight=light(gray(0.4),specularfactor=3,viewport=false,
                   (-0.5,-0.25,0.45),
                   (0.5,-0.5,0.5),(0.5,0.5,0.75));

nslice=4*nslice;
surface s=surface(sphere(O,1));
for(int y=0; y<=4; ++y)
  for(int x=0; x<=4; ++x)
    for(int z=0; z<=4; ++z)	
   draw(shift(2x,2y,2z)*s,lightgrey);
Image
Debian Strech + Asymptote 2.42-12 + Emacs24 + TeXLive 2017

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

Re: Empilement de boules

Message non lu par GM » sam. 6 oct. 2018, 11:59

Bonjour,

essaye de compiler ceci :

Code : Tout sélectionner

import three;
size(8cm,0);
currentlight.background=white;
currentprojection=orthographic(5,4,3);

int nx = 5, ny = 5, nz = 5;

draw(shift(-.5,-.5,-.5)*xscale3(2nx)*yscale3(2ny)*zscale3(2nz)*unitbox,blue);
for(int z=0; z<nz; ++z)
    for(int y=0; y<ny; ++y)
        for(int x=0; x<nx; ++x)
            draw(shift(2x,2y,2z)*unitsphere,
                 surfacepen=material(diffusepen=gray(0.5),
                                     emissivepen=blue+white,
                                     specularpen=black
                                    )
                );
Image
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 !

Fabrice
Messages : 118
Enregistré le : sam. 13 mars 2010, 11:41

Re: Empilement de boules

Message non lu par Fabrice » dim. 7 oct. 2018, 08:50

Salut Gaetan,
Merci beaucoup, la compilation est très rapide. Pourquoi mon code prenait temps de temps ?
Fabrice
Debian Strech + Asymptote 2.42-12 + Emacs24 + TeXLive 2017

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

Re: Empilement de boules

Message non lu par GM » dim. 7 oct. 2018, 10:45

Sans ta ligne redéfinissant nslice, je pense que ton exemple compilait mais chaque sphère était définie par plus d'une centaine de patchs de bézier !!

Et tu aggravais le problème en quadruplant nslice.

Image

Dans la définition de unitsphere, on définit (apparemment, d'après ce que je vois dans Adobe Reader) une sphère par 8 patchs de Béziers : ce qui est un nombre plus raisonnable qui facilite la compilation au détriment d'une précision moindre mais qui n'est pas perceptible.
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 !

Répondre