The Big Bang Theory France
Chuck France
Jericho
Paris Enquetes Criminelles
Fringe

#1 14-04-2010 15:50:53

Koxinga
Expert en physique
Lieu: Universe in hot dense state
Date d'inscription: 25-09-2009
Messages: 653
Site web

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 :

http://upload.wikimedia.org/wikipedia/commons/thumb/d/d7/8-cell.gif/180px-8-cell.gif

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.

http://img10.hostingpics.net/pics/575401cube.png


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 ... smile

Dernière modification par Koxinga (14-04-2010 20:41:33)


PHP, cinéma, haiku, mon fourre-tout :
http://ashaku.free.fr/

Hors ligne

 

14-04-2010 15:50:53

Pub
Visiter les sponsors = Faire vivre le site


#2 15-04-2010 14:20:20

Koxinga
Expert en physique
Lieu: Universe in hot dense state
Date d'inscription: 25-09-2009
Messages: 653
Site web

Re: hypercube

Merci de ta réponse, shellorz.

Mea culpa, j'ai dit très peu de choses sur le but que je souhaite atteindre et j'ai l'impression que les pistes que tu me proposes sont destinées à afficher proprement le cube. En réalité, je ne cherche pas à afficher une jolie représentation graphique (ca existe déjà) mais plutôt à créer une structure multi-dimensionnelle, la remplir d'information et effectuer différentes opérations sur cette structure afin de voir comment ca modifie l'information initiale. Pour ce faire, j'ai besoin de savoir ce qu'il se passe quand on pivote une "face" d'un cube 4D.

J'ai la très forte impression qu'il s'agit d'une méthode géométrique, toujours la même. Exactement comme pivoter la face d'un cube, c'est une opération qui s'applique sur la face concernée (un tableau 2D) et qui dit "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".

Ce qu'il me manque, c'est la description de comment se déroule une rotation d'une "face d'un tesseract" (j'ignore s'il y a un mot approprié). Si l'on souhaite permuter sur le cube "ana" et sur l'axe x, ca doit être un truc du genre "permuter les faces x de tous les cubes selon un ordre précis (gauche -> ana -> droite -> kata) et en les faisant tourner au passage" par exemple.

J'ai fait un peu de mystère sur la finalité de tout ca car dans un premier temps je pensais que mon idée était très banale seulement, après une recherche sur la toile, je n'ai pas trouvé un seul site qui l'exploite. J'ai donc pour l'instant la vanité de croire qu'elle est originale et je souhaiterais qu'elle le reste. Donc, désolé d'être si vague. (Même s'il n'y a pas 36 applications pour cette gymnastique et que tu dois bien te douter de ce que je cherche à faire wink )

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.

http://img10.hostingpics.net/pics/745984test.png

Tout ca est assez prometteur mais je suis certain que ca serait encore mieux en 4D ! Mais pour ca il me faut la description précise de ce qu'il se passe lors d'une rotation dans un cube 4D pour écrire la fonction qui le fait ... et malgré mes tentatives, je n'obtiens pas les mêmes rotations que sur ce bel outil  :
http://www.superliminal.com/cube/cube.htm

Et en fait, j'ai l'impression qu'il me manque l'informatio nde base "autour de quoi on fait pivoter le tesseract ?". Un cube on en pivote "une face autour d'un axe". Quel sont les informations de base pour l'opération en 4D ? On dirait qu'il faut pivoter "les faces de 7 cubes autour de 2 axes", ou parfois un seul. Je n'arrive pas à isoler le mécanisme.

[...] Ensuite, tu peux utiliser des classes classiques de manipulations d'objet 3D pour en afficher le projeté écran.

Tu peux aussi t'amuser à décompiler les classes de l'archive du programme sur superluminal (en espérant qu'elles n'ont pas été strippées)

Ce sont des gens très bien qui filent directement le code java des classes utilisées (6,5K lignes de codes !!) Mais je n'ai pas bien saisi leur manière d'effectuer les rotations (c'est assez complexe, ils passent par pleins d'étapes et le code de l'affichage pollue la compréhension du mécanisme sous-jacent).

De plus, je souhaite avoir codé moi-même l'ensemble de ma solution. Il me manque surtout la méthode "logique", la compréhension de ce qu'il se passe pour le mettre en œuvre.

Dernière modification par Koxinga (15-04-2010 14:37:15)


PHP, cinéma, haiku, mon fourre-tout :
http://ashaku.free.fr/

Hors ligne

 

#3 15-04-2010 17:31:32

Koxinga
Expert en physique
Lieu: Universe in hot dense state
Date d'inscription: 25-09-2009
Messages: 653
Site web

Re: hypercube

ne confonds-tu pas avec la permutation circulaire ?

Peut-etre bien. Je veux reproduire le mouvement obtenu dans l'applet "superliminal".

Dans ce cas tu peux imaginer faire la permutation autour d'un plan (par exemple jklmnopqr)

Quel est le mode d'emploi de la permutation autour d'un plan ? (C'est pas de la fainéantise, j'ai pas trouvé)

Pour l'instant je n'ai que la rotation autour d'un axe a partir d'une case du cube "ana" (comme si on ne cliquait que sur la case centrale des faces du cube ana dans l'applet)

Supposons que l'on veuille faire pivoter autour de l'axe "haut-bas" comme si l'on cliquait sur la case centrale de la face supérieure du cube central de l'applet.
Je vois 3 choses à faire pour reproduire ce mouvement :
- faire pivoter le cube "ana" en entier
- faire pivoter la face "x-taille max" du cube "haut" (la face la plus en bas) ET la face "x-0" du cube "bas" (sa face la plus en haut)
- permuter les faces adjacentes au cube "ana" des cubes "gauche", "droite", "avant" et "arrière" selon le schéma :
gauche(z-taille) -> avant (y-0) -> droite(z-0) -> arrière(y-taille).


PHP, cinéma, haiku, mon fourre-tout :
http://ashaku.free.fr/

Hors ligne

 

#4 15-04-2010 18:21:46

Valensi
Jeune geek
Date d'inscription: 02-01-2010
Messages: 21

Re: hypercube

Les grands esprits se rencontrent ^^

Hors ligne

 

#5 16-04-2010 10:28:12

Koxinga
Expert en physique
Lieu: Universe in hot dense state
Date d'inscription: 25-09-2009
Messages: 653
Site web

Re: hypercube

Faut quand même avouer que c'est confusant ... Hier soir, je me suis choppé un mal de crâne XXL à essayer de pivoter mon $#%£! d'hypercube.

La permutation circulaire dont parle shellorz me semble la meilleure piste. J'ai bien mes huit cubes mais je galère pas mal a les faire tourner de manière cohérente (pour pouvoir produire le mouvement inverse par la suite bien sur)

shellorz a écrit:

Une rotation 4D se fait autour d'un plan; il faut que la rotation conserve les distances et les angles (trièdres orientés)

Ca reviendrait a faire un demi-tour a mon cube entier autour des 2 axes du plan autour duquel je veux faire ma rotation ? Si c'est ca, c'est une opération que je peux ordonner a mon cube d'accomplir :

http://img10.hostingpics.net/pics/685462test2.png

Mais je ne vois pas comment ca peut m'aider pour l'hypercube ou visiblement il faut permuter certaines faces des cubes entre eux.
Je note d'ailleurs que pivoter à partir d'une case sur une arête ou une case dans un coin ou encore une case au centre ne produit pas le même résultat. J'en déduis 3 rotations (dont l'algo de la dernière est grossièrement expliqué dans mon précédent post)


PHP, cinéma, haiku, mon fourre-tout :
http://ashaku.free.fr/

Hors ligne

 

#6 18-04-2010 21:57:54

Koxinga
Expert en physique
Lieu: Universe in hot dense state
Date d'inscription: 25-09-2009
Messages: 653
Site web

Re: hypercube

C'est bon c'est une affaire qui roule smile


PHP, cinéma, haiku, mon fourre-tout :
http://ashaku.free.fr/

Hors ligne

 

#7 19-04-2010 15:02:25

Koxinga
Expert en physique
Lieu: Universe in hot dense state
Date d'inscription: 25-09-2009
Messages: 653
Site web

Re: hypercube

Ben .. j'ai choisi une méthode moins smart mais plus rapide : j'ai observé comment étaient interverties les cases sur les cubes du tesseract et j'ai tout bonnement reproduit ces mouvements.
Là j'ai un proto qui fonctionne assez bien pour lâcher l'affaire et passer à autre chose smile


PHP, cinéma, haiku, mon fourre-tout :
http://ashaku.free.fr/

Hors ligne

 

Pied de page des forums

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson