Qui sait dessiner une partition 3D avec des cubes ?

Tout ce qui concerne le langage Asymptote. Ce langage est utilisable sur le forum via les balises asy.
[participation réservée aux utilisateurs inscrits]
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.
projetmbc
Utilisateur chevronné
Utilisateur chevronné
Messages : 2283
Inscription : samedi 29 décembre 2007, 00:58

Qui sait dessiner une partition 3D avec des cubes ?

Message non lu par projetmbc »

Bonjour.

Quelqu'un saurait-il faire un truc ressemblant plus ou moins à ceci en 3D, afin de pouvoir aussi avoir, à moindre frais, les vues de dessus, de face et de "côté" ?
Capture d’écran 2022-11-04 à 09.23.21.png
MB
Administrateur
Administrateur
Messages : 8083
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant

Re: Qui sait dessiner une partition 3D avec des cubes ?

Message non lu par MB »

Bonjour, je propose le code suivant, qui va produire un fichier html contenant un script WebGL permettant de manipuler la figure dans un navigateur.

Code : Tout sélectionner

size(5cm);

settings.outformat = "html";

import three;

void draw_cube(real x, real y, real z)
{
    draw(shift(x,y,z)*unitbox);
    draw(shift(x,y,z)*unitcube,palegray);
}

draw_cube(0,0,0);
draw_cube(1,0,0);
draw_cube(2,0,0);
draw_cube(3,0,0);
draw_cube(4,0,0);
draw_cube(5,0,0);
draw_cube(5,0,1);
draw_cube(6,0,0);
draw_cube(6,0,1);
draw_cube(6,0,2);
draw_cube(0,1,0);
draw_cube(1,1,0);
draw_cube(2,1,0);
draw_cube(3,1,0);
draw_cube(4,1,0);
draw_cube(5,1,0);
draw_cube(5,1,1);
draw_cube(5,1,2);
draw_cube(6,1,0);
draw_cube(6,1,1);
draw_cube(6,1,2);
draw_cube(0,2,0);
draw_cube(0,2,1);
draw_cube(0,2,2);
draw_cube(1,2,0);
draw_cube(1,2,1);
draw_cube(1,2,2);
draw_cube(1,2,3);
draw_cube(2,2,0);
draw_cube(2,2,1);
draw_cube(2,2,2);
draw_cube(3,2,0);
draw_cube(4,2,0);
draw_cube(4,2,1);
draw_cube(4,2,2);
draw_cube(4,2,3);
draw_cube(5,2,0);
draw_cube(5,2,1);
draw_cube(5,2,2);
draw_cube(6,2,0);
draw_cube(6,2,1);
draw_cube(6,2,2);
cubes_webgl.png
[Edit] Je viens de m’apercevoir que ce n'est pas exactement la même figure, mais le principe est là.
MB. (rejoignez pCloud et bénéficiez de 10Go de stockage en ligne gratuits)
Pas d'aide en message privé. Merci de consulter ce sujet avant de poster votre premier message.
projetmbc
Utilisateur chevronné
Utilisateur chevronné
Messages : 2283
Inscription : samedi 29 décembre 2007, 00:58

Re: Qui sait dessiner une partition 3D avec des cubes ?

Message non lu par projetmbc »

Comme on dit chez les rappeurs : "Big up !". :lol:

Par contre, quelle est l'utilité de unitbox ?

Nickel chrome.
MB
Administrateur
Administrateur
Messages : 8083
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant

Re: Qui sait dessiner une partition 3D avec des cubes ?

Message non lu par MB »

projetmbc a écrit : samedi 05 novembre 2022, 20:54 Par contre, quelle est l'utilité de unitbox ?
C'est pour tracer les arêtes.
MB. (rejoignez pCloud et bénéficiez de 10Go de stockage en ligne gratuits)
Pas d'aide en message privé. Merci de consulter ce sujet avant de poster votre premier message.
conan
Utilisateur confirmé
Utilisateur confirmé
Messages : 71
Inscription : mardi 21 mars 2006, 10:10

