IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Mathématiques Discussion :

Rotation d'une "face" d'un hypercube


Sujet :

Mathématiques

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 118
    Points : 71
    Points
    71
    Par défaut Rotation d'une "face" d'un hypercube
    Salut, tous.

    Je suis resté bloqué sur la 4e dimension spatiale depuis miegakure et je m'intéresse aux hypercubes, enfin aux tesseract plutôt puisque je me cantonne à 4 dimensions.

    J'ai péniblement appris à me les représenter : a quoi ca ressemble, comment ca marche, etc. Mais un problème demeure : comment calculer leur rotation ?

    Pour l'instant, le meilleur exemple de rotation d'hypercube que j'ai est le suivant :



    Considérons un hypercube comme 8 cubes nommés : gauche, droite, haut, bas, avant, arrière, ana, kata. Un exemple de rotation serait d'intervertir ces cubes comme suit :

    gauche -> ana
    ana -> droite
    droite -> kata
    kata -> gauche

    haut -> avant
    avant -> bas
    bas -> arrière
    arrière -> haut

    ... mais cette rotation ne me convient pas. Je m'explique.


    J'ai une idée de code derrière la tête et j'ai mis mon algo en œuvre dans un simple cube 3D. Je voudrais maintenant porter le concept dans un hypercube à 4 dimensions.

    Pour illustrer mon propos, je vais utiliser l'image d'un rubrik's cube. Le but du jeu pour moi est de faire pivoter une face du rubrik's cube. Facile : ca consiste à intervertir judicieusement les 8 éléments externes de la face considérée.




    Maintenant quel est le mécanisme équivalent sur un hypercube ? Lorsque j'ai voulu "permuter" mon cube 3D, j'ai d'abord du en isoler une partie 2D : la face. J'ai ensuite appliqué la rotation sur ce morceau 2D avant de le ré-injecter dans la structure 3D. On constate donc une "réduction de dimension", un passage de 3D vers 2D pour l'opération. Donc, logiquement, pour appliquer cette même transformation à un objet en 4D, je devrais d'abord en isoler une partie 3D (un des 8 cubes) et le faire entièrement tourner.

    Mais cette version ne me semble pas la bonne, le lien suivant permet de faire tourner un "rubrik's tesseract" et on voit que la rotation concerne plusieurs cubes :
    http://www.superliminal.com/cube/applet.html

    De plus, quand je tourne une face d'un cube, ca modifie la valeurs des autres faces. donc, logiquement, tourner de la même manière un tesseract doit modifier des valeurs dans plusieurs cubes.

    S'il y a des connaisseurs qui voient des méthodes pour m'aider ...

  2. #2
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 084
    Points
    16 084
    Par défaut
    Je te conseille de passer par la notation matricielle. La transformation que tu cherches a faire est une multiplication matricielle, par une matrice de rotation.

    Les matrices de rotations 'unitaires' sont simple a représenter quelque soit la dimension. Il suffit ensuite de les combiner (en les multipliant) pour faire une rotation plus compliquée.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 118
    Points : 71
    Points
    71
    Par défaut
    OK Merci.

    Je viens de chercher un peu mais je n'ai rien trouvé de probant dans cette direction, tu aurais des liens ?

    En fait, même la rotation d'un cube-4 peut se montrer compliquée, je suis sur qu'il existe une façon itérative de la décrire. Un peu comme on pourrait décrire la rotation d'une face d'un cube : "pour chaque élément de gauche a droite et de haut en bas" => "recopier en parcourant la face de haut en bas et de droite a gauche". C'est ce "petit" truc que je cherche.

  4. #4
    Membre émérite
    Avatar de SpiceGuid
    Homme Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 704
    Points : 2 990
    Points
    2 990
    Par défaut
    Je ne suis pas tout à fait du même avis que pseudocode.

    À mon avis le plus intéressants ce sont les cycles.
    Pour ton exemple de cube le ¼ de tour face avant, sens horloge, c'est simplement (1→2→3→6→9→8→7→4→)²

  5. #5
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 084
    Points
    16 084
    Par défaut
    Citation Envoyé par SpiceGuid Voir le message
    Je ne suis pas tout à fait du même avis que pseudocode.
    Pas de soucis. J'ai une approche très "infographique" du problème, qui n'est peut-être pas la bonne.

  6. #6
    Membre émérite
    Avatar de SpiceGuid
    Homme Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 704
    Points : 2 990
    Points
    2 990
    Par défaut
    Encore plus composable, (1→3→9→7→)(2→6→8→4→) où :
    • (1→3→9→7→) est le cycle sur les coins
    • (2→6→8→4→) est le cycle sur les arêtes

    Dès que tu as affaire à un puzzle de type Rubik il faut distinguer les sortes de pièces, coins, arêtes, centres...

    À mon avis les "faces" du tesseract sont des cubes ordinaires et peuvent donc tourner de 24 façons différentes.

    Citation Envoyé par SkyBack
    Mais cette version ne me semble pas la bonne, le lien suivant permet de faire tourner un "rubrik's tesseract" et on voit que la rotation concerne plusieurs cubes :
    À mon avis il ne s'agit pas du même objet en 4D.
    Dans l'animation ce sont les (hyper-)arêtes qui sont permutées.
    Dans l'applet ce sont les (hyper-)coins qui sont permutés.

    Tu as le même phénomène en 3D :
    • avec ceci tu ne permutes que les arêtes
    • avec ceci tu ne permutes que les coins

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 118
    Points : 71
    Points
    71
    Par défaut
    Tout d'abord, merci pour vos réponses.
    Ensuite, je dois préciser qu'effectivement, l'aspect graphique ne m'intéresse pas du tout ! Le but recherché est de "remplir" les cases du cube avec de l'information (un caractère) puis d'effectuer différentes opérations sur ce cube pour observer comment l'information originale à été modifiée.

    Voila un exemple de manipulation que je fais avec un simple cube 3D :
    - le remplir avec une chaine,
    - faire pivoter une face (y0 dans mon exemple, ce sont les éléments en gras qui ont pivoté dans le sens trigo)
    - "lire" le cube pour en ressortir une chaine.



    (comme vous voyez, le graphisme a été largement ignoré )

    Maintenant, je souhaiterais utiliser une structure 4D, qui m'offre plus de possibilités. L'une d'elle est la permutation (par arête ET par sommet) et je souhaiterais coder les fonctions équivalentes. Seulement, je n'arrive pas à me représenter comment les "cases" sont interverties dans la version 4D.

  8. #8
    Membre éprouvé Avatar de Nemerle
    Inscrit en
    Octobre 2003
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 106
    Points : 1 213
    Points
    1 213
    Par défaut
    Tu as du code source pour effectuer ta rotation ci-dessous:

    http://demonstrations.wolfram.com/RotatingAHypercube/

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 118
    Points : 71
    Points
    71
    Par défaut
    Tiens ? j'etais allé sur ce site mais j'avais pas vu la section "projet".

    Le code tiens en une seule page j'ai d'ailleurs un mot pour le développeur : "commentaires".
    BTW, cet aspect graphique ne m'intéresse pas, je cherche la méthode itérative, le truc logique du genre "déplacer la face X du cube A vers le cube B et pivoter le cube C".

Discussions similaires

  1. Réponses: 5
    Dernier message: 15/04/2005, 14h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo