Un nouveau défi

Tout ce qui concerne le langage Asymptote. Ce langage est supporté sur le forum via les balises asy.

Modérateur : gdm_asy

Règles du forum
Merci de soigner la rédaction de vos messages et de consulter ce sujet avant de poster. Pensez également à utiliser la fonction recherche du forum.
XavteX
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 122
Inscription : jeudi 13 janvier 2011, 09:44

Un nouveau défi

Message par XavteX »

Bonjour,

Vous connaissez sans doute l'éponge de Menger, solide fractale.
Cela ne doit pas beaucoup impressionner les asymptotiens de ce forum!
Alors pouvez vous fabriquet l'objet à l'étape 4?

http://fr.wikipedia.org/wiki/%C3%89ponge_de_Menger

Je vais y réfléchir de mon côté mais c'est peut être aller vite en besogne...

Xavier
GMaths
Utilisateur chevronné
Utilisateur chevronné
Messages : 2038
Inscription : lundi 01 octobre 2007, 10:20

Re: Un nouveau défi!

Message par GMaths »

XavteX a écrit :Alors pouvez vous fabriquet l'objet à l'étape 4?

Je vais y réfléchir de mon côté
Dans ta réflexion, si tu penses empiler des cubes souviens-toi... que ton pc avait quelques soucis avec 256 sphères...
et donc... 8000 cubes ($20^3$), ce n'est pas gagné ! :D :lol:
XavteX
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 122
Inscription : jeudi 13 janvier 2011, 09:44

Re: Un nouveau défi!

Message par XavteX »

GMaths
Utilisateur chevronné
Utilisateur chevronné
Messages : 2038
Inscription : lundi 01 octobre 2007, 10:20

Re: Un nouveau défi!

Message par GMaths »

XavteX a écrit :Pourtant il existe ça :
http://www.mathematik.com/Menger/Menger2.html
:wink:
... oui, sauf que c'est l'étape 3 avec $20^2=400$ cubes ;-)
XavteX
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 122
Inscription : jeudi 13 janvier 2011, 09:44

Re: Un nouveau défi!

Message par XavteX »

C'est déjà beaucoup plus que 256 sphères!
maurice
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 399
Inscription : jeudi 25 mars 2010, 13:49

Re: Un nouveau défi!

Message par maurice »

Il y a toujours l'exemple de la gallerie officielle : SierpinskiSponge.asy.

Code : Tout sélectionner

size(200);
import palette;
import three;
    
triple[] M={
  (-1,-1,-1),(0,-1,-1),(1,-1,-1),(1,0,-1),
  (1,1,-1),(0,1,-1),(-1,1,-1),(-1,0,-1),
  (-1,-1,0),(1,-1,0),(1,1,0),(-1,1,0),
  (-1,-1,1),(0,-1,1),(1,-1,1),(1,0,1),
  (1,1,1),(0,1,1),(-1,1,1),(-1,0,1)
};
    
triple[] K={
  (1,-1,-1),(1,0,-1),(1,1,-1),(1,1,0),
  (1,1,1),(1,0,1),(1,-1,1),(1,-1,0),
  (0,0,-1),(0,0,1),(0,-1,0),(0,1,0)
};
    
surface s;
    
void recur(triple p, real u, int level) {
  if(level > 1 )
    for(triple V : M)
      recur(p+u*V,u/3,level-1);
  else
    for(triple V : K) {
      transform3 T=shift(p)*scale3(u)*shift(V)*scale3(0.5);
      surface t=T*surface((1,-1,-1)--(1,1,-1)--(1,1,1)--(1,-1,1)--cycle);
      s.append(t);
      s.append(scale3(-1)*t);
    }
}
    
recur((0,0,0),1/3,3);
    
surface sf;
sf.append(s);
sf.append(rotate(90,Y)*s);
sf.append(rotate(90,Z)*s);
sf.colors(palette(sf.map(abs),Rainbow()));
    
draw(sf,render(compression=Low,merge=true));
C'est bien ca que tu cherche ...? Après, je ne maitrise pas ce genre de code.
Si la nuit m'inspire, peut être un code perso demain...

Bonne nuit, Maurice.
Asymptote :
----> Démarrage rapide : http://cgmaths.fr/Atelier/Asymptote/Asymptote.html
----> Documentation 3D : http://www.mathco.tuxfamily.org et si ça ne marche pas, essayez la version pdf
XavteX
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 122
Inscription : jeudi 13 janvier 2011, 09:44

Re: Un nouveau défi!

Message par XavteX »

:clapping:
Et en plus ça compile! c'est long mais ça compile!
Incroyable le peu de lignes de code!

Reste à y comprendre quelque chose...
On y voit translations et rotations... je pensais qu'il fallait passer par des homothéties...

Merci Maurice!
Xavier
maurice
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 399
Inscription : jeudi 25 mars 2010, 13:49

Re: Un nouveau défi!

Message par maurice »