Re: Qui sait dessiner une partition 3D avec des cubes ?

Message non lu par conan »

Package ProfCollege.
projetmbc
Utilisateur chevronné
Utilisateur chevronné
Messages : 2283
Inscription : samedi 29 décembre 2007, 00:58

Re: Qui sait dessiner une partition 3D avec des cubes ?

Message non lu par projetmbc »

Merci MB pour le complément.

conan, je sais, c'est ProfCollege qui m'a inspiré cette demande.

Ceci étant dit, je me tourne vers Asymptote pour les raisons suivantes.
  • Graphique 2D/3D impeccable avec respect possible des polices et taille du doc LaTeX.
  • Capacité de programmation avec une syntaxe non ésotérique à la LaTeX3 (je ne préfère pas parler de TeX).
  • Différents formats de sortie.
  • Ligne de commandes : pratique pour l'automatisation.
Je garde TikZ et LuaTeX, ou juste LaTeX3, pour les petits diagrammes, et les macros de rédaction.
Dernière modification par projetmbc le dimanche 06 novembre 2022, 12:23, modifié 1 fois.
conan
Utilisateur confirmé
Utilisateur confirmé
Messages : 71
Inscription : mardi 21 mars 2006, 10:10

Re: Qui sait dessiner une partition 3D avec des cubes ?

Message non lu par conan »

ProfCollege est parfaitement utilisable sous lualatex.
Les avantages cités sont présents dans les autres compléments graphiques.
Le choix que tu fais est personnel et je le respecte. Bon amusement avec les cubes.
MB
Administrateur
Administrateur
Messages : 8083
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant

Re: Qui sait dessiner une partition 3D avec des cubes ?

Message non lu par MB »

@projetmbc. J'avais mal compris la demande, je pensais que l'objectif était d'obtenir une figure 3d manipulable dans tous les sens.

@conan. Toutes les figures sont codées en metapost dans le paquet ProfCollege ? J'ai sans doute mal cherché, mais je n'ai pas trouvé le code de la commande \VueCube.
MB. (rejoignez pCloud et bénéficiez de 10Go de stockage en ligne gratuits)
Pas d'aide en message privé. Merci de consulter ce sujet avant de poster votre premier message.
conan
Utilisateur confirmé
Utilisateur confirmé
Messages : 71
Inscription : mardi 21 mars 2006, 10:10

Re: Qui sait dessiner une partition 3D avec des cubes ?

Message non lu par conan »

@MB : c'est disponible dans la dernière version. Faites une mise à jour. Oui, toutes les figures sont codées en metapost.
projetmbc
Utilisateur chevronné
Utilisateur chevronné
Messages : 2283
Inscription : samedi 29 décembre 2007, 00:58

Re: Qui sait dessiner une partition 3D avec des cubes ?

Message non lu par projetmbc »

MB a écrit : dimanche 06 novembre 2022, 10:50 @projetmbc. J'avais mal compris la demande, je pensais que l'objectif était d'obtenir une figure 3d manipulable dans tous les sens.
Tant mieux, car j'ai pour projet de faire un site sur ma vision des maths, à mon humble niveau. Rien que ça ! :lol:
MB
Administrateur
Administrateur
Messages : 8083
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant

Re: Qui sait dessiner une partition 3D avec des cubes ?

Message non lu par MB »

conan a écrit : dimanche 06 novembre 2022, 10:59 @MB : c'est disponible dans la dernière version. Faites une mise à jour.
Effectivement, je n'avais pas la dernière version.
Je voulais voir comment l'aspect aléatoire avait été pris en charge, mais ça ne m'a pas sauté aux yeux.
MB. (rejoignez pCloud et bénéficiez de 10Go de stockage en ligne gratuits)
Pas d'aide en message privé. Merci de consulter ce sujet avant de poster votre premier message.
conan
Utilisateur confirmé
Utilisateur confirmé
Messages : 71
Inscription : mardi 21 mars 2006, 10:10

Re: Qui sait dessiner une partition 3D avec des cubes ?

Message non lu par conan »

@MB : uniformdeviate.
MB
Administrateur
Administrateur
Messages : 8083
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant

Re: Qui sait dessiner une partition 3D avec des cubes ?

Message non lu par MB »

D'accord merci, donc pas d'appel à lua.
MB. (rejoignez pCloud et bénéficiez de 10Go de stockage en ligne gratuits)
Pas d'aide en message privé. Merci de consulter ce sujet avant de poster votre premier message.
conan
Utilisateur confirmé
Utilisateur confirmé
Messages : 71
Inscription : mardi 21 mars 2006, 10:10

Re: Qui sait dessiner une partition 3D avec des cubes ?

Message non lu par conan »

Non, aucun appel à lua.
projetmbc
Utilisateur chevronné
Utilisateur chevronné
Messages : 2283
Inscription : samedi 29 décembre 2007, 00:58

Re: Qui sait dessiner une partition 3D avec des cubes ?

Message non lu par projetmbc »

Mais Lua, c'est puissant via LuaLaTeX. Ce message était-il utile ? :crazy: :lol:
projetmbc
Utilisateur chevronné
Utilisateur chevronné
Messages : 2283
Inscription : samedi 29 décembre 2007, 00:58

Re: Qui sait dessiner une partition 3D avec des cubes ?

Message non lu par projetmbc »

Juste pour le fun...
stepbystep.gif
stepbystep.gif (59.85 Kio) Consulté 5595 fois

Code : Tout sélectionner

import animation;
import three;

size(5cm);

void draw_cube(real x, real y, real z)
{
    draw(shift(x,y,z)*unitbox);
    draw(shift(x,y,z)*unitcube,palegray);
}

animation a;

draw_cube(0,0,0);
a.add();

draw_cube(1,0,0);
a.add();

draw_cube(2,0,0);
a.add();

draw_cube(3,0,0);
a.add();

draw_cube(4,0,0);
a.add();

draw_cube(5,0,0);
a.add();

draw_cube(5,0,1);
a.add();

draw_cube(6,0,0);
a.add();

draw_cube(6,0,1);
a.add();

draw_cube(6,0,2);
a.add();

draw_cube(0,1,0);
a.add();

draw_cube(1,1,0);
a.add();

draw_cube(2,1,0);
a.add();

draw_cube(3,1,0);
a.add();

draw_cube(4,1,0);
a.add();

draw_cube(5,1,0);
a.add();

draw_cube(5,1,1);
a.add();

draw_cube(5,1,2);
a.add();

draw_cube(6,1,0);
a.add();

draw_cube(6,1,1);
a.add();

draw_cube(6,1,2);
a.add();

draw_cube(0,2,0);
a.add();

draw_cube(0,2,1);
a.add();

draw_cube(0,2,2);
a.add();

draw_cube(1,2,0);
a.add();

draw_cube(1,2,1);
a.add();

draw_cube(1,2,2);
a.add();

draw_cube(1,2,3);
a.add();

draw_cube(2,2,0);
a.add();

draw_cube(2,2,1);
a.add();

draw_cube(2,2,2);
a.add();

draw_cube(3,2,0);
a.add();

draw_cube(4,2,0);
a.add();

draw_cube(4,2,1);
a.add();

draw_cube(4,2,2);
a.add();

draw_cube(4,2,3);
a.add();

draw_cube(5,2,0);
a.add();

draw_cube(5,2,1);
a.add();

draw_cube(5,2,2);
a.add();

draw_cube(6,2,0);
a.add();

draw_cube(6,2,1);
a.add();

draw_cube(6,2,2);
a.add();


a.movie(delay=250);
Très, très long à compiler !

Code : Tout sélectionner

> time asy stepbystep.asy
asy stepbystep.asy  322,01s user 5,73s system 101% cpu 5:23,03 total
MB
Administrateur
Administrateur
Messages : 8083
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant

Re: Qui sait dessiner une partition 3D avec des cubes ?

Message non lu par MB »

Le code suivant compile plus rapidement, mais j'ai été obligé d'ajouter une boite invisible car sinon l'animation ne permettait pas de visualiser toute la figure.

Code : Tout sélectionner

import animation;
import three;

settings.render = 0;

size(5cm);

void draw_cube(real x, real y, real z)
{
    draw(shift(x,y,z)*unitbox);
    draw(shift(x,y,z)*unitcube,palegray);
}

animation a;

draw(xscale3(7)*yscale3(3)*zscale3(4)*unitbox,invisible);

draw_cube(0,0,0);
save();
a.add();

draw_cube(1,0,0);
save();
a.add();

draw_cube(2,0,0);
save();
a.add();

draw_cube(3,0,0);
save();
a.add();

draw_cube(4,0,0);
save();
a.add();

draw_cube(5,0,0);
save();
a.add();

draw_cube(5,0,1);
save();
a.add();

draw_cube(6,0,0);
save();
a.add();

draw_cube(6,0,1);
save();
a.add();

draw_cube(6,0,2);
save();
a.add();

draw_cube(0,1,0);
save();
a.add();

draw_cube(1,1,0);
save();
a.add();

draw_cube(2,1,0);
save();
a.add();

draw_cube(3,1,0);
save();
a.add();

draw_cube(4,1,0);
save();
a.add();

draw_cube(5,1,0);
save();
a.add();

draw_cube(5,1,1);
save();
a.add();

draw_cube(5,1,2);
save();
a.add();

draw_cube(6,1,0);
save();
a.add();

draw_cube(6,1,1);
save();
a.add();

draw_cube(6,1,2);
save();
a.add();

draw_cube(0,2,0);
save();
a.add();

draw_cube(0,2,1);
save();
a.add();

draw_cube(0,2,2);
save();
a.add();

draw_cube(1,2,0);
save();
a.add();

draw_cube(1,2,1);
save();
a.add();

draw_cube(1,2,2);
save();
a.add();

draw_cube(1,2,3);
save();
a.add();

draw_cube(2,2,0);
save();
a.add();

draw_cube(2,2,1);
save();
a.add();

draw_cube(2,2,2);
save();
a.add();

draw_cube(3,2,0);
save();
a.add();

draw_cube(4,2,0);
save();
a.add();

draw_cube(4,2,1);
save();
a.add();

draw_cube(4,2,2);
save();
a.add();

draw_cube(4,2,3);
save();
a.add();

draw_cube(5,2,0);
save();
a.add();

draw_cube(5,2,1);
save();
a.add();

draw_cube(5,2,2);
save();
a.add();

draw_cube(6,2,0);
save();
a.add();

draw_cube(6,2,1);
save();
a.add();

draw_cube(6,2,2);
save();
a.add();

a.movie(loops=10,delay=500,options="-density 200");
animation_cubes.gif
animation_cubes.gif (262.54 Kio) Consulté 5577 fois

Code : Tout sélectionner

$ time asy animation_cubes.asy 

real	0m11,335s
user	0m11,206s
sys	0m1,299s
MB. (rejoignez pCloud et bénéficiez de 10Go de stockage en ligne gratuits)
Pas d'aide en message privé. Merci de consulter ce sujet avant de poster votre premier message.
projetmbc
Utilisateur chevronné
Utilisateur chevronné
Messages : 2283
Inscription : samedi 29 décembre 2007, 00:58

Re: Qui sait dessiner une partition 3D avec des cubes ?

Message non lu par projetmbc »

Quelle est l'astuce ?
MB
Administrateur
Administrateur
Messages : 8083
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant

Re: Qui sait dessiner une partition 3D avec des cubes ?

Message non lu par MB »

Le settings.render = 0;.
MB. (rejoignez pCloud et bénéficiez de 10Go de stockage en ligne gratuits)
Pas d'aide en message privé. Merci de consulter ce sujet avant de poster votre premier message.
projetmbc
Utilisateur chevronné
Utilisateur chevronné
Messages : 2283
Inscription : samedi 29 décembre 2007, 00:58

Re: Qui sait dessiner une partition 3D avec des cubes ?

Message non lu par projetmbc »

C'est noté. Merci.