FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Logiciel de planétarium.
Projet d'un Rubik's cube en 3D - Page 2 Emptypar Pedro Aujourd'hui à 8:08

» Un autre pense-bête...
Projet d'un Rubik's cube en 3D - Page 2 Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Projet d'un Rubik's cube en 3D - Page 2 Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Projet d'un Rubik's cube en 3D - Page 2 Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Projet d'un Rubik's cube en 3D - Page 2 Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Projet d'un Rubik's cube en 3D - Page 2 Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Projet d'un Rubik's cube en 3D - Page 2 Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Projet d'un Rubik's cube en 3D - Page 2 Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Projet d'un Rubik's cube en 3D - Page 2 Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Projet d'un Rubik's cube en 3D - Page 2 Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Projet d'un Rubik's cube en 3D - Page 2 Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Projet d'un Rubik's cube en 3D - Page 2 Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Projet d'un Rubik's cube en 3D - Page 2 Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Projet d'un Rubik's cube en 3D - Page 2 Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Projet d'un Rubik's cube en 3D - Page 2 Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
-20%
Le deal à ne pas rater :
Drone Dji DJI Mini 4K (EU)
239 € 299 €
Voir le deal

 

 Projet d'un Rubik's cube en 3D

Aller en bas 
+7
mindstorm
Jack
Jean Claude
silverman
Marc
jjn4
Minibug
11 participants
Aller à la page : Précédent  1, 2, 3, 4, 5, 6, 7, 8, 9  Suivant
AuteurMessage
Minibug

Minibug


Nombre de messages : 4570
Age : 58
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

Projet d'un Rubik's cube en 3D - Page 2 Empty
MessageSujet: Re: Projet d'un Rubik's cube en 3D   Projet d'un Rubik's cube en 3D - Page 2 EmptyJeu 8 Sep 2022 - 23:17

Oui, tu poses la caméra en x,y,z avec CAM_POSITION x,y,z,
et après tu la fais pointer à l'endroit indiqué par POINT_POSITION x,y,z !

Et voila !! Laughing Laughing
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Jack
Admin
Jack


Nombre de messages : 2394
Date d'inscription : 28/05/2007

Projet d'un Rubik's cube en 3D - Page 2 Empty
MessageSujet: Re: Projet d'un Rubik's cube en 3D   Projet d'un Rubik's cube en 3D - Page 2 EmptyVen 9 Sep 2022 - 8:14

Minibug a écrit:
- D'où ma question : serait t-il possible de 'rattacher' ces tuiles à une sorte de parent virtuel ?
- Il suffirait ensuite de déplacer ce parent en x y ou z et les tuiles suivraient le mouvement correspondant...
...
ou bien il existe peut être déjà une solution...

Il existe la commande 3D_CHAIN qui réalise cela.

_________________
Projet d'un Rubik's cube en 3D - Page 2 Webdav username : panoramic@jack-panoramic password : panoramic123
Revenir en haut Aller en bas
https://panoramic.1fr1.net
Minibug

Minibug


Nombre de messages : 4570
Age : 58
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

Projet d'un Rubik's cube en 3D - Page 2 Empty
MessageSujet: Re: Projet d'un Rubik's cube en 3D   Projet d'un Rubik's cube en 3D - Page 2 EmptyVen 9 Sep 2022 - 11:56

Bonjour Jack,

Effectivement c'est un peu ça. Mais pas tout à fait !!!

Je t'invite à lancer le source ci-dessous pour mieux comprendre et cliques sur TOURNER.

Lorsque j'associe les faces elles gardent bien l'orientation me se 'détachent' les unes des autres...
est ce qu'il serait possible de les 'souder' les unes aux autres et qu'elles restent 'collés' à la tuile qui est chainée ?

En fait je voudrai faire tourner la couronne complète avec les 9 faces + celles des cotés. D'où l'idée de 'coller' les tuiles entre elles.

Merci d'avance pour ta réponse Wink


PS : Code maj le 10.09.22 à 18h31

Code:


' ------------------------------------------------------------------------------
'        Test de la 3D pour la création d'un RUBIK S CUBE
'        Par Minibug et avec l'aide de Marc - Septembre 2022

'        Code réalisé à partir du programme de Marc :
'        https://panoramic.1fr1.net/t5843-objet-3d_plane-realisation-d-un-de-en-3d
' ------------------------------------------------------------------------------

declaration()
creation_graphique()

POINT_POSITION 0,0,0

END

' ------------------------------------------------------------------------------

SUB declaration()

  ' couleur de la face r,v,b , rotation de la face X,Y,Z et position X,Y,Z des 9 tuiles de la faces
  DATA 0,250,250 , 0,0,0 , -10,-5,15 , -10,5,15 , -10,15,15 , 0,-5,15 , 0,5,15 , 0,15,15 , 10,-5,15 , 10,5,15 , 10,15,15                 : ' Face avant    
  DATA 0,250,0 , 0,180,0 , -10,-5,-15 , -10,5,-15 , -10,15,-15 , 0,-5,-15 , 0,5,-15 , 0,15,-15 , 10,-5,-15 , 10,5,-15 , 10,15,-15       : ' Face arriere
  DATA 0,0,250 , 270,0,0 , -10,-10,10 , 0,-10,10 , 10,-10,10 , -10,-10,0 , 0,-10,0 , 10,-10,0 , -10,-10,-10 , 0,-10,-10 , 10,-10,-10 : ' Face dessous
  DATA 250,250,0 , 90,0,0 , -10,20,10 , 0,20,10 , 10,20,10 , -10,20,0 , 0,20,0 , 10,20,0 , -10,20,-10 , 0,20,-10 , 10,20,-10         : ' Face dessus
  DATA 250,0,0 , 0,90,0 , 15,-5,10 , 15,5,10 , 15,15,10 , 15,-5,0 , 15,5,0 , 15,15,0 , 15,-5,-10 , 15,5,-10 , 15,15,-10              : ' Face droite
  DATA 250,0,250 , 0,-90,0 , -15,-5,10 , -15,5,10 , -15,15,10 , -15,-5,0 , -15,5,0 , -15,15,0 , -15,-5,-10 , -15,5,-10 , -15,15,-10  : ' Face gauche      
 
  LABEL Move , Clic , Quit
    
  DIM no% , n% , face% , xcam% , ycam% , zcam% , rotx , roty                                                              
  DIM px%(54) , py%(54) , pz%(54)
  DIM clic%
 
  DIM Form% , Picture% , Image% , Scene%
  DIM BoutonAvant% , BoutonArriere% , BoutonGauche% , BoutonDroit% , BoutonDessus% , BoutonDessous% , BoutonTourner%
                        
END_SUB

' ------------------------------------------------------------------------------

SUB rotationFaceAvant()
 
  dim_local r% , n%
 
  ' Face avant
  3D_CHAIN 1,5 : 3D_CHAIN 2,5 : 3D_CHAIN 3,5 : 3D_CHAIN 4,5 : 3D_CHAIN 6,5 : 3D_CHAIN 7,5 : 3D_CHAIN 8,5 : 3D_CHAIN 9,5
  3D_CHAIN 19,5 : 3D_CHAIN 20,5 : 3D_CHAIN 21,5 : 3D_CHAIN 28,5 : 3D_CHAIN 29,5 : 3D_CHAIN 30,5
  3D_CHAIN 37,5 : 3D_CHAIN 38,5 : 3D_CHAIN 39,5 : 3D_CHAIN 46,5 : 3D_CHAIN 47,5 : 3D_CHAIN 48,5

  for r% = 0 to 90 STEP 9
     for n% = 1 to 9
      3d_z_rotate n%,r%
      PAUSE 1
     next n%
  next r%
  
  3D_CHAIN_BREAK 1,5 : 3D_CHAIN_BREAK 2,5 : 3D_CHAIN_BREAK 3,5 : 3D_CHAIN_BREAK 4,5 : 3D_CHAIN_BREAK 6,5 : 3D_CHAIN_BREAK 7,5 : 3D_CHAIN_BREAK 8,5 : 3D_CHAIN_BREAK 9,5
  3D_CHAIN_BREAK 19,5 : 3D_CHAIN_BREAK 20,5 : 3D_CHAIN_BREAK 21,5 : 3D_CHAIN_BREAK 28,5 : 3D_CHAIN_BREAK 29,5 : 3D_CHAIN_BREAK 30,5
  3D_CHAIN_BREAK 37,5 : 3D_CHAIN_BREAK 38,5 : 3D_CHAIN_BREAK 39,5 : 3D_CHAIN_BREAK 46,5 : 3D_CHAIN_BREAK 47,5 : 3D_CHAIN_BREAK 48,5

END_SUB

' ------------------------------------------------------------------------------

SUB creation_graphique()

  DIM_LOCAL f%,i%,n% , r%,v%,b% , rtx%,rty%,rtz% , dx%,dy%,dz%

  HEIGHT no%,800 : WIDTH no%,800 : ON_CLOSE no%, Quit : Form%=no% : no%=no%+1

  PICTURE no%  : HEIGHT no%,50 : WIDTH no%,50 : Picture%=no% : no%=no%+1
 
  IMAGE no% : Image%=no% : no%=no%+1

  SCENE3D no% : HEIGHT no%,800 : WIDTH no%,800 : COLOR no%,50,50,50 : ON_MOUSE_MOVE no%,Move
      Scene%=no% : no%=no%+1
    
  FOR i%=1 TO 6
      PANEL no% : LEFT no%,10 : TOP no%,717 : WIDTH no%,100 : HEIGHT no%,35
        FONT_SIZE no%,12 : no%=no%+1  
  NEXT i%
  
  CAPTION no%-6,"Avant" : COLOR no%-6,50,250,250 : ON_CLICK no%-6,Clic : BoutonAvant%=no%-6
  CAPTION no%-5,"Arrière" : COLOR no%-5,0,250,0 : LEFT no%-5,120 : ON_CLICK no%-5,Clic : BoutonArriere%=no%-5
  CAPTION no%-4,"A gauche" : COLOR no%-4,250,0,250 : LEFT no%-4,230 : ON_CLICK no%-4,Clic : BoutonGauche%=no%-4
  CAPTION no%-3,"A droite" : COLOR no%-3,250,0,0 : LEFT no%-3,340 : ON_CLICK no%-3,Clic : BoutonDroit%=no%-3
  CAPTION no%-2,"Dessus" : COLOR no%-2,250,250,0 : LEFT no%-2,450 : ON_CLICK no%-2,Clic : BoutonDessus%=no%-2
  CAPTION no%-1,"Dessous" : COLOR no%-1,0,0,250 : LEFT no%-1,560 : ON_CLICK no%-1,Clic : BoutonDessous%=no%-1
  
  
  PANEL no% : LEFT no%,670 : TOP no%,717 : WIDTH no%,100 : HEIGHT no%,35
     CAPTION no%,"Tourner" : FONT_SIZE no%,12 : ON_CLICK no%,Clic : BoutonTourner%=no% : no%=no%+1  
  
  

  2D_TARGET_IS Picture% : 2D_FILL_ON
                                                                            
  ' Création des tuiles                
  FOR f%=1 TO 6
 
      READ r% : READ v% : READ b% : READ rtx% : READ rty% : READ rtz%
    
      FOR i% = 1 TO 9
    
        n%=n%+1
      
        3D_PLANE n% : 3D_V_TILE n%,1 : 3D_U_TILE n%,1
      
        2D_FILL_COLOR r%,v%,b% : 2D_RECTANGLE 2,2,48,48
        2D_IMAGE_COPY Image%,0,0,50,50 : 3D_IMAGE_TEXTURE n%,Image%
      
        3D_ROTATE n%,rtx%,rty%,rtz%
      
        READ px%(n%) : READ py%(n%) : READ pz%(n%)
        3D_X_POSITION n%,px%(n%) : 3D_Y_POSITION n%,py%(n%) : 3D_Z_POSITION n%,pz%(n%)
      
      NEXT i%
  NEXT f%
 
  CAM_MOVE -50
 
END_SUB

' ------------------------------------------------------------------------------

Move:
        
   rotx=(MOUSE_X_POSITION(Scene%)/100) : roty=(MOUSE_Y_POSITION(Scene%)/100)
  
   xcam%=70*COS(rotx) : ycam%=70*COS(roty) : zcam%=70*SIN(rotx)
  
   CAM_POSITION xcam%,ycam%,zcam%      
  
   CAPTION 0,STR$(xcam%)+" / "+STR$(ycam%)+" / "+STR$(zcam%)      

RETURN

' ------------------------------------------------------------------------------

Clic:

  clic%=NUMBER_CLICK
 
  POINT_POSITION 0,0,0
  
  IF clic%=BoutonAvant% THEN CAM_Z_POSITION 50 : COLOR BoutonGauche%,250,0,250 : COLOR BoutonDroit%,250,0,0 : face%=1
  IF clic%=BoutonArriere% THEN CAM_Z_POSITION -50 : COLOR BoutonDroit%,250,0,250 : COLOR BoutonGauche%,250,0,0 : face%=0
  IF clic%=BoutonGauche% THEN IF face%=1 : CAM_X_POSITION -50 : ELSE : CAM_X_POSITION 50 : END_IF
  IF clic%=BoutonDroit% THEN IF face%=1 : CAM_X_POSITION 50 : ELSE : CAM_X_POSITION -50 : END_IF
  IF clic%=BoutonDessus% THEN CAM_Y_POSITION 50
  IF clic%=BoutonDessous% THEN CAM_Y_POSITION -50
  IF clic%=BoutonTourner% THEN rotationFaceAvant()
    
RETURN
                  
' ------------------------------------------------------------------------------

Quit:

    TERMINATE
  
RETURN

' ------------------------------------------------------------------------------



Dernière édition par Minibug le Sam 10 Sep 2022 - 18:31, édité 5 fois
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Minibug

Minibug


Nombre de messages : 4570
Age : 58
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

Projet d'un Rubik's cube en 3D - Page 2 Empty
MessageSujet: Re: Projet d'un Rubik's cube en 3D   Projet d'un Rubik's cube en 3D - Page 2 EmptySam 10 Sep 2022 - 12:02

Au secours Marc... Je suis vraiment trop nul en trigonométrie !! Embarassed No Suspect

Pourrais tu m'aider stp dans la gestion de la souris pour faire tourner le cube ?

En fait je voudrai faire que la caméra suive 1 cercle autour de l'objet un peu sur le même principe qu'un satellite autour de la terre.

On sait maintenant qu'avec la fonction POINT_POSITION 0,0,0 la caméra pointe automatiquement vers l'objet.
Il s'agit donc de positionner la caméra sur le cercle en calculant la position de la souris en x y et z.

Pour l'horizontale ça fonctionne. Par contre pour la verticale là je sèche complétement...

Merci d'avance pour ton aide Wink

PS : je remet le source à jour sur le précédent post. il s'agit du sous programme Move entre les lignes 130 et140.


Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Jack
Admin
Jack


Nombre de messages : 2394
Date d'inscription : 28/05/2007

Projet d'un Rubik's cube en 3D - Page 2 Empty
MessageSujet: Re: Projet d'un Rubik's cube en 3D   Projet d'un Rubik's cube en 3D - Page 2 EmptySam 10 Sep 2022 - 14:20

@Minibug:
J'ai regardé ton code et il me parait compliqué.
Tu utilises des faces de cubes élémentaires (3D_PLANE), ce qui va t'obliger à chaque rotation de 9 cubes de gérer toutes les faces et de les mémoriser pour savoir quel 3D_PLANE appartient à quelle face.

Ton code n'est pas totalement commenté et j'ai eu du mal à le comprendre. J'ai cru comprendre que ta face avant est constituée de 9 faces (les 3D_PLANE de 1 à 9), mais en fait, elle doit contenir aussi les faces des 8 cubes visibles adjacents, car quand tu vas tourner cette face avant, les 9 faces vont tourner, mais il faudra faire tourner aussi les 12 faces appartenant aux cubes appartenant à cette face avant ! Et dans ce cas, les 3D_PLANE qui appartiennent aux faces contiguës vont changer de face.

En fait une face ne contient pas 9 3D_PLANE, mais 21 !

Quand tu tournes la face AVANT (les 9 faces roses), 3 cubes de la face DROITE rouge vont devenir des cubes de la nouvelle face DESSUS jaune, et ainsi de suite. Et il faut mémoriser tout cela, car les faces ne correspondent plus à la définition des 3D_PLANES du début.

Il faut penser aussi que tu peux tourner dans le sens des aiguilles d'une montre, mais aussi dans le sens inverse !

Moi, j'aurais fait faire tout ce travail par panoramic, en utilisant des 3D_MESH, sur lesquels j'applique une couleur différente par face.
Cela est possible en utilisant un logiciel d'UV Mapping sur sa texture (l'exemple type est un dé avec les points sur ses faces). Ainsi, on n'a plus besoin de gérer et mémoriser les faces quand le 3D_MESH tourne...

_________________
Projet d'un Rubik's cube en 3D - Page 2 Webdav username : panoramic@jack-panoramic password : panoramic123
Revenir en haut Aller en bas
https://panoramic.1fr1.net
Minibug

Minibug


Nombre de messages : 4570
Age : 58
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

Projet d'un Rubik's cube en 3D - Page 2 Empty
MessageSujet: Re: Projet d'un Rubik's cube en 3D   Projet d'un Rubik's cube en 3D - Page 2 EmptySam 10 Sep 2022 - 14:35

Bonjour Jack !

Merci pour tes précieux conseils.
J'avoue qu'étant débutant en 3D, je ne maitrise pas grand chose. Je teste, j'essais, je tente de comprendre les mécanismes.

Je vais me servir de tes conseils et voir comment organiser tout ça si j'en suis capable...
Encore merci, bon weekend et à bientôt. Wink
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Marc

Marc


Nombre de messages : 2466
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

Projet d'un Rubik's cube en 3D - Page 2 Empty
MessageSujet: Re: Projet d'un Rubik's cube en 3D   Projet d'un Rubik's cube en 3D - Page 2 EmptySam 10 Sep 2022 - 15:55

Bonjour à tous !

Minibug a écrit:
En fait je voudrai faire que la caméra suive 1 cercle autour de l'objet un peu sur le même principe qu'un satellite autour de la terre.

Je n'ai pas réussi. dès que la caméra passe en dessous du plan x, elle inverse son image.
Revenir en haut Aller en bas
Minibug

Minibug


Nombre de messages : 4570
Age : 58
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

Projet d'un Rubik's cube en 3D - Page 2 Empty
MessageSujet: Re: Projet d'un Rubik's cube en 3D   Projet d'un Rubik's cube en 3D - Page 2 EmptySam 10 Sep 2022 - 18:38

Bonjour Marc,

oui j'ai testé plusieurs paramétrages mais rien n'y fait !
J'arrive à déplacer le cube en X mais pas en Y. Du moins pas le tour complet...

Peut être que si Papydall passe par là... Je sais qu'il maitrise bien ce genre de choses...
Ou même peut être Jack lui même ou quelqu'un d'autre... Wink
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Minibug

Minibug


Nombre de messages : 4570
Age : 58
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

Projet d'un Rubik's cube en 3D - Page 2 Empty
MessageSujet: Re: Projet d'un Rubik's cube en 3D   Projet d'un Rubik's cube en 3D - Page 2 EmptySam 10 Sep 2022 - 22:05

Marc,

j'ai vu ton message concernant un bug sur la fonction POINT_POSITION mais malgré cela je n'arrive pas a corriger le problème.
Pourrais tu m'indiquer la marche à suivre pour le code ci-dessus stp. Merci. Wink
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Marc

Marc


Nombre de messages : 2466
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

Projet d'un Rubik's cube en 3D - Page 2 Empty
MessageSujet: Re: Projet d'un Rubik's cube en 3D   Projet d'un Rubik's cube en 3D - Page 2 EmptySam 10 Sep 2022 - 23:47

@Minibug

J'ai fait différents essais, je n'ai pas réussi à faire faire le tour complet à la caméra dans le sens vertical.

Les valeurs semblent bien évoluer mais la caméra fait demi-tour alors qu'il ne faudrait pas.

Je vais essayer avec une autre maquette pour voir si j'ai le même problème.


EDIT : Je viens d'achever ma maquette de Rubik's cube. J'ai le même problème pour faire tourner la caméra.

Revenir en haut Aller en bas
Minibug

Minibug


Nombre de messages : 4570
Age : 58
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

Projet d'un Rubik's cube en 3D - Page 2 Empty
MessageSujet: Re: Projet d'un Rubik's cube en 3D   Projet d'un Rubik's cube en 3D - Page 2 EmptyDim 11 Sep 2022 - 8:37

Bonjour Marc

Et si on changeait la position de la caméra avec POINT_POSITION juste avant qu'elle fasse demi-tour ?
il y aura peut être moyen d'y arriver...

Cela dit c'est quand même bizarre cette histoire !! Si Jack peut regarder...
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Marc

Marc


Nombre de messages : 2466
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

Projet d'un Rubik's cube en 3D - Page 2 Empty
MessageSujet: Re: Projet d'un Rubik's cube en 3D   Projet d'un Rubik's cube en 3D - Page 2 EmptyDim 11 Sep 2022 - 11:16

Bonjour Minibug !

Citation :
Et si on changeait la position de la caméra avec POINT_POSITION juste avant qu'elle fasse demi-tour ?

La caméra doit rester pointée vers le centre de l'objet.

L'inversion apparait dès que l'on franchit PI. (180°)

Je vais faire un essai en excentrant le cube pour le placer dans le premier quadrant, c'est à dire dans l'espace évoluant entre 0 et PI/2. (0 à 90°)
Revenir en haut Aller en bas
silverman

silverman


Nombre de messages : 970
Age : 52
Localisation : Picardie
Date d'inscription : 18/03/2015

Projet d'un Rubik's cube en 3D - Page 2 Empty
MessageSujet: Re: Projet d'un Rubik's cube en 3D   Projet d'un Rubik's cube en 3D - Page 2 EmptyLun 12 Sep 2022 - 12:49

Je ne trouve pas utile de faire le tour de l'objet par rotation verticale, il suffit de bloquer l'angle vertical entre -90 et +90 degrés. Les faces du dessus et dessous seront visibles, et les autres aussi grace à la rotation horizontale.
Voici un code tiré d'un exemple que j'avais fais pour TheGamer :
Code:
dim px,py,pz,distance
dim phi,teta,obj

degrees

 scene3d 1
 full_space 1
 axes_show
 color 1,0,0,0
 ' cursor_hide 1

 ' représentation du rubik's cube
 3d_cube 9,0.5
 
 ' objets représentant les différentes positions de la cam
 obj=10
 distance=2
 
 ' élévation verticale
 for teta=-90 to 89 step 10
    ' horizontal
    for phi=0 to 359 step 45
      obj=obj+1
      px=distance*cos(teta)*cos(phi)
      py=distance*sin(teta)
      pz=distance*cos(teta)*sin(phi)
      3d_box obj,0.1,0.1,0.2    :' représentation de la cam
      3d_position obj,px,py,pz  :' en différentes positions
      3d_point_object obj,9    :' regarder le rubik's cube; mettre en REM pour voir la différence
      ' placer la cam à la position de la box nouvellement crée pour voir ce qui se passe