XavteX a écrit ::clapping:
Et en plus ça compile! c'est long mais ça compile!
Incroyable le peu de lignes de code!
Je n'y suis absolument pour rien, c'est un exemple de la documentation officielle. Ce code, je n'y comprends rien de rien !...
Je vais essayer de produire un code plus simple (il sera forcément plus simple si c'est moi qui le fait) si j'ai le temps aujourd'hui (ou demain sinon)...
Bonne journée
Maurice
Asymptote :
----> Démarrage rapide : http://cgmaths.fr/Atelier/Asymptote/Asymptote.html
----> Documentation 3D : http://www.mathco.tuxfamily.org et si ça ne marche pas, essayez la version pdf
GMaths
Utilisateur chevronné
Utilisateur chevronné
Messages : 2038
Inscription : lundi 01 octobre 2007, 10:20

Re: Un nouveau défi!

Message par GMaths »

maurice a écrit :Il y a toujours l'exemple de la gallerie officielle : SierpinskiSponge.asy.
Comment ai-je pu passer à côté d'un si joli exemple ? Je ne l'avais jamais vu... ou alors je l'ai oublié et Alzheimer me guette.

J'ai essayé : recur((0,0,0),1/3,4);
mais il fallait s'en douter : out of memory
Dernière modification par GMaths le jeudi 20 janvier 2011, 12:54, modifié 1 fois.
GMaths
Utilisateur chevronné
Utilisateur chevronné
Messages : 2038
Inscription : lundi 01 octobre 2007, 10:20

Re: Un nouveau défi!

Message par GMaths »

XavteX a écrit :Reste à y comprendre quelque chose...
On y voit translations et rotations... je pensais qu'il fallait passer par des homothéties...
Avec trois scale3 dans le script... je te rassure : il y a bien des homothéties !

Bien sûr, la solution retenue n'est pas un empilage de cubes : ce ne pouvait qu'être un tracé des facettes, dans trois directions... pour avoir quelque chose de léger.
GMaths
Utilisateur chevronné
Utilisateur chevronné
Messages : 2038
Inscription : lundi 01 octobre 2007, 10:20

Re: Un nouveau défi

Message par GMaths »

Pour ceux qui n'ont pas encore Asymptote prêt à compiler... on parle de cela :

Image

Je peux fournir le pdf qui permet, avec acrobat reader, de faire tourner la figure à la souris... si cela intéresse quelqu'un qui n'a pas envie d'installer Asymptote.
XavteX
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 122
Inscription : jeudi 13 janvier 2011, 09:44

Re: Un nouveau défi

Message par XavteX »

Oui un tracé de facettes comme le fabuleux teapot de philippe Ivaldi...
Il faudra donc nous expliquer ce beau script GMaths!
:D
GMaths
Utilisateur chevronné
Utilisateur chevronné
Messages : 2038
Inscription : lundi 01 octobre 2007, 10:20

Re: Un nouveau défi

Message par GMaths »

XavteX a écrit :Oui un tracé de facettes comme le fabuleux teapot de philippe Ivaldi...
Les deux exemples ne sont pas du tout comparables !

J'utilisais le mot facette pour "petite face", du fait de la taille petite des cubes : on trace des faces de cubes de façon réfléchie... au lieu d'avoir une gestion au niveau des cubes entiers, pour éviter les doublons de faces.
XavteX a écrit :Il faudra donc nous expliquer ce beau script
Fais comme moi :
  • réduis les points de M à huit(les deux premières lignes) que tu dessines en rouge,
  • traces les points de K en bleu (deux coïncident avec deux de M),
  • commente la ligne suivante : // s.append(scale3(-1)*t); pour supprimer des symétriques
  • trace le cube de côté 2
  • tu peux modifier u dans l'appel de recur, j'ai mis 1/2 : u=1 est intéressant pour comprendre.
  • tu obtiens une figure comme celle-ci...

    Image
    ... que tu regardes, et tu t'écris tout seul chez toi : Eurêka ! :mrgreen:
GMaths
Utilisateur chevronné
Utilisateur chevronné
Messages : 2038
Inscription : lundi 01 octobre 2007, 10:20

Re: Un nouveau défi

Message par GMaths »

Tiens, j'ai réalisé que la liste de K pouvait être réduite aux dix premiers points.

Code : Tout sélectionner

(0,0,-1),(0,0,1)           //,(0,-1,0),(0,1,0)
Les deux derniers sont inutiles compte tenu de la symétrie qui est ensuite utilisée : il suffit d'avoir 10 centres de cubes sur les 20.
Il y a quelques faces qui sont inutilement doublées dans la figure d'origine.

Ce serait éventuellement à faire remarquer sur le forum officiel.
maurice
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 399
Inscription : jeudi 25 mars 2010, 13:49

Re: Un nouveau défi

Message par maurice »

GMaths a écrit :Tiens, j'ai réalisé que la liste de K pouvait être réduite aux dix premiers points.

Code : Tout sélectionner

(0,0,-1),(0,0,1)           //,(0,-1,0),(0,1,0)
Les deux derniers sont inutiles compte tenu de la symétrie qui est ensuite utilisée : il suffit d'avoir 10 centres de cubes sur les 20.
Il y a quelques faces qui sont inutilement doublées dans la figure d'origine.

Ce serait éventuellement à faire remarquer sur le forum officiel.
Déjà fait je suppose ? Tiens nous au courant, en attendant j'essaie de comprendre le code précédent.

Maurice
Asymptote :
----> Démarrage rapide : http://cgmaths.fr/Atelier/Asymptote/Asymptote.html
----> Documentation 3D : http://www.mathco.tuxfamily.org et si ça ne marche pas, essayez la version pdf
GMaths
Utilisateur chevronné
Utilisateur chevronné
Messages : 2038
Inscription : lundi 01 octobre 2007, 10:20

Re: Un nouveau défi

Message par GMaths »

maurice a écrit :Déjà fait je suppose ? Tiens nous au courant
oui :-) ok :-)
maurice a écrit :en attendant j'essaie de comprendre le code précédent.
Sur le sujet, tu verras passer sur le net : "attracteur de 20 homothéties de rapport 1/3".

En exploitant une symétrie... il n'en faut plus que 10.
GMaths
Utilisateur chevronné
Utilisateur chevronné
Messages : 2038
Inscription : lundi 01 octobre 2007, 10:20

Re: Un nouveau défi

Message par GMaths »

Trois mois plus tard... XavTeX relance le sujet de l'éponge (dans un nouveau sujet - était-ce utile ?) ce qui débouche sur une nouvelle proposition différente.