Rubik's Cube

Rubik's Cube

Messagepar projetmbc » 26 Fév 2011 13:07

Bonjour,
est-ce que quelqu'un parmi vous a deja produit un Rubik's Cube 3D et un autre plan (patron) ?

Je devrais a partir de l'annee prochaine ecrire des mini-documents sur des applications concretes des maths (au depart, ce sera pour moi et ensuite je mettrais cela en ligne).
projetmbc
 
Messages: 398
Inscription: 26 Déc 2009 18:01

Re: Rubik's Cube

Messagepar Joffrey » 26 Fév 2011 13:54

Bonjour,
J'ai pondu ça un jour, mais c'est très long pour faire tourner le cube, il doit y avoir moyen d'optimiser le code
Code: Tout sélectionner
TeXgraph#
{version 1.95}
Cmd   [Fenetre(-5+5*i,5-5*i,1+i), Marges(0.5,0.5,0.5,0.5), Border(0)];
   [OriginalCoord(1),IdMatrix()];
   [theta:=0.5236, phi:=1.1345, IdMatrix3D(), ModelView(ortho)];
   [GrayScale(0), ComptGraph:=1];

Mac
    DessinCube = [
   $P:=Parallelep(%1,%2*vecI,%3*vecJ,%4*vecK),
   bdFacet(FacesNum(P,1), [color:=white]),Re(jump)-i,
   bdFacet(FacesNum(P,2), [color:=yellow]),Re(jump)-i,
   bdFacet(FacesNum(P,3), [color:=red]),Re(jump)-i,
   bdFacet(FacesNum(P,4), [color:=orange]),Re(jump)-i,
   bdFacet(FacesNum(P,5), [color:=blue]),Re(jump)-i,
   bdFacet(FacesNum(P,6), [color:=forestgreen]),Re(jump)-i,
   bdLine(Aretes(P),[tube:=1, color:=black]),Re(jump)-i
   ];

Cmd   [DotScale:=1+i];
Graph objet1 = [
   view(-5,5,-5,5),
   backcolor:=dimgray,
   Build3D(
   for I from 0 to 2 do
         for J from 0 to 2 do
               for K from 0 to 2 do
                     DessinCube(I*vecI+J*vecJ+K*vecK,1,1,1),
               od,
         od,
   od,
   //DessinCube(Origin,1,1,1),
   ),
   Display3D()
   ];
L'homme en noir fuyait à travers le désert, et le Pistoléro le suivait ...
Joffrey
 
Messages: 287
Inscription: 16 Juil 2009 17:05
Localisation: Vichy

Re: Rubik's Cube

Messagepar P.Fradin » 26 Fév 2011 15:24

Bonjour,

Une autre approche, plus rapide: faire un seul cube avec les traits en surface!

Code: Tout sélectionner
[
view(-3,3,-3,3), view3D(-3,3,-3,3,-3,3),Marges(0,0,0,0),size(9),
background(full,dimgray),
d:=3, O:=M(-d,-d,-d)/2,
F1:=[O,O+M(0,0,d),O+M(0,d,d), O+M(0,d,0),jump],
F2:=shift3d( reverse3d(F1), M(d,0,0)),
F3:=[O,O+M(d,0,0),O+M(d,0,d), O+M(0,0,d),jump],
F4:=shift3d(reverse3d(F3),M(0,d,0)),
F5:=[O,O+M(0,d,0),O+M(d,d,0), O+M(d,0,0),jump],
F6:=shift3d(reverse3d(F5),M(0,0,d)),
NewMac("options","[color:=%1, contrast:=0]"),
Build3D(
        bdFacet(F1, options(blue)),
        bdFacet(F2, options(green)),
        bdFacet(F3, options(red)),
        bdFacet(F4, options(orange)),
        bdFacet(F5, options(whitesmoke)),
        bdFacet(F6, options(yellow)),
        for L in [F1,shift3d(F1,M(d/3,0,0)),shift3d(F1,M(2*d/3,0,0)),F2,
                 F3,shift3d(F3,M(0,d/3,0)),shift3d(F3,M(0,2*d/3,0)),F4,
                 F5,shift3d(F5,M(0,0,d/3)),shift3d(F5,M(0,0,2*d/3)),F6]
        By jump do
           bdLine(L,[color:=black, width:=6, close:=1]), sep3D
        od
        ),
Display3D()
]

Vue JavaView:
P.Fradin
Avatar de l’utilisateur
P.Fradin
Administrateur du site
 
Messages: 1887
Inscription: 29 Oct 2008 15:04

Re: Rubik's Cube

Messagepar projetmbc » 27 Fév 2011 11:23

Bonjour,
merci pour les deux solutions.

La 1ere a l'avantage de permettre de dessiner un Rubik's cube "melange" ou meme "eclate".

Deux petites questions.
  1. Je voudrais afficher un nom pour chaque face du type R_1 par exemple pour une case rouge. J'aimerais aue le nom apparaisse en 3D. Que faut-il utiliser ?
  2. Peut-on en 3D dessiner un carre par dessus un cube ?

PS : je n'ai pas mon ordi. sous la main.
projetmbc
 
Messages: 398
Inscription: 26 Déc 2009 18:01

Re: Rubik's Cube

Messagepar P.Fradin » 27 Fév 2011 11:57

Pour faire apparaitre les labels en 3D, on peut faire ainsi:
Code: Tout sélectionner
[
view(-3,3,-3,3), view3D(-3,3,-3,3,-3,3),Marges(0,0,0,0),size(9),
background(full,dimgray),
d:=3, O:=M(-d,-d,-d)/2,
F1:=[O,O+M(0,0,d),O+M(0,d,d), O+M(0,d,0),jump],
F2:=shift3d( reverse3d(F1), M(d,0,0)),
F3:=[O,O+M(d,0,0),O+M(d,0,d), O+M(0,0,d),jump],
F4:=shift3d(reverse3d(F3),M(0,d,0)),
F5:=[O,O+M(0,d,0),O+M(d,d,0), O+M(d,0,0),jump],
F6:=shift3d(reverse3d(F5),M(0,0,d)),
NewMac("options","[color:=%1, contrast:=0]"),
Build3D(
        bdFacet(F1, options(blue)),
        bdFacet(F2, options(green)),
        bdFacet(F3, options(red)),
        bdFacet(F4, options(orange)),
        bdFacet(F5, options(whitesmoke)),
        bdFacet(F6, options(yellow)),
        for L in [F1,shift3d(F1,M(d/3,0,0)),shift3d(F1,M(2*d/3,0,0)),F2,
                 F3,shift3d(F3,M(0,d/3,0)),shift3d(F3,M(0,2*d/3,0)),F4,
                 F5,shift3d(F5,M(0,0,d/3)),shift3d(F5,M(0,0,2*d/3)),F6]
        By jump do
           bdLine(L,[color:=black, width:=6, close:=1]), sep3D
        od,
        for j from 0 to 2 do
            for k from 0 to 2 do
                bdLabel( M((j-1)*d/3, -d/2, (k-1)*d/3), "R_1",
                         [TeXify:=1, labeldir:=[vecI,vecK]]), sep3D
            od
        od,

        ),
Display3D()
]

rubiksCube.png
rubiksCube.png (20.42 Kio) Consulté 19990 fois


Pour ta deuxième question, le plus simple est de ne dessiner que des carrés! Cela n'empêche pas d'ailleurs de représenter le cube en position "mélangée", je me demande même si on ne pourrait faire carrément le jeu du rubick's cube dans l'interface graphique de TeXgraph, avec un bouton pour chaque manœuvre possible, je vais y réfléchir...
P.Fradin
Avatar de l’utilisateur
P.Fradin
Administrateur du site
 
Messages: 1887
Inscription: 29 Oct 2008 15:04

Re: Rubik's Cube

Messagepar projetmbc » 27 Fév 2011 12:24

Merci pour les labels, c'est ce que je cherchais.

Sinon pour les carres, je vais les utiliser pour faire tourner en "vrai' les cubes dont les faces 'interieures" sont noires. Si je suis assez motive je representerais l'une des methodes de resolution pas a pas.

P.Fradin a écrit:...je me demande même si on ne pourrait faire carrément le jeu du rubick's cube dans l'interface graphique de TeXgraph, avec un bouton pour chaque manœuvre possible, je vais y réfléchir...

En manipulant l'applet, je me suis dit qu'un clic droit sur une tranche permettrait de la manipuler pour la faire tourner.

Avec des touches, on pourrait faire comme suit :
  • On garde les fleches pour faire tourner et observer le cube.
  • CTRL + Fleches Verticales pour selectionner une tranche horizontale.
  • CTRL + Fleches Horizontales pour faire tourner la tranche horizontale selectionnee.
  • ALT + Fleches Horizontales pour selectionner une tranche verticale.
  • ALT + Fleches Verticales pour faire tourner la tranche verticale selectionnee.
projetmbc
 
Messages: 398
Inscription: 26 Déc 2009 18:01

Re: Rubik's Cube

Messagepar Joffrey » 27 Fév 2011 12:59

Bonjour,

Pour ta deuxième question, le plus simple est de ne dessiner que des carrés! Cela n'empêche pas d'ailleurs de représenter le cube en position "mélangée", je me demande même si on ne pourrait faire carrément le jeu du rubick's cube dans l'interface graphique de TeXgraph, avec un bouton pour chaque manœuvre possible, je vais y réfléchir...

C'est bien ce que j'avais en tête mais j'avais laissé tombé par manque de temps
L'homme en noir fuyait à travers le désert, et le Pistoléro le suivait ...
Joffrey
 
Messages: 287
Inscription: 16 Juil 2009 17:05
Localisation: Vichy

Re: Rubik's Cube

Messagepar P.Fradin » 27 Fév 2011 17:21

Voilà de quoi jouer au rubik's cube dans TeXgraph!
rubiks_Cube.teg
(7.83 Kio) Téléchargé 1063 fois

Un aperçu:
rubiksCube2.png
rubiksCube2.png (21.67 Kio) Consulté 19966 fois

Les opérations se font par l'intermédiaire de boutons, elles sont représentées sous la forme: axe (Ox, Oy ou Oz), tranche (1 ou 2 ou 3) et sens (+1 ou -1), le petit repère dessiné en bas à gauche permet de s'y retrouver.
P.Fradin
Avatar de l’utilisateur
P.Fradin
Administrateur du site
 
Messages: 1887
Inscription: 29 Oct 2008 15:04

Re: Rubik's Cube

Messagepar Joffrey » 27 Fév 2011 18:00

Belle performance pour le 1000\ieme message !!!!!!!!!!!!!!!!!!!!!!!!!!!!!
L'homme en noir fuyait à travers le désert, et le Pistoléro le suivait ...
Joffrey
 
Messages: 287
Inscription: 16 Juil 2009 17:05
Localisation: Vichy

Re: Rubik's Cube

Messagepar Alphonse Capriani » 27 Fév 2011 21:53

Très bonne remarque joffrey!!

Par contre, elle sera complètement hors de propos quand Patrick va nous répondre... J'aurais quand même été témoin grâce à toi de ce fait marquant de l'histoire de TeXgraph...

Image
Ya Ba Da Ba Dooo!!!
Avatar de l’utilisateur
Alphonse Capriani
 
Messages: 576
Inscription: 18 Juil 2009 19:10
Localisation: East Harlem - NY

Re: Rubik's Cube

Messagepar P.Fradin » 27 Fév 2011 22:18

Alphonse Capriani a écrit:Très bonne remarque joffrey!!

Par contre, elle sera complètement hors de propos quand Patrick va nous répondre...


Mais non, mais non... Ah! Tiens! 1001...
P.Fradin
Avatar de l’utilisateur
P.Fradin
Administrateur du site
 
Messages: 1887
Inscription: 29 Oct 2008 15:04

Re: Rubik's Cube

Messagepar P.Fradin » 28 Fév 2011 13:01

J'ai modifié le programme pour avoir en même temps la vue avant et la vue arrière du cube:
rubiks_CubeBis.teg
(11.87 Kio) Téléchargé 1054 fois


rubiks_CubeBis.png
rubiks_CubeBis.png (22.35 Kio) Consulté 19904 fois


[Edit]Le fichier a été mis à jour, l'ancien ne fonctionnait que pour la version 1.96.
P.Fradin
Avatar de l’utilisateur
P.Fradin
Administrateur du site
 
Messages: 1887
Inscription: 29 Oct 2008 15:04


Revenir vers Géométrie de l'espace

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 21 invités

cron