'      cam_position px,py,pz : light_position px,py,pz : point_object 9  :' regarder le rubik's cube
      display
      pause 50
    next phi
 next teta
 
Il montre comment placer la caméra dans l'espace 3D autours d'un objet et la pointer vers lui, façon satellite
Revenir en haut Aller en bas
Minibug

Minibug


Nombre de messages : 4570
Age : 58
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

Projet d'un Rubik's cube en 3D - Page 2 Empty
MessageSujet: Re: Projet d'un Rubik's cube en 3D   Projet d'un Rubik's cube en 3D - Page 2 EmptyLun 12 Sep 2022 - 17:53

Bonjour Silverman,

Cela fait plaisir de te voir. Ta présence est rare de ce temps !

Merci pour ton exemple. Je vais tenter de m'en inspirer. Wink
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
mindstorm

mindstorm


Nombre de messages : 685
Age : 55
Localisation : charente
Date d'inscription : 13/02/2013

Projet d'un Rubik's cube en 3D - Page 2 Empty
MessageSujet: Re: Projet d'un Rubik's cube en 3D   Projet d'un Rubik's cube en 3D - Page 2 EmptyMer 14 Sep 2022 - 21:05

bonjour Minibug et Bonjour à tous
Cela me ramène quelques années en en arrière et je suis particulièrement rouillé.
Si je peux me permettre modestement et si j'ai bien suivi le post...
Je me suis toujours appliqué à construire l'objet avant de l'animer.
Tu utilises des cubes sur lesquels tu applique une texture et
ensuite c'est le travail d'assemblage (liaison entre objet) et seulement ensuite tu passe à l'animation.
un exemple simple:
Code:
dim i,y ,a ,h$,mn$,sec$ ,m$,s$
rem créer un monde 3D
scene3d 1

3D_mesh 10
3D_load_object 10,"roue.3DS"
3D_scale 10,0.8 ,0.8,0.8
3D_load_texture 10,"cylinder.bmp"
3d_position 10,1,0,0
3d_y_rotate 10,250
3d_z_rotate 10,324
3D_mesh 11
3D_load_object 11,"roue.3DS"
3D_scale 11,0.8 ,0.8,0.8
3D_load_texture 11,"cylinder.bmp"
3d_position 11,0.68,0,0
3d_y_rotate 11,250
3d_z_rotate 11,324
3D_mesh 12
3D_load_object 12,"roue.3DS"
3D_scale 12,0.8 ,0.8,0.8
3D_load_texture 12,"cylinder.bmp"
3d_position 12,0.36,0,0
3d_y_rotate 12,250
3d_z_rotate 12,324
3D_mesh 13
3D_load_object 13,"roue.3DS"
3D_scale 13,0.8 ,0.8,0.8
3D_load_texture 13,"cylinder.bmp"
3d_position 13,0.04,0,0
3d_y_rotate 13,250
3d_z_rotate 13,324


for i=1 to 25
h$=left$(time$,2)
 mn$=mid$(time$,4,1)
 m$=mid$(time$,5,1)
 s$=mid$(time$,7,1)
 sec$=right$(time$,1)[img][url=https://servimg.com/view/18190143/118][img]https://i.servimg.com/u/f66/18/19/01/43/th/compte10.jpg[/img][/url][/img]
pause 1000
 3D_z_rotate 10,((val(sec$)-1)*36)
 3D_z_rotate 11,((val(s$)-1)*36)
 3D_z_rotate 12,((val(m$)-1)*36)
 3D_z_rotate 13,((val(mn$)-1)*36)

next i
pour le faire tourner il faut télécharger les éléments sur mon webdav
mais c'est le code qui compte!
enfin une petite image
Projet d'un Rubik's cube en 3D - Page 2 Compte10


Pour t'aider une petite image de l’intérieur du cube, tu remarqueras le mécanisme interne qui vas te permettre de coder les liaisons entre chaque cube.
Bon courage
Projet d'un Rubik's cube en 3D - Page 2 Rubics10
Revenir en haut Aller en bas
Minibug

Minibug


Nombre de messages : 4570
Age : 58
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

Projet d'un Rubik's cube en 3D - Page 2 Empty
MessageSujet: Re: Projet d'un Rubik's cube en 3D   Projet d'un Rubik's cube en 3D - Page 2 EmptyJeu 15 Sep 2022 - 8:20

Bonjour Mindstorm,

Merci pour tes conseils et ton code. Je vais regarder tout ça.

Comme je l'ai expliqué plus haut, je ne suis pas du tout connaisseur en 3D et donc je découvre un peu plus chaque jour.
Concernant les objets 3DS je ne sais pas s'il existe des outils gratuits ? De plus j'imagine qu'il me faudra utiliser pas mal de tutos pour comprendre...

Et en plus les vacances sont finies, j'ai donc moins de temps à consacrer au projet ! Wink
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
silverman

silverman


Nombre de messages : 970
Age : 52
Localisation : Picardie
Date d'inscription : 18/03/2015

Projet d'un Rubik's cube en 3D - Page 2 Empty
MessageSujet: Re: Projet d'un Rubik's cube en 3D   Projet d'un Rubik's cube en 3D - Page 2 EmptyJeu 15 Sep 2022 - 11:04

Minibug a écrit:
Cela fait plaisir de te voir. Ta présence est rare de ce temps !
Bien que peu actif, je jette toujours un coup d'oeil de temps en temps Wink

Je ne pense pas qu'un lociel de 3D soit nécéssaire pour ce projet. Chainer des planes revient à fabriquer un objet 3D.
Il faut 3 planes pour obtenir un coin, 2 pour l'entre-deux coin et 1 pour le centre. Ca donne 4*3 + 4*2 +1 planes pour créer une couronne de 9 objets. Et pour la couronne centrale il faut 4*2 + 4 planes qui donne 8 objets.
Au total pour les 3 couronnres, ça fera 53 planes pour 26 objets. La difficulté réside à mon avis dans le chainage des planes qui doit être réalisé dans un ordre précis pour obtenir un objet qui se place bien naturellement. Le coin haut/avant/droit n'est pas le coin haut/avant/gauche par exemple, donc le chainage doit bien être fait différement.
Revenir en haut Aller en bas
Minibug

Minibug


Nombre de messages : 4570
Age : 58
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

Projet d'un Rubik's cube en 3D - Page 2 Empty
MessageSujet: Re: Projet d'un Rubik's cube en 3D   Projet d'un Rubik's cube en 3D - Page 2 EmptyJeu 15 Sep 2022 - 17:22

Salut Silverman,

Ben en fait je suis ce que dit Jack :
Citation :
Moi, j'aurais fait faire tout ce travail par panoramic, en utilisant des 3D_MESH, sur lesquels j'applique une couleur différente par face.

Silverman a écrit:
Je ne pense pas qu'un lociel de 3D soit nécéssaire pour ce projet. Chainer des planes revient à fabriquer un objet 3D.
C'est ce que j'ai fait dans le code enregistré dans les messages ci-dessus. (voir page précédente).
Sauf que le chainage de Panoramic ne permet pas le déplacement de l'ensemble. C'est pour ça que j'envisage un objet 3D_MESH...

Donc pour créer les objets 3D_MESH il faut un logiciel...
Et c'est vrai que comme ça c'est plus simple pour le déplacement comme le montre aussi l'exemple de Mindstorm...

Donc pour le moment je suis un peu au point mort ! Wink
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
mindstorm

mindstorm


Nombre de messages : 685
Age : 55
Localisation : charente
Date d'inscription : 13/02/2013

Projet d'un Rubik's cube en 3D - Page 2 Empty
MessageSujet: Re: Projet d'un Rubik's cube en 3D   Projet d'un Rubik's cube en 3D - Page 2 EmptyJeu 15 Sep 2022 - 19:52

OUPS
N'allons pas trop loin
dans mon exemple le cylindre est fait en 3DS car il n'existe pas dans Panoramic.
Pour ton projet, quelques cubes et à mon avis, une sphère serons suffisants.
Ensuite un coup de logiciel de dessin ou mieux pour les puriste  Panoramic et c'est tout.
Je suis ton projet dans la mesure de mon temps libre mais je suis là.
La 3D de Panoramic est très puissante avec une approche ludique.
Sois sur que tu n'as pas beaucoup de lignes de code à écrire.
Courage

Revenir en haut Aller en bas
Minibug

Minibug


Nombre de messages : 4570
Age : 58
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

Projet d'un Rubik's cube en 3D - Page 2 Empty
MessageSujet: Re: Projet d'un Rubik's cube en 3D   Projet d'un Rubik's cube en 3D - Page 2 EmptyVen 16 Sep 2022 - 7:21

Bonjour Mindstorm et bonjour à tous !

Ce qui pose problème n'est pas la création du cube mais son déplacement...
Comme le montre le code du message ci dessus !

Lance le code et clique sur le bouton Tourner et tu comprendra...

Même si les tuiles sont chainées entre elles, elles ne se déplacent pas dans le bon plan de la couronne.
Il faudra donc recalculer la position de chaque tuile !

C'est pour cela que je parle de 3D_MESH comme l'indiqué Jack lui-même dans un poste ci-dessus !
Cela simplifiera le déplacement des différentes tuiles.


Dernière édition par Minibug le Ven 16 Sep 2022 - 7:28, édité 1 fois
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Minibug

Minibug


Nombre de messages : 4570
Age : 58
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

Projet d'un Rubik's cube en 3D - Page 2 Empty
MessageSujet: Re: Projet d'un Rubik's cube en 3D   Projet d'un Rubik's cube en 3D - Page 2 EmptyVen 16 Sep 2022 - 7:21

post en double
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Marc

Marc


Nombre de messages : 2466
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

Projet d'un Rubik's cube en 3D - Page 2 Empty
MessageSujet: Re: Projet d'un Rubik's cube en 3D   Projet d'un Rubik's cube en 3D - Page 2 EmptyVen 16 Sep 2022 - 23:04

Bonjour à tous !

@Minibug
Salut Laurent !
Je viens d’animer la face droite du cube. Voilà qui vient s’ajouter à la face avant qui était déjà faite.
Je n’ai pas continué depuis ton code-source du tout début. J’ai préféré travaillé sur une nouvelle base. Voici un de mes documents de travail pour aider à la compréhension ainsi qu’une démo avec animation des faces avant et droite.

Document de travail:



Code:
dim angle%
dim x%,y%,z%
dim xp%,yp%,zp%
dim xCamera%, yCamera%, zCamera%

degrees

creerInterfacegraphique()

cam_position 30,27,43
rotationFaceAvant()
rotationFaceDroite()

end
' ------------------------------------------------------------------------------
sub rotationFaceDroite()
    dim_local r%
    ' Face droite [R] (coordonnées (z,y,x))

    for r% = 0 to 360
        3d_z_rotate 11,r%
        3d_z_position 11,sqr(200)*cos(45+r%*(-1))
        3d_y_position 11,sqr(200)*sin(45+r%*(-1))

        3d_z_rotate 12,r%
        3d_z_position 12,10*cos(90+r%*(-1))
        3d_y_position 12,10*sin(90+r%*(-1))

        3d_z_rotate 13,r%
        3d_z_position 13,sqr(200)*cos(135+r%*(-1))
        3d_y_position 13,sqr(200)*sin(135+r%*(-1))

        3d_z_rotate 14,r%
        3d_z_position 14,10*cos(180+r%*(-1))
        3d_y_position 14,10*sin(180+r%*(-1))

        3d_z_rotate 15,r% :' centre face droite [R]

        3d_z_rotate 16,r%
        3d_z_position 16,10*cos(r%*(-1))
        3d_y_position 16,10*sin(r%*(-1))

        3d_z_rotate 17,r%
        3d_z_position 17,sqr(200)*cos(-45+r%*(-1))
        3d_y_position 17,sqr(200)*sin(-45+r%*(-1))

        3d_z_rotate 18,r%
        3d_z_position 18,10*cos(-90+r%*(-1))    
        3d_y_position 18,10*sin(-90+r%*(-1))

        3d_z_rotate 19,r%
        3d_z_position 19,sqr(200)*cos(-135+r%*(-1))
        3d_y_position 19,sqr(200)*sin(-135+r%*(-1))

        ' facettes adjacentes du dessus
        3d_x_rotate 59,90-r%
        3d_z_position 59,sqr(325)*cos(90-atn(10/15)+r%*(-1))
        3d_y_position 59,sqr(325)*sin(90-atn(10/15)+r%*(-1))

        3d_x_rotate 56,90-r%
        3d_z_position 56,sqr(225)*cos(90+r%*(-1))
        3d_y_position 56,sqr(225)*sin(90+r%*(-1))

        3d_x_rotate 53,90-r%
        3d_z_position 53,sqr(325)*cos(90+atn(10/15)+r%*(-1))
        3d_y_position 53,sqr(325)*sin(90+atn(10/15)+r%*(-1))

        ' facettes adjacentes de droite
        3d_x_rotate 21,r%
        3d_z_position 21,sqr(325)*cos(90+atn(15/10)+r%*(-1))
        3d_y_position 21,sqr(325)*sin(90+atn(15/10)+r%*(-1))
    
        3d_x_rotate 24,r%
        3d_z_position 24,sqr(225)*cos(180+r%*(-1))
        3d_y_position 24,sqr(225)*sin(180+r%*(-1))

        3d_x_rotate 27,r%
        3d_z_position 27,sqr(325)*cos(180+atn(10/15)+r%*(-1))
        3d_y_position 27,sqr(325)*sin(180+atn(10/15)+r%*(-1))
        pause 5

        ' facettes adjacentes de gauche
        3d_x_rotate 3,r%*(-1)
        3d_z_position 3,sqr(325)*cos(atn(10/15)+r%*(-1))
        3d_y_position 3,sqr(325)*sin(atn(10/15)+r%*(-1))

        3d_x_rotate 6,r%*(-1)
        3d_z_position 6,sqr(225)*cos(r%*(-1))
        3d_y_position 6,sqr(225)*sin(r%*(-1))

        3d_x_rotate 9,r%*(-1)
        3d_z_position 9,sqr(325)*cos(270+atn(15/10)+r%*(-1))
        3d_y_position 9,sqr(325)*sin(270+atn(15/10)+r%*(-1))

        ' facettes adjacentes de dessous
        3d_x_rotate 43,270+r%*(-1)
        3d_z_position 43,sqr(325)*cos(270+atn(10/15)+r%*(-1))
        3d_y_position 43,sqr(325)*sin(270+atn(10/15)+r%*(-1))

        3d_x_rotate 46,270+r%*(-1)
        3d_z_position 46,sqr(225)*cos(-90+r%*(-1))
        3d_y_position 46,sqr(225)*sin(-90+r%*(-1))

        3d_x_rotate 49,270+r%*(-1)
        3d_z_position 49,sqr(325)*cos(270-atn(10/15)+r%*(-1))
        3d_y_position 49,sqr(325)*sin(270-atn(10/15)+r%*(-1))
  
        pause 20
    next r%
end_sub    

' ------------------------------------------------------------------------------

sub rotationFaceAvant()
    dim_local r%
    ' Face avant [F](coordonnees (x,y,z))

    for r% = 0 to 360
        3d_z_rotate 1,r%
        3d_x_position 1,sqr(200)*cos(135+R%)
        3d_y_position 1,sqr(200)*sin(135+R%)

        3d_z_rotate 2,r%
        3d_x_position 2,10*cos(90+R%)
        3d_y_position 2,10*sin(90+R%)

        3d_z_rotate 3,r%
        3d_x_position 3,sqr(200)*cos(45+R%)
        3d_y_position 3,sqr(200)*sin(45+R%)

        3d_z_rotate 4,r%
        3d_x_position 4,10*cos(180+R%)
        3d_y_position 4,10*sin(180+R%)

        3d_z_rotate 5,r% :' centre face avant [F]

        3d_z_rotate 6,r%
        3d_x_position 6,10*cos(R%)
        3d_y_position 6,10*sin(R%)

        3d_z_rotate 7,r%
        3d_x_position 7,sqr(200)*cos(-135+R%)
        3d_y_position 7,sqr(200)*sin(-135+R%)

        3d_z_rotate 8,r%
        3d_x_position 8,10*cos(-90+R%)    
        3d_y_position 8,10*sin(-90+R%)

        3d_z_rotate 9,r%
        3d_x_position 9,sqr(200)*cos(-45+R%)
        3d_y_position 9,sqr(200)*sin(-45+R%)

        3d_y_rotate 57,r%*(-1)
        3d_x_position 57,sqr(325)*cos(180-atn(15/10)+R%)
        3d_y_position 57,sqr(325)*sin(180-atn(15/10)+R%)

        3d_y_rotate 58,r%*(-1)
        3d_x_position 58,sqr(225)*cos(90+R%)
        3d_y_position 58,sqr(225)*sin(90+R%)

        3d_y_rotate 59,r%*(-1)
        3d_x_position 59,sqr(325)*cos(atn(15/10)+R%)
        3d_y_position 59,sqr(325)*sin(atn(15/10)+R%)

        3d_x_rotate 11,r%
        3d_x_position 11,sqr(325)*cos(atn(10/15)+R%)
        3d_y_position 11,sqr(325)*sin(atn(10/15)+R%)
    
        3d_x_rotate 14,r%
        3d_x_position 14,sqr(225)*cos(R%)
        3d_y_position 14,sqr(225)*sin(R%)

        3d_x_rotate 17,r%
        3d_x_position 17,sqr(325)*cos(atn(10/15)*(-1)+R%)
        3d_y_position 17,sqr(325)*sin(atn(10/15)*(-1)+R%)

        3d_x_rotate 33,r%*(-1)
        3d_x_position 33,sqr(325)*cos(180-atn(10/15)+R%)
        3d_y_position 33,sqr(325)*sin(180-atn(10/15)+R%)

        3d_x_rotate 36,r%*(-1)
        3d_x_position 36,sqr(225)*cos(180+R%)
        3d_y_position 36,sqr(225)*sin(180+R%)

        3d_x_rotate 39,r%*(-1)
        3d_x_position 39,sqr(325)*cos(180+atn(10/15)+R%)
        3d_y_position 39,sqr(325)*sin(180+atn(10/15)+R%)

        3d_y_rotate 41,r%
        3d_x_position 41,sqr(325)*cos(270-atn(10/15)+R%)
        3d_y_position 41,sqr(325)*sin(270-atn(10/15)+R%)

        3d_y_rotate 42,r%
        3d_x_position 42,sqr(225)*cos(-90+R%)
        3d_y_position 42,sqr(225)*sin(-90+R%)

        3d_y_rotate 43,r%
        3d_x_position 43,sqr(325)*cos(270+atn(10/15)+R%)
        3d_y_position 43,sqr(325)*sin(270+atn(10/15)+R%)
        
        pause 20
    next r%
end_sub
' ------------------------------------------------------------------------------
sub creerInterfacegraphique()
    height 0,800
    width 0,800
    
    creerFacettes()

    creerScene3D()

    creerFaceRouge()
    creerFaceVerte()
    creerFaceBleue()
    creerFaceOrange()
    creerFaceJaune()
    creerFaceBlanche()
end_sub
' ------------------------------------------------------------------------------
sub creerFacettes()
    picture 1
    width 1,50
    height 1,50
    color 1,20,20,20
    
    creerModeleFacetteRouge()
    creerModeleFacetteVerte()
    creerModeleFacetteBleue()
    creerModeleFacetteOrange()
    creerModeleFacetteJaune()
    creerModeleFacetteBlanche()
end_sub
' ------------------------------------------------------------------------------
sub creerModeleFacetteRouge()
    2d_pen_color 242,80,80
    dessinerContourFacette()
    2d_flood 15,15,232,40,40
    image 2
    2d_image_copy 2,0,0,50,50
end_sub
' ------------------------------------------------------------------------------
sub creerModeleFacetteVerte()
    2d_pen_color 80,242,80
    dessinerContourFacette()
    2d_flood 15,15,40,232,40
    image 3
    2d_image_copy 3,0,0,50,50
end_sub
' ------------------------------------------------------------------------------
sub creerModeleFacetteBleue()
    2d_pen_color 80,80,242
    dessinerContourFacette()
    2d_flood 15,15,40,40,232
    image 4
    2d_image_copy 4,0,0,50,50
end_sub
' ------------------------------------------------------------------------------
sub creerModeleFacetteOrange()
    2d_pen_color 200,80,10
    dessinerContourFacette()
    2d_flood 15,15,220,100,20
    image 5
    2d_image_copy 5,0,0,50,50
end_sub
' ------------------------------------------------------------------------------
sub creerModeleFacetteJaune()
    2d_pen_color 255,255,10
    dessinerContourFacette()
    2d_flood 15,15,245,245,0
    image 6
    2d_image_copy 6,0,0,50,50
end_sub
' ------------------------------------------------------------------------------
sub creerModeleFacetteBlanche()
    2d_pen_color 255,255,255
    dessinerContourFacette()
    2d_flood 15,15,245,245,245
    image 7
    2d_image_copy 7,0,0,50,50
end_sub
' ------------------------------------------------------------------------------
sub dessinerContourFacette()
    2d_line 8,3,42,3
    2d_line 42,4,44,4
    2d_point 44,5
    2d_line 45,6,45,8
    2d_line 46,8,46,42
    2d_line 45,42,45,44
    2d_point 44,44
    2d_line 42,45,44,45
    2d_line 8,46,42,46
    2d_line 6,45,8,45
    2d_point 5,44
    2d_line 4,42,4,44
    2d_line 3,8,3,42
    2d_line 4,6,4,8
    2d_point 5,5
    2d_line 6,4,8,4
end_sub
' ------------------------------------------------------------------------------
sub creerScene3D()
    scene3d 10
    full_space 10
    color 10,10,10,10
    ' positionnement caméra
    cam_move -50
end_sub
' ------------------------------------------------------------------------------
sub creerFaceRouge()
    3d_plane 1
    3d_v_tile 1,1
    3d_u_tile 1,1
    3d_image_texture 1,2
    3d_x_position 1,-10
    3d_y_position 1,10
    3d_z_position 1,15

    3d_plane 2
    3d_v_tile 2,1
    3d_u_tile 2,1
    3d_image_texture 2,2
    3d_x_position 2,0
    3d_y_position 2,10
    3d_z_position 2,15
  
    3d_plane 3
    3d_v_tile 3,1
    3d_u_tile 3,1
    3d_image_texture 3,2
    3d_x_position 3,10
    3d_y_position 3,10
    3d_z_position 3,15

    3d_plane 4
    3d_v_tile 4,1
    3d_u_tile 4,1
    3d_image_texture 4,2
    3d_x_position 4,-10
    3d_y_position 4,0
    3d_z_position 4,15

    3d_plane 5
    3d_v_tile 5,1
    3d_u_tile 5,1
    3d_image_texture 5,2
    3d_x_position 5,0
    3d_y_position 5,0
    3d_z_position 5,15

    3d_plane 6
    3d_v_tile 6,1
    3d_u_tile 6,1
    3d_image_texture 6,2
    3d_x_position 6,10
    3d_y_position 6,0
    3d_z_position 6,15

    3d_plane 7
    3d_v_tile 7,1
    3d_u_tile 7,1
    3d_image_texture 7,2
    3d_x_position 7,-10
    3d_y_position 7,-10
    3d_z_position 7,15

    3d_plane 8
    3d_v_tile 8,1
    3d_u_tile 8,1
    3d_image_texture 8,2
    3d_x_position 8,0
    3d_y_position 8,-10
    3d_z_position 8,15

    3d_plane 9
    3d_v_tile 9,1
    3d_u_tile 9,1
    3d_image_texture 9,2
    3d_x_position 9,10
    3d_y_position 9,-10
    3d_z_position 9,15
end_sub
' ------------------------------------------------------------------------------
sub creerFaceVerte()
    3d_plane 31
    3d_v_tile 31,1
    3d_u_tile 31,1
    3d_image_texture 31,3
    3d_x_position 31,-15
    3d_y_position 31,10
    3d_z_position 31,-10
    3d_y_rotate 31,-90

    3d_plane 32
    3d_v_tile 32,1
    3d_u_tile 32,1
    3d_image_texture 32,3
    3d_x_position 32,-15
    3d_y_position 32,10
    3d_z_position 32,0
    3d_y_rotate 32,-90
  
    3d_plane 33
    3d_v_tile 33,1
    3d_u_tile 33,1
    3d_image_texture 33,3
    3d_x_position 33,-15
    3d_y_position 33,10
    3d_z_position 33,10
    3d_y_rotate 33,-90

    3d_plane 34
    3d_v_tile 34,1
    3d_u_tile 34,1
    3d_image_texture 34,3
    3d_x_position 34,-15
    3d_y_position 34,0
    3d_z_position 34,-10
    3d_y_rotate 34,-90

    3d_plane 35
    3d_v_tile 35,1
    3d_u_tile 35,1
    3d_image_texture 35,3
    3d_x_position 35,-15
    3d_y_position 35,0
    3d_z_position 35,0
    3d_y_rotate 35,-90

    3d_plane 36
    3d_v_tile 36,1
    3d_u_tile 36,1
    3d_image_texture 36,3
    3d_x_position 36,-15
    3d_y_position 36,0
    3d_z_position 36,10
    3d_y_rotate 36,-90

    3d_plane 37
    3d_v_tile 37,1
    3d_u_tile 37,1
    3d_image_texture 37,3
    3d_x_position 37,-15
    3d_y_position 37,-10
    3d_z_position 37,-10
    3d_y_rotate 37,-90

    3d_plane 38
    3d_v_tile 38,1
    3d_u_tile 38,1
    3d_image_texture 38,3
    3d_x_position 38,-15
    3d_y_position 38,-10
    3d_z_position 38,0
    3d_y_rotate 38,-90

    3d_plane 39
    3d_v_tile 39,1
    3d_u_tile 39,1
    3d_image_texture 39,3
    3d_x_position 39,-15
    3d_y_position 39,-10
    3d_z_position 39,10
    3d_y_rotate 39,-90
end_sub
' ------------------------------------------------------------------------------
sub creerFaceBleue()
    3d_plane 11
    3d_v_tile 11,1
    3d_u_tile 11,1
    3d_image_texture 11,4
    3d_x_position 11,15
    3d_y_position 11,10
    3d_z_position 11,10
    3d_y_rotate 11,90

    3d_plane 12
    3d_v_tile 12,1
    3d_u_tile 12,1
    3d_image_texture 12,4
    3d_x_position 12,15
    3d_y_position 12,10
    3d_z_position 12,0
    3d_y_rotate 12,90
  
    3d_plane 13
    3d_v_tile 13,1
    3d_u_tile 13,1
    3d_image_texture 13,4
    3d_x_position 13,15
    3d_y_position 13,10
    3d_z_position 13,-10
    3d_y_rotate 13,90

    3d_plane 14
    3d_v_tile 14,1
    3d_u_tile 14,1
    3d_image_texture 14,4
    3d_x_position 14,15
    3d_y_position 14,0
    3d_z_position 14,10
    3d_y_rotate 14,90

    3d_plane 15
    3d_v_tile 15,1
    3d_u_tile 15,1
    3d_image_texture 15,4
    3d_x_position 15,15
    3d_y_position 15,0
    3d_z_position 15,0
    3d_y_rotate 15,90

    3d_plane 16
    3d_v_tile 16,1
    3d_u_tile 16,1
    3d_image_texture 16,4
    3d_x_position 16,15
    3d_y_position 16,0
    3d_z_position 16,-10
    3d_y_rotate 16,90

    3d_plane 17
    3d_v_tile 17,1
    3d_u_tile 17,1
    3d_image_texture 17,4
    3d_x_position 17,15
    3d_y_position 17,-10
    3d_z_position 17,10
    3d_y_rotate 17,90

    3d_plane 18
    3d_v_tile 18,1
    3d_u_tile 18,1
    3d_image_texture 18,4
    3d_x_position 18,15
    3d_y_position 18,-10
    3d_z_position 18,0
    3d_y_rotate 18,90

    3d_plane 19
    3d_v_tile 19,1
    3d_u_tile 19,1
    3d_image_texture 19,4
    3d_x_position 19,15
    3d_y_position 19,-10
    3d_z_position 19,-10
    3d_y_rotate 19,90
end_sub
' ------------------------------------------------------------------------------
sub creerFaceOrange()
    3d_plane 21
    3d_v_tile 21,1
    3d_u_tile 21,1
    3d_image_texture 21,5
    3d_x_position 21,10
    3d_y_position 21,10
    3d_z_position 21,-15
    3d_y_rotate 21,180

    3d_plane 22
    3d_v_tile 22,1
    3d_u_tile 22,1
    3d_image_texture 22,5
    3d_x_position 22,0
    3d_y_position 22,10
    3d_z_position 22,-15
    3d_y_rotate 22,180
  
    3d_plane 23
    3d_v_tile 23,1
    3d_u_tile 23,1
    3d_image_texture 23,5
    3d_x_position 23,-10
    3d_y_position 23,10
    3d_z_position 23,-15
    3d_y_rotate 23,180

    3d_plane 24
    3d_v_tile 24,1
    3d_u_tile 24,1
    3d_image_texture 24,5
    3d_x_position 24,10
    3d_y_position 24,0
    3d_z_position 24,-15
    3d_y_rotate 24,180

    3d_plane 25
    3d_v_tile 25,1
    3d_u_tile 25,1
    3d_image_texture 25,5
    3d_x_position 25,0
    3d_y_position 25,0
    3d_z_position 25,-15
    3d_y_rotate 25,180

    3d_plane 26
    3d_v_tile 26,1
    3d_u_tile 26,1
    3d_image_texture 26,5
    3d_x_position 26,-10
    3d_y_position 26,0
    3d_z_position 26,-15
    3d_y_rotate 26,180

    3d_plane 27
    3d_v_tile 27,1
    3d_u_tile 27,1
    3d_image_texture 27,5
    3d_x_position 27,10
    3d_y_position 27,-10
    3d_z_position 27,-15
    3d_y_rotate 27,180

    3d_plane 28
    3d_v_tile 28,1
    3d_u_tile 28,1
    3d_image_texture 28,5
    3d_x_position 28,0
    3d_y_position 28,-10
    3d_z_position 28,-15
    3d_y_rotate 28,180

    3d_plane 29
    3d_v_tile 29,1
    3d_u_tile 29,1
    3d_image_texture 29,5
    3d_x_position 29,-10
    3d_y_position 29,-10
    3d_z_position 29,-15
    3d_y_rotate 29,180
end_sub
' ------------------------------------------------------------------------------
sub creerFaceJaune()
    3d_plane 41
    3d_v_tile 41,1
    3d_u_tile 41,1
    3d_image_texture 41,6
    3d_x_position 41,-10
    3d_y_position 41,-15
    3d_z_position 41,10
    3d_x_rotate 41,-90

    3d_plane 42
    3d_v_tile 42,1
    3d_u_tile 42,1
    3d_image_texture 42,6
    3d_x_position 42,0
    3d_y_position 42,-15
    3d_z_position 42,10
    3d_x_rotate 42,-90
  
    3d_plane 43
    3d_v_tile 43,1
    3d_u_tile 43,1
    3d_image_texture 43,6
    3d_x_position 43,10
    3d_y_position 43,-15
    3d_z_position 43,10
    3d_x_rotate 43,-90


    3d_plane 44
    3d_v_tile 44,1
    3d_u_tile 44,1
    3d_image_texture 44,6
    3d_x_position 44,-10
    3d_y_position 44,-15
    3d_z_position 44,0
    3d_x_rotate 44,-90

    3d_plane 45
    3d_v_tile 45,1
    3d_u_tile 45,1
    3d_image_texture 45,6
    3d_x_position 45,0
    3d_y_position 45,-15
    3d_z_position 45,0
    3d_x_rotate 45,-90

    3d_plane 46
    3d_v_tile 46,1
    3d_u_tile 46,1
    3d_image_texture 46,6
    3d_x_position 46,10
    3d_y_position 46,-15
    3d_z_position 46,0
    3d_x_rotate 46,-90

    3d_plane 47
    3d_v_tile 47,1
    3d_u_tile 47,1
    3d_image_texture 47,6
    3d_x_position 47,-10
    3d_y_position 47,-15
    3d_z_position 47,-10
    3d_x_rotate 47,-90

    3d_plane 48
    3d_v_tile 48,1
    3d_u_tile 48,1
    3d_image_texture 48,6
    3d_x_position 48,0
    3d_y_position 48,-15
    3d_z_position 48,-10
    3d_x_rotate 48,-90

    3d_plane 49
    3d_v_tile 49,1
    3d_u_tile 49,1
    3d_image_texture 49,6
    3d_x_position 49,10
    3d_y_position 49,-15
    3d_z_position 49,-10
    3d_x_rotate 49,-90
end_sub
' ------------------------------------------------------------------------------
sub creerFaceBlanche()
    3d_plane 51
    3d_v_tile 51,1
    3d_u_tile 51,1
    3d_image_texture 51,7
    3d_x_position 51,-10
    3d_y_position 51,15
    3d_z_position 51,-10
    3d_x_rotate 51,90

    3d_plane 52
    3d_v_tile 52,1
    3d_u_tile 52,1
    3d_image_texture 52,7
    3d_x_position 52,0
    3d_y_position 52,15
    3d_z_position 52,-10
    3d_x_rotate 52,90
  
    3d_plane 53
    3d_v_tile 53,1
    3d_u_tile 53,1
    3d_image_texture 53,7
    3d_x_position 53,10
    3d_y_position 53,15
    3d_z_position 53,-10
    3d_x_rotate 53,90

    3d_plane 54
    3d_v_tile 54,1
    3d_u_tile 54,1
    3d_image_texture 54,7
    3d_x_position 54,-10
    3d_y_position 54,15
    3d_z_position 54,0
    3d_x_rotate 54,90

    3d_plane 55
    3d_v_tile 55,1
    3d_u_tile 55,1
    3d_image_texture 55,7
    3d_x_position 55,0
    3d_y_position 55,15
    3d_z_position 55,0
    3d_x_rotate 55,90

    3d_plane 56
    3d_v_tile 56,1
    3d_u_tile 56,1
    3d_image_texture 56,7
    3d_x_position 56,10
    3d_y_position 56,15
    3d_z_position 56,0
    3d_x_rotate 56,90

    3d_plane 57
    3d_v_tile 57,1
    3d_u_tile 57,1
    3d_image_texture 57,7
    3d_x_position 57,-10
    3d_y_position 57,15
    3d_z_position 57,10
    3d_x_rotate 57,90

    3d_plane 58
    3d_v_tile 58,1
    3d_u_tile 58,1
    3d_image_texture 58,7
    3d_x_position 58,0
    3d_y_position 58,15
    3d_z_position 58,10
    3d_x_rotate 58,90

    3d_plane 59
    3d_v_tile 59,1
    3d_u_tile 59,1
    3d_image_texture 59,7
    3d_x_position 59,10
    3d_y_position 59,15
    3d_z_position 59,10
    3d_x_rotate 59,90
end_sub


Le code-source est brut. J’ai préféré travailler en degrés plutôt qu’en radians. Dans les différents calculs, il y a surement des simplifications à apporter...


Projet d'un Rubik's cube en 3D - Page 2 Rubiks10



Pour l’instant, je n’ai pas essayé la préconisation de Jack qui recommande d’utiliser des 3D_MESH. Cette solution serait plus simple avec beaucoup moins de calculs et d'objets à déplacer.

A suivre…
Revenir en haut Aller en bas
Minibug

Minibug


Nombre de messages : 4570
Age : 58
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

Projet d'un Rubik's cube en 3D - Page 2 Empty
MessageSujet: Re: Projet d'un Rubik's cube en 3D   Projet d'un Rubik's cube en 3D - Page 2 EmptySam 17 Sep 2022 - 9:39

bonjour Marc et bonjour à tous

Oui effectivement belle réalisation. Belle finition. Bravo ! cheers
Concernant le déplacement c'est parfait.

Mais si on déplace seulement d'un quart de tour comment ça va se passer sur les autres face ? Elles ne correspondent plus !
Et ça c'est un problème. Vu les possibilité de déplacements des éléments du cube, cette solution ne semble pas viable.

j'ai une autre idée pour les déplacements mais je ne sais pas si c'est réalisable ! drunken

- Il faut que chaque tuile de chaque face soit numérotée (soit 6*9=54 éléments) pour connaitre son emplacement.
- Pour chaque déplacement on créer une boite ou on pose une texture qui reprend chaque couleur de chaque tuile qui va être déplacer.
- On cache les tuiles qui vont être déplacées et on remplace par la boite avec les textures des tuiles (en fait on fait une pseudo couronne avec 1 seule boite)
- On déplace la boite dans le sens voulu (1/2 tour, 1/4 de tour, etc)
- On change et on mémorise la couleur des tuiles qui ont été déplacer
- On retire le boite qu'on a créé pour le déplacement
- On affiche de nouveau les tuiles déplacées selon leurs nouvelles positions.

Ce qui simplifie grandement le code car il n'y a plus qu'un seul déplacement.
Je ne sais pas si mon explication est très clair. Suspect

je vais déjà tester le principe des textures sur une boite. pour voir si cela est réalisable...
Si c'est le cas, je pense qu'avec IMAGE et PICTURE on doit arriver à faire quelques chose.
Le plus compliqué sera de mettre en mémoire les numéros des tuiles en fonction du déplacement.
Mais cela reste certainement plus simple que le recalcule du déplacement des tuiles.

Voilà mon idée !

Pour Marc et ceux qui maitrise la 3D, dites moi ce que vous en pensez et si d'après vous c'est réalisable ?
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Marc

Marc


Nombre de messages : 2466
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

Projet d'un Rubik's cube en 3D - Page 2 Empty
MessageSujet: Re: Projet d'un Rubik's cube en 3D   Projet d'un Rubik's cube en 3D - Page 2 EmptySam 17 Sep 2022 - 12:26

Minibug a écrit:
Mais si on déplace seulement d'un quart de tour comment ça va se passer sur les autres face ? Elles ne correspondent plus !
Et ça c'est un problème. Vu les possibilité de déplacements des éléments du cube, cette solution ne semble pas viable.

Pour l’instant je ne fais que le mécanisme des mouvements. La mémorisation des emplacements des facettes viendra dans un second temps…si j’y arrive !
Il faut donc faire une rotation complète de 360° pour ne pas mélanger des facettes.

Voici le code-source avec la couronne supérieure opérationnelle.

Code:
degrees

creerInterfacegraphique()

cam_position 30,27,43
rotationFaceAvant()
rotationFaceDroite()
rotationFaceDessus()
end
' ------------------------------------------------------------------------------
sub rotationFaceDessus()
    dim_local r%
    ' Face dessus [U] (coordonnées (x,z,y))

    for r% = 0 to 360
        3d_z_rotate 57,r%
        3d_x_position 57,sqr(200)*cos(135-R%)
        3d_z_position 57,sqr(200)*sin(135-R%)

        3d_z_rotate 58,r%
        3d_x_position 58,10*cos(90-R%)
        3d_z_position 58,10*sin(90-R%)

        3d_z_rotate 59,r%
        3d_x_position 59,sqr(200)*cos(45-R%)
        3d_z_position 59,sqr(200)*sin(45-R%)

        3d_z_rotate 54,r%
        3d_x_position 54,10*cos(180-R%)
        3d_z_position 54,10*sin(180-R%)

        3d_z_rotate 55,r% :' centre face avant [U]

        3d_z_rotate 56,r%
        3d_x_position 56,10*cos(R%*(-1))
        3d_z_position 56,10*sin(R%*(-1))

        3d_z_rotate 51,r%
        3d_x_position 51,sqr(200)*cos(225-R%)
        3d_z_position 51,sqr(200)*sin(225-R%)

        3d_z_rotate 52,r%
        3d_x_position 52,10*cos(-90-R%)    
        3d_z_position 52,10*sin(-90-R%)

        3d_z_rotate 53,r%
        3d_x_position 53,sqr(200)*cos(-45-R%)
        3d_z_position 53,sqr(200)*sin(-45-R%)

        ' facettes adjacentes à droite
        3d_y_rotate 11,r%+90
        3d_x_position 11,sqr(325)*cos(90-atn(15/10)+r%*(-1))
        3d_z_position 11,sqr(325)*sin(90-atn(15/10)+r%*(-1))

        3d_y_rotate 12,r%+90
        3d_x_position 12,sqr(225)*cos(r%*(-1))
        3d_z_position 12,sqr(225)*sin(r%*(-1))

        3d_y_rotate 13,r%+90
        3d_x_position 13,sqr(325)*cos(270+atn(15/10)+r%*(-1))
        3d_z_position 13,sqr(325)*sin(270+atn(15/10)+r%*(-1))

        ' facettes adjacentes à gauche
        3d_y_rotate 31,r%-90
        3d_x_position 31,sqr(325)*cos(180+atn(10/15)+r%*(-1))
        3d_z_position 31,sqr(325)*sin(180+atn(10/15)+r%*(-1))

        3d_y_rotate 32,r%-90
        3d_x_position 32,sqr(225)*cos(180+r%*(-1))
        3d_z_position 32,sqr(225)*sin(180+r%*(-1))

        3d_y_rotate 33,r%-90
        3d_x_position 33,sqr(325)*cos(180+atn(10/15)*(-1)+r%*(-1))
        3d_z_position 33,sqr(325)*sin(180+atn(10/15)*(-1)+r%*(-1))

        ' facettes adjacentes de dessus
        3d_y_rotate 23,r%-180
        3d_x_position 23,sqr(325)*cos(270+atn(10/15)+r%*(-1))
        3d_z_position 23,sqr(325)*sin(270+atn(10/15)+r%*(-1))

        3d_y_rotate 22,r%-180
        3d_x_position 22,sqr(225)*cos(270+r%*(-1))
        3d_z_position 22,sqr(225)*sin(270+r%*(-1))

        3d_y_rotate 21,r%-180
        3d_x_position 21,sqr(325)*cos(270-atn(10/15)+r%*(-1))
        3d_z_position 21,sqr(325)*sin(270-atn(10/15)+r%*(-1))

        ' facettes adjacentes de dessous
        3d_y_rotate 1,r%
        3d_x_position 1,sqr(325)*cos(90+atn(10/15)+r%*(-1))
        3d_z_position 1,sqr(325)*sin(90+atn(10/15)+r%*(-1))

        3d_y_rotate 2,r%
        3d_x_position 2,sqr(225)*cos(90+r%*(-1))
        3d_z_position 2,sqr(225)*sin(90+r%*(-1))

        3d_y_rotate 3,r%
        3d_x_position 3,sqr(325)*cos(90-atn(10/15)+r%*(-1))
        3d_z_position 3,sqr(325)*sin(90-atn(10/15)+r%*(-1))
        
        pause 20
    next r%
end_sub    
' ------------------------------------------------------------------------------
sub rotationFaceDroite()
    dim_local r%
    ' Face droite [R] (coordonnées (z,y,x))

    for r% = 0 to 360
        3d_z_rotate 11,r%
        3d_z_position 11,sqr(200)*cos(45+r%*(-1))
        3d_y_position 11,sqr(200)*sin(45+r%*(-1))

        3d_z_rotate 12,r%
        3d_z_position 12,10*cos(90+r%*(-1))
        3d_y_position 12,10*sin(90+r%*(-1))

        3d_z_rotate 13,r%
        3d_z_position 13,sqr(200)*cos(135+r%*(-1))
        3d_y_position 13,sqr(200)*sin(135+r%*(-1))

        3d_z_rotate 14,r%
        3d_z_position 14,10*cos(180+r%*(-1))
        3d_y_position 14,10*sin(180+r%*(-1))

        3d_z_rotate 15,r% :' centre face droite [R]

        3d_z_rotate 16,r%
        3d_z_position 16,10*cos(r%*(-1))
        3d_y_position 16,10*sin(r%*(-1))

        3d_z_rotate 17,r%
        3d_z_position 17,sqr(200)*cos(-45+r%*(-1))
        3d_y_position 17,sqr(200)*sin(-45+r%*(-1))

        3d_z_rotate 18,r%
        3d_z_position 18,10*cos(-90+r%*(-1))    
        3d_y_position 18,10*sin(-90+r%*(-1))

        3d_z_rotate 19,r%
        3d_z_position 19,sqr(200)*cos(-135+r%*(-1))
        3d_y_position 19,sqr(200)*sin(-135+r%*(-1))

        ' facettes adjacentes du dessus
        3d_x_rotate 59,90-r%
        3d_z_position 59,sqr(325)*cos(90-atn(10/15)+r%*(-1))
        3d_y_position 59,sqr(325)*sin(90-atn(10/15)+r%*(-1))

        3d_x_rotate 56,90-r%
        3d_z_position 56,sqr(225)*cos(90+r%*(-1))
        3d_y_position 56,sqr(225)*sin(90+r%*(-1))

        3d_x_rotate 53,90-r%
        3d_z_position 53,sqr(325)*cos(90+atn(10/15)+r%*(-1))
        3d_y_position 53,sqr(325)*sin(90+atn(10/15)+r%*(-1))

        ' facettes adjacentes de droite
        3d_x_rotate 21,r%
        3d_z_position 21,sqr(325)*cos(90+atn(15/10)+r%*(-1))
        3d_y_position 21,sqr(325)*sin(90+atn(15/10)+r%*(-1))
    
        3d_x_rotate 24,r%
        3d_z_position 24,sqr(225)*cos(180+r%*(-1))
        3d_y_position 24,sqr(225)*sin(180+r%*(-1))

        3d_x_rotate 27,r%
        3d_z_position 27,sqr(325)*cos(180+atn(10/15)+r%*(-1))
        3d_y_position 27,sqr(325)*sin(180+atn(10/15)+r%*(-1))
        pause 5

        ' facettes adjacentes de gauche
        3d_x_rotate 3,r%*(-1)
        3d_z_position 3,sqr(325)*cos(atn(10/15)+r%*(-1))
        3d_y_position 3,sqr(325)*sin(atn(10/15)+r%*(-1))

        3d_x_rotate 6,r%*(-1)
        3d_z_position 6,sqr(225)*cos(r%*(-1))
        3d_y_position 6,sqr(225)*sin(r%*(-1))

        3d_x_rotate 9,r%*(-1)
        3d_z_position 9,sqr(325)*cos(270+atn(15/10)+r%*(-1))
        3d_y_position 9,sqr(325)*sin(270+atn(15/10)+r%*(-1))

        ' facettes adjacentes de dessous
        3d_x_rotate 43,270+r%*(-1)
        3d_z_position 43,sqr(325)*cos(270+atn(10/15)+r%*(-1))
        3d_y_position 43,sqr(325)*sin(270+atn(10/15)+r%*(-1))

        3d_x_rotate 46,270+r%*(-1)
        3d_z_position 46,sqr(225)*cos(-90+r%*(-1))
        3d_y_position 46,sqr(225)*sin(-90+r%*(-1))

        3d_x_rotate 49,270+r%*(-1)
        3d_z_position 49,sqr(325)*cos(270-atn(10/15)+r%*(-1))
        3d_y_position 49,sqr(325)*sin(270-atn(10/15)+r%*(-1))
  
        pause 20
    next r%
end_sub    

' ------------------------------------------------------------------------------

sub rotationFaceAvant()
    dim_local r%
    ' Face avant [F](coordonnees (x,y,z))

    for r% = 0 to 360
        3d_z_rotate 1,r%
        3d_x_position 1,sqr(200)*cos(135+R%)
        3d_y_position 1,sqr(200)*sin(135+R%)

        3d_z_rotate 2,r%
        3d_x_position 2,10*cos(90+R%)
        3d_y_position 2,10*sin(90+R%)

        3d_z_rotate 3,r%
        3d_x_position 3,sqr(200)*cos(45+R%)
        3d_y_position 3,sqr(200)*sin(45+R%)

        3d_z_rotate 4,r%
        3d_x_position 4,10*cos(180+R%)
        3d_y_position 4,10*sin(180+R%)

        3d_z_rotate 5,r% :' centre face avant [F]

        3d_z_rotate 6,r%
        3d_x_position 6,10*cos(R%)
        3d_y_position 6,10*sin(R%)

        3d_z_rotate 7,r%
        3d_x_position 7,sqr(200)*cos(-135+R%)
        3d_y_position 7,sqr(200)*sin(-135+R%)

        3d_z_rotate 8,r%
        3d_x_position 8,10*cos(-90+R%)    
        3d_y_position 8,10*sin(-90+R%)

        3d_z_rotate 9,r%
        3d_x_position 9,sqr(200)*cos(-45+R%)
        3d_y_position 9,sqr(200)*sin(-45+R%)

        3d_y_rotate 57,r%*(-1)
        3d_x_position 57,sqr(325)*cos(180-atn(15/10)+R%)
        3d_y_position 57,sqr(325)*sin(180-atn(15/10)+R%)

        3d_y_rotate 58,r%*(-1)
        3d_x_position 58,sqr(225)*cos(90+R%)
        3d_y_position 58,sqr(225)*sin(90+R%)

        3d_y_rotate 59,r%*(-1)
        3d_x_position 59,sqr(325)*cos(atn(15/10)+R%)
        3d_y_position 59,sqr(325)*sin(atn(15/10)+R%)

        3d_x_rotate 11,r%
        3d_x_position 11,sqr(325)*cos(atn(10/15)+R%)
        3d_y_position 11,sqr(325)*sin(atn(10/15)+R%)
    
        3d_x_rotate 14,r%
        3d_x_position 14,sqr(225)*cos(R%)
        3d_y_position 14,sqr(225)*sin(R%)

        3d_x_rotate 17,r%
        3d_x_position 17,sqr(325)*cos(atn(10/15)*(-1)+R%)
        3d_y_position 17,sqr(325)*sin(atn(10/15)*(-1)+R%)

        3d_x_rotate 33,r%*(-1)
        3d_x_position 33,sqr(325)*cos(180-atn(10/15)+R%)
        3d_y_position 33,sqr(325)*sin(180-atn(10/15)+R%)

        3d_x_rotate 36,r%*(-1)
        3d_x_position 36,sqr(225)*cos(180+R%)
        3d_y_position 36,sqr(225)*sin(180+R%)

        3d_x_rotate 39,r%*(-1)
        3d_x_position 39,sqr(325)*cos(180+atn(10/15)+R%)
        3d_y_position 39,sqr(325)*sin(180+atn(10/15)+R%)

        3d_y_rotate 41,r%
        3d_x_position 41,sqr(325)*cos(270-atn(10/15)+R%)
        3d_y_position 41,sqr(325)*sin(270-atn(10/15)+R%)

        3d_y_rotate 42,r%
        3d_x_position 42,sqr(225)*cos(-90+R%)
        3d_y_position 42,sqr(225)*sin(-90+R%)

        3d_y_rotate 43,r%
        3d_x_position 43,sqr(325)*cos(270+atn(10/15)+R%)
        3d_y_position 43,sqr(325)*sin(270+atn(10/15)+R%)
        
        pause 20
    next r%
end_sub
' ------------------------------------------------------------------------------
sub creerInterfacegraphique()
    height 0,800
    width 0,800
    
    creerFacettes()

    creerScene3D()

    creerFaceRouge()
    creerFaceVerte()
    creerFaceBleue()
    creerFaceOrange()
    creerFaceJaune()
    creerFaceBlanche()
end_sub
' ------------------------------------------------------------------------------
sub creerFacettes()
    picture 1
    width 1,50
    height 1,50
    color 1,20,20,20
    
    creerModeleFacetteRouge()
    creerModeleFacetteVerte()
    creerModeleFacetteBleue()
    creerModeleFacetteOrange()
    creerModeleFacetteJaune()
    creerModeleFacetteBlanche()
end_sub
' ------------------------------------------------------------------------------
sub creerModeleFacetteRouge()
    2d_pen_color 242,80,80
    dessinerContourFacette()
    2d_flood 15,15,232,40,40
    image 2
    2d_image_copy 2,0,0,50,50
end_sub
' ------------------------------------------------------------------------------
sub creerModeleFacetteVerte()
    2d_pen_color 80,242,80
    dessinerContourFacette()
    2d_flood 15,15,40,232,40
    image 3
    2d_image_copy 3,0,0,50,50
end_sub
' ------------------------------------------------------------------------------
sub creerModeleFacetteBleue()
    2d_pen_color 80,80,242
    dessinerContourFacette()
    2d_flood 15,15,40,40,232
    image 4
    2d_image_copy 4,0,0,50,50
end_sub
' ------------------------------------------------------------------------------
sub creerModeleFacetteOrange()
    2d_pen_color 200,80,10
    dessinerContourFacette()
    2d_flood 15,15,220,100,20
    image 5
    2d_image_copy 5,0,0,50,50
end_sub
' ------------------------------------------------------------------------------
sub creerModeleFacetteJaune()
    2d_pen_color 255,255,10
    dessinerContourFacette()
    2d_flood 15,15,245,245,0
    image 6
    2d_image_copy 6,0,0,50,50
end_sub
' ------------------------------------------------------------------------------
sub creerModeleFacetteBlanche()
    2d_pen_color 255,255,255
    dessinerContourFacette()
    2d_flood 15,15,245,245,245
    image 7
    2d_image_copy 7,0,0,50,50
end_sub
' ------------------------------------------------------------------------------
sub dessinerContourFacette()
    2d_line 8,3,42,3
    2d_line 42,4,44,4
    2d_point 44,5
    2d_line 45,6,45,8
    2d_line 46,8,46,42
    2d_line 45,42,45,44
    2d_point 44,44
    2d_line 42,45,44,45
    2d_line 8,46,42,46
    2d_line 6,45,8,45
    2d_point 5,44
    2d_line 4,42,4,44
    2d_line 3,8,3,42
    2d_line 4,6,4,8
    2d_point 5,5
    2d_line 6,4,8,4
end_sub
' ------------------------------------------------------------------------------
sub creerScene3D()
    scene3d 10
    full_space 10
    color 10,10,10,10
    ' positionnement caméra
    cam_move -50
end_sub
' ------------------------------------------------------------------------------
sub creerFaceRouge()
    3d_plane 1
    3d_v_tile 1,1
    3d_u_tile 1,1
    3d_image_texture 1,2
    3d_x_position 1,-10
    3d_y_position 1,10
    3d_z_position 1,15

    3d_plane 2
    3d_v_tile 2,1
    3d_u_tile 2,1
    3d_image_texture 2,2
    3d_x_position 2,0
    3d_y_position 2,10
    3d_z_position 2,15
  
    3d_plane 3
    3d_v_tile 3,1
    3d_u_tile 3,1
    3d_image_texture 3,2
    3d_x_position 3,10
    3d_y_position 3,10
    3d_z_position 3,15

    3d_plane 4
    3d_v_tile 4,1
    3d_u_tile 4,1
    3d_image_texture 4,2
    3d_x_position 4,-10
    3d_y_position 4,0
    3d_z_position 4,15

    3d_plane 5
    3d_v_tile 5,1
    3d_u_tile 5,1
    3d_image_texture 5,2
    3d_x_position 5,0
    3d_y_position 5,0
    3d_z_position 5,15

    3d_plane 6
    3d_v_tile 6,1
    3d_u_tile 6,1
    3d_image_texture 6,2
    3d_x_position 6,10
    3d_y_position 6,0
    3d_z_position 6,15

    3d_plane 7
    3d_v_tile 7,1
    3d_u_tile 7,1
    3d_image_texture 7,2
    3d_x_position 7,-10
    3d_y_position 7,-10
    3d_z_position 7,15

    3d_plane 8
    3d_v_tile 8,1
    3d_u_tile 8,1
    3d_image_texture 8,2
    3d_x_position 8,0
    3d_y_position 8,-10
    3d_z_position 8,15

    3d_plane 9
    3d_v_tile 9,1
    3d_u_tile 9,1
    3d_image_texture 9,2
    3d_x_position 9,10
    3d_y_position 9,-10
    3d_z_position 9,15
end_sub
' ------------------------------------------------------------------------------
sub creerFaceVerte()
    3d_plane 31
    3d_v_tile 31,1
    3d_u_tile 31,1
    3d_image_texture 31,3
    3d_x_position 31,-15
    3d_y_position 31,10
    3d_z_position 31,-10
    3d_y_rotate 31,-90

    3d_plane 32
    3d_v_tile 32,1
    3d_u_tile 32,1
    3d_image_texture 32,3
    3d_x_position 32,-15
    3d_y_position 32,10
    3d_z_position 32,0
    3d_y_rotate 32,-90
  
    3d_plane 33
    3d_v_tile 33,1
    3d_u_tile 33,1
    3d_image_texture 33,3
    3d_x_position 33,-15
    3d_y_position 33,10
    3d_z_position 33,10
    3d_y_rotate 33,-90

    3d_plane 34
    3d_v_tile 34,1
    3d_u_tile 34,1
    3d_image_texture 34,3
    3d_x_position 34,-15
    3d_y_position 34,0
    3d_z_position 34,-10
    3d_y_rotate 34,-90

    3d_plane 35
    3d_v_tile 35,1
    3d_u_tile 35,1
    3d_image_texture 35,3
    3d_x_position 35,-15
    3d_y_position 35,0
    3d_z_position 35,0
    3d_y_rotate 35,-90

    3d_plane 36
    3d_v_tile 36,1
    3d_u_tile 36,1
    3d_image_texture 36,3
    3d_x_position 36,-15
    3d_y_position 36,0
    3d_z_position 36,10
    3d_y_rotate 36,-90

    3d_plane 37
    3d_v_tile 37,1
    3d_u_tile 37,1
    3d_image_texture 37,3
    3d_x_position 37,-15
    3d_y_position 37,-10
    3d_z_position 37,-10
    3d_y_rotate 37,-90

    3d_plane 38
    3d_v_tile 38,1
    3d_u_tile 38,1
    3d_image_texture 38,3
    3d_x_position 38,-15
    3d_y_position 38,-10
    3d_z_position 38,0
    3d_y_rotate 38,-90

    3d_plane 39
    3d_v_tile 39,1
    3d_u_tile 39,1
    3d_image_texture 39,3
    3d_x_position 39,-15
    3d_y_position 39,-10
    3d_z_position 39,10
    3d_y_rotate 39,-90
end_sub
' ------------------------------------------------------------------------------
sub creerFaceBleue()
    3d_plane 11
    3d_v_tile 11,1
    3d_u_tile 11,1
    3d_image_texture 11,4
    3d_x_position 11,15
    3d_y_position 11,10
    3d_z_position 11,10
    3d_y_rotate 11,90

    3d_plane 12
    3d_v_tile 12,1
    3d_u_tile 12,1
    3d_image_texture 12,4
    3d_x_position 12,15
    3d_y_position 12,10
    3d_z_position 12,0
    3d_y_rotate 12,90
  
    3d_plane 13
    3d_v_tile 13,1
    3d_u_tile 13,1
    3d_image_texture 13,4
    3d_x_position 13,15
    3d_y_position 13,10
    3d_z_position 13,-10
    3d_y_rotate 13,90

    3d_plane 14
    3d_v_tile 14,1
    3d_u_tile 14,1
    3d_image_texture 14,4
    3d_x_position 14,15
    3d_y_position 14,0
    3d_z_position 14,10
    3d_y_rotate 14,90

    3d_plane 15
    3d_v_tile 15,1
    3d_u_tile 15,1
    3d_image_texture 15,4
    3d_x_position 15,15
    3d_y_position 15,0
    3d_z_position 15,0
    3d_y_rotate 15,90

    3d_plane 16
    3d_v_tile 16,1
    3d_u_tile 16,1
    3d_image_texture 16,4
    3d_x_position 16,15
    3d_y_position 16,0
    3d_z_position 16,-10
    3d_y_rotate 16,90

    3d_plane 17
    3d_v_tile 17,1
    3d_u_tile 17,1
    3d_image_texture 17,4
    3d_x_position 17,15
    3d_y_position 17,-10
    3d_z_position 17,10
    3d_y_rotate 17,90

    3d_plane 18
    3d_v_tile 18,1
    3d_u_tile 18,1
    3d_image_texture 18,4
    3d_x_position 18,15
    3d_y_position 18,-10
    3d_z_position 18,0
    3d_y_rotate 18,90

    3d_plane 19
    3d_v_tile 19,1
    3d_u_tile 19,1
    3d_image_texture 19,4
    3d_x_position 19,15
    3d_y_position 19,-10
    3d_z_position 19,-10
    3d_y_rotate 19,90
end_sub
' ------------------------------------------------------------------------------
sub creerFaceOrange()
    3d_plane 21
    3d_v_tile 21,1
    3d_u_tile 21,1
    3d_image_texture 21,5
    3d_x_position 21,10
    3d_y_position 21,10
    3d_z_position 21,-15
    3d_y_rotate 21,180

    3d_plane 22
    3d_v_tile 22,1
    3d_u_tile 22,1
    3d_image_texture 22,5
    3d_x_position 22,0
    3d_y_position 22,10
    3d_z_position 22,-15
    3d_y_rotate 22,180
  
    3d_plane 23
    3d_v_tile 23,1
    3d_u_tile 23,1
    3d_image_texture 23,5
    3d_x_position 23,-10
    3d_y_position 23,10
    3d_z_position 23,-15
    3d_y_rotate 23,180

    3d_plane 24
    3d_v_tile 24,1
    3d_u_tile 24,1
    3d_image_texture 24,5
    3d_x_position 24,10
    3d_y_position 24,0
    3d_z_position 24,-15
    3d_y_rotate 24,180

    3d_plane 25
    3d_v_tile 25,1
    3d_u_tile 25,1
    3d_image_texture 25,5
    3d_x_position 25,0
    3d_y_position 25,0
    3d_z_position 25,-15
    3d_y_rotate 25,180

    3d_plane 26
    3d_v_tile 26,1
    3d_u_tile 26,1
    3d_image_texture 26,5
    3d_x_position 26,-10
    3d_y_position 26,0
    3d_z_position 26,-15
    3d_y_rotate 26,180

    3d_plane 27
    3d_v_tile 27,1
    3d_u_tile 27,1
    3d_image_texture 27,5
    3d_x_position 27,10
    3d_y_position 27,-10
    3d_z_position 27,-15
    3d_y_rotate 27,180

    3d_plane 28
    3d_v_tile 28,1
    3d_u_tile 28,1
    3d_image_texture 28,5
    3d_x_position 28,0
    3d_y_position 28,-10
    3d_z_position 28,-15
    3d_y_rotate 28,180

    3d_plane 29
    3d_v_tile 29,1
    3d_u_tile 29,1
    3d_image_texture 29,5
    3d_x_position 29,-10
    3d_y_position 29,-10
    3d_z_position 29,-15
    3d_y_rotate 29,180
end_sub
' ------------------------------------------------------------------------------
sub creerFaceJaune()
    3d_plane 41
    3d_v_tile 41,1
    3d_u_tile 41,1
    3d_image_texture 41,6
    3d_x_position 41,-10
    3d_y_position 41,-15
    3d_z_position 41,10
    3d_x_rotate 41,-90

    3d_plane 42
    3d_v_tile 42,1
    3d_u_tile 42,1
    3d_image_texture 42,6
    3d_x_position 42,0
    3d_y_position 42,-15
    3d_z_position 42,10
    3d_x_rotate 42,-90
  
    3d_plane 43
    3d_v_tile 43,1
    3d_u_tile 43,1
    3d_image_texture 43,6
    3d_x_position 43,10
    3d_y_position 43,-15
    3d_z_position 43,10
    3d_x_rotate 43,-90


    3d_plane 44
    3d_v_tile 44,1
    3d_u_tile 44,1
    3d_image_texture 44,6
    3d_x_position 44,-10
    3d_y_position 44,-15
    3d_z_position 44,0
    3d_x_rotate 44,-90

    3d_plane 45
    3d_v_tile 45,1
    3d_u_tile 45,1
    3d_image_texture 45,6
    3d_x_position 45,0
    3d_y_position 45,-15
    3d_z_position 45,0
    3d_x_rotate 45,-90

    3d_plane 46
    3d_v_tile 46,1
    3d_u_tile 46,1
    3d_image_texture 46,6
    3d_x_position 46,10
    3d_y_position 46,-15
    3d_z_position 46,0
    3d_x_rotate 46,-90

    3d_plane 47
    3d_v_tile 47,1
    3d_u_tile 47,1
    3d_image_texture 47,6
    3d_x_position 47,-10
    3d_y_position 47,-15
    3d_z_position 47,-10
    3d_x_rotate 47,-90

    3d_plane 48
    3d_v_tile 48,1
    3d_u_tile 48,1
    3d_image_texture 48,6
    3d_x_position 48,0
    3d_y_position 48,-15
    3d_z_position 48,-10
    3d_x_rotate 48,-90

    3d_plane 49
    3d_v_tile 49,1
    3d_u_tile 49,1
    3d_image_texture 49,6
    3d_x_position 49,10
    3d_y_position 49,-15
    3d_z_position 49,-10
    3d_x_rotate 49,-90
end_sub
' ------------------------------------------------------------------------------
sub creerFaceBlanche()
    3d_plane 51
    3d_v_tile 51,1
    3d_u_tile 51,1
    3d_image_texture 51,7
    3d_x_position 51,-10
    3d_y_position 51,15
    3d_z_position 51,-10
    3d_x_rotate 51,90

    3d_plane 52
    3d_v_tile 52,1
    3d_u_tile 52,1
    3d_image_texture 52,7
    3d_x_position 52,0
    3d_y_position 52,15
    3d_z_position 52,-10
    3d_x_rotate 52,90
  
    3d_plane 53
    3d_v_tile 53,1
    3d_u_tile 53,1
    3d_image_texture 53,7
    3d_x_position 53,10
    3d_y_position 53,15
    3d_z_position 53,-10
    3d_x_rotate 53,90

    3d_plane 54
    3d_v_tile 54,1
    3d_u_tile 54,1
    3d_image_texture 54,7
    3d_x_position 54,-10
    3d_y_position 54,15
    3d_z_position 54,0
    3d_x_rotate 54,90

    3d_plane 55
    3d_v_tile 55,1
    3d_u_tile 55,1
    3d_image_texture 55,7
    3d_x_position 55,0
    3d_y_position 55,15
    3d_z_position 55,0
    3d_x_rotate 55,90

    3d_plane 56
    3d_v_tile 56,1
    3d_u_tile 56,1
    3d_image_texture 56,7
    3d_x_position 56,10
    3d_y_position 56,15
    3d_z_position 56,0
    3d_x_rotate 56,90

    3d_plane 57
    3d_v_tile 57,1
    3d_u_tile 57,1
    3d_image_texture 57,7
    3d_x_position 57,-10
    3d_y_position 57,15
    3d_z_position 57,10
    3d_x_rotate 57,90

    3d_plane 58
    3d_v_tile 58,1
    3d_u_tile 58,1
    3d_image_texture 58,7
    3d_x_position 58,0
    3d_y_position 58,15
    3d_z_position 58,10
    3d_x_rotate 58,90

    3d_plane 59
    3d_v_tile 59,1
    3d_u_tile 59,1
    3d_image_texture 59,7
    3d_x_position 59,10
    3d_y_position 59,15
    3d_z_position 59,10
    3d_x_rotate 59,90
end_sub
Revenir en haut Aller en bas
mindstorm

mindstorm


Nombre de messages : 685
Age : 55
Localisation : charente
Date d'inscription : 13/02/2013

Projet d'un Rubik's cube en 3D - Page 2 Empty
MessageSujet: Re: Projet d'un Rubik's cube en 3D   Projet d'un Rubik's cube en 3D - Page 2 EmptySam 17 Sep 2022 - 15:28

Excusez mon retard mais je ne suis pas à la maison la semaine (il faut bien travailler...)
je vous ai fait un cube avec ces couleurs à télécharger sur le webdav
Projet d'un Rubik's cube en 3D - Page 2 Captur19
j'ai une autre idée en pur Panoramic
les faces sont lier au cube et donc tournent avec le cube (voir liaison dans la section 3D)
et autre idée façon tour de passe passe comme en dessin animé (Hide ...)
Bon courage
Revenir en haut Aller en bas
Contenu sponsorisé





Projet d'un Rubik's cube en 3D - Page 2 Empty
MessageSujet: Re: Projet d'un Rubik's cube en 3D   Projet d'un Rubik's cube en 3D - Page 2 Empty

Revenir en haut Aller en bas
 
Projet d'un Rubik's cube en 3D
Revenir en haut 
Page 2 sur 9Aller à la page : Précédent  1, 2, 3, 4, 5, 6, 7, 8, 9  Suivant
 Sujets similaires
-
» Un p'tit cube
» The Cube
» cube avec belle texture
» finaliser un projet
» Projet débarquement

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: