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 6 Emptypar Pedro Aujourd'hui à 8:08

» Un autre pense-bête...
Projet d'un Rubik's cube en 3D - Page 6 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 6 Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Projet d'un Rubik's cube en 3D - Page 6 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 6 Emptypar jjn4 Mar 12 Nov 2024 - 17:23

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

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

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

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

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

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

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

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

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

» fichier.exe
Projet d'un Rubik's cube en 3D - Page 6 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
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 6 Empty
MessageSujet: Re: Projet d'un Rubik's cube en 3D   Projet d'un Rubik's cube en 3D - Page 6 EmptyJeu 13 Oct 2022 - 18:36

Après qq tests, c'est possible de cliquer sur un objet 3D:
Code:
'
' Création de 2 sphères, une proche de l'écran et l'autre loin de celui-ci
' Les sphères sont déplacées suivant les mouvements de la souris. Elles sont dessous le pointeur de la souris
' Les spheres représentent les extrémités d'un rayon qui va traverser les objets à tester.
' Un test de collision est effectué sur un clic droit et l'objet testé change de couleur s'il est "cliqué"
'
' Par tatonnement :
' h_FOV = 90 ° et r = 1440.0 / 2270.0 (r = aspect ratio)
' v_FOV = 2.0 * atn( tan(h_FOV/2.0) * r)
' v_FOV = 64.778916 °

'
' Dans cet exemple, le déplacement et l'orientation de la caméra ne sont pas pris en compte
'

width 0,800 : height 0,600
full_space 0
degrees

dim v_fov,half_v_fov
dim half_sh,half_sw
dim lenght

dim SceneTD
dim oldClic,newClic
dim d_sphere_rouge,d_sphere_bleu

oldClic=0
newClic=0-1


caption 0,"Barre espace pour quitter"

'
dlist 2
'
scene3d 1
color 1,192,192,192
width 1,800 : height 1,600
' full_space 1

'
cam_position 0,0,0
' point_position 0,0.5,1
light_position 0,0,0

' Par défaut height(1) = 480 : valeur de référence pour calcul
' Calcul de la valeur de l'angle de l'étendue verticale en fonction de la hauteur du scene3D, pour height(1)=480(valeur par défaut); Cela donne le v_fov :
' v_fov=2.0*atn(1.0*(height(1)*3.0/2270.0)) : clipboard_string_copy str$(v_fov/2) : end

' FOV=64.778916 degrés (par expérimentation en panoramic car cette donnée n'est pas dans la doc)
v_fov=64.778916
half_v_fov=v_fov/2.0
'
' FOV
half_sh=height_client(1)/2.0
half_sw=width_client(1)/2.0
'
' Distance de la caméra à l'écran (focale)
' 480, parceque par défaut height(1) = 480(valeur de référence) !
' lenght=(half_sh/tan(half_v_fov))*(480/height_client(1))
lenght=(480.0/2.0)/tan(half_v_fov) :' hauteur fixe

' Sphère rouge
3d_sphere 11,10
3d_color 11,255,0,0
d_sphere_rouge=1000
3d_position 11,0-half_sw,0,d_sphere_rouge

' Sphère bleu
3d_sphere 12,3
3d_color 12,0,0,255
d_sphere_bleu=100
3d_position 12,0,0-half_sh,d_sphere_bleu
3d_transparent 12,128

' Plans
3d_box 50,100,100,0.1
3d_color 50,0,255,0
3d_position 50,150,50,450
3d_collision_as_cube 50

3d_box 51,100,100,0.1
3d_color 51,0,255,0
3d_position 51,-150,50,450
3d_collision_as_cube 51

3d_box 52,600,50,0.1
3d_color 52,0,255,0
3d_position 52,0,50,500
3d_collision_as_cube 52

' Rayon très fin pour tests de collisions : placé entre les 2 sphères
 3d_box 100,0.01,0.01,(d_sphere_rouge-d_sphere_bleu)
 3d_position 100,100,10,(d_sphere_rouge+d_sphere_bleu)/2
 3d_collision_as_cube 100

' L'oeil est placé en 0,0,0 et regarde vers 0,0,lenght
SceneTD = 1

repeat
  ' Placer le rayon selon les mouvements de la souris
  deplacer_rayon_a_la_souris()
  '
  ' Colorer un objet si on clique dessus
  select Mouse_Clicked(SceneTD)
      ' Clic gauche enfoncé
      case 1: if Check_Object_Click(50)=1 : 3d_color 50,255,255,0 : else : 3d_color 50,0,255,0 : end_if
              if Check_Object_Click(51)=1 : 3d_color 51,255,255,0 : else : 3d_color 51,0,255,0 : end_if
              if Check_Object_Click(52)=1 : 3d_color 52,255,255,0 : else : 3d_color 52,0,255,0 : end_if
      ' Clic gauche relaché
      case 0: 3d_color 50,0,255,0
              3d_color 51,0,255,0
              3d_color 52,0,255,0
  end_select
until scancode=32
terminate 



END
fnc Check_Object_Click(obj%)
      result o3d_collision(100,obj%)
end_fnc

sub deplacer_rayon_a_la_souris()
 dim_local dist,Factor_red,Factor_blue,Factor
  '
  ' Sphère rouge (éloignée) : placement selon les mouvements de la souris
  dist=d_sphere_rouge :' distance
  Factor_red=dist/lenght
  3d_position 11,(half_sw-mouse_x_position(1))*Factor_red,(half_sh-mouse_y_position(1))*Factor_red,lenght*Factor_red

 
  ' Sphère bleu (proche) : placement selon les mouvements de la souris
  dist=d_sphere_bleu :' distance
  Factor_blue=dist/lenght
  3d_position 12,(half_sw-mouse_x_position(1))*Factor_blue,(half_sh-mouse_y_position(1))*Factor_blue,lenght*Factor_blue
 
 
  ' Placement du rayon entre les 2 sphères
'  d=(o3d_z_position(11)+o3d_z_position(12))/2 :' distance centrale entre les 2 extrémités (représenté par les sphères)
  dist=(lenght*(Factor_red+Factor_blue))/2 :' distance centrale entre les 2 extrémités (représenté par les sphères)
  Factor=dist/lenght
  3d_position 100,(half_sw-mouse_x_position(1))*Factor,(half_sh-mouse_y_position(1))*Factor,(lenght)*Factor
  ' Pointer le rayon vers la sphère rouge
  3d_point_object 100,11
  '
end_sub

fnc Mouse_Clicked(Mouse_Clicked_SceneTD)
 dim_local Mouse_Clicked_typ$
' Mouse_Clicked_typ$="standard"
 Mouse_Clicked_typ$="avancé"
'
' Renvoi :
' -1 = no click
'  0 = click up
'  1 = click down
'
  oldClic=0
  if Mouse_Clicked_typ$="avancé"
      ' renvoi 1 tant que bouton souris reste enfoncé, puis 0 puis -1
      if mouse_left_down(Mouse_Clicked_SceneTD)=1
        newClic=1
      else
        if mouse_left_up(Mouse_Clicked_SceneTD)=1 : oldClic=1 : newClic = 0-1 : end_if
      end_if
  else
      ' renvoi 1 puis 0 puis -1
      if mouse_left_up(Mouse_Clicked_SceneTD)=1 and newClic=0-1
        newClic=1
      else
        if newClic=0 then newClic=0-1
        if newClic=1 then newClic=0
      end_if
  end_if
  result oldClic+newClic
end_fnc
La camera est placée en 0,0,0. Dès que sa position change, ça complique la donne. Je n'ai pas été si loin encore car c'est plus complexe en calcul à mon avis, et qu'il s'agit juste de montrer que le clic sur un objet 3D est détectable.

EDIT du 17/10 : Fait des modifications dans le code et ajout de commentaires


Dernière édition par silverman le Lun 17 Oct 2022 - 15:01, édité 4 fois
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 6 Empty
MessageSujet: Re: Projet d'un Rubik's cube en 3D   Projet d'un Rubik's cube en 3D - Page 6 EmptyJeu 13 Oct 2022 - 22:59

Silverman,tu ne dois pas avoir de problème si tu tourne la camera.
La preuve,
d’abord la face tourne, les chiffres de control changent
ensuite, quand tu actionne la rotation camera (flèche droite gauche haut et bas)
les chiffres de rotation de l'objet 3D ne change pas "c'est la camera qui tourne".
A minima il suffit d'avoir une sphère par face et une commande hide pour jouer à cache cache.
Je crois même que tu devrais jumeler les mouvements des six sphères (une seul commande pour le tout)
A toi de voir

Code:
label quitter,ActionRotationCameraxyp,ActionRotationCameraxym,ActionRotationCamerazp,ActionRotationCamerazm

scene3d 1:full_space 1 :color 1,240,234,199
form 2:Left 2,600:height 2,800:top 2,0:width 2,140
print_target_is 2
 
dim i%,j%,x,y,z,d,c,r,cub,mesh,rot(3,3,3),pos(3,3,3),B(2,2),A(2,2),camxy,camz,camp,xc,yc,zc ,y1%
dim butxy,butz

camxy=45  
camz=54.735
cam_position 10,10,10
triedre()
CommandesManuel()
CommandesRotationCamera()
constructionmesh()
constructioncube()
positionmesh()
chainage()
wait 200
x=0:y=0:z=0
d=10
r=1
 rotationprogressive()
on_click 513,ActionRotationCameraxym
on_click 514,ActionRotationCameraxyp
on_click 515,ActionRotationCamerazp
on_click 516,ActionRotationCamerazm
end
quitter:
    terminate
return

ActionRotationCameraxyp:        
    butxy=45  
    RotationCamera()  
    butxy=0          
return
ActionRotationCameraxym:        
    butxy=-45  
    RotationCamera()  
    butxy=0          
return
ActionRotationCamerazp:
    butz=-45  
    RotationCamera()
    butz=0          
return
ActionRotationCamerazm:
    butz=45  
    RotationCamera()
    butz=0          
return
'___________________________________________________________________________
      
 sub constructionmesh()
     for j%=1 to 9
         for i%=1 to 3
             mesh=(100*i%)+j%
             3d_mesh mesh
             3d_load_object mesh,"cube.3ds"
             3d_load_texture mesh, "cube.bmp"
         next i%
     next j%
 end_sub
 '__________________________________________________________________________
 
 sub constructioncube()
     for j%=1 to 9
         for i%=1 to 3
             cub=(10*i%)+j%
             3d_cube cub,1
         next i%
     next j%
 end_sub
 '_________________________________________________________________________
 
 sub chainage()
     for j%=1 to 9
         for i%=1 to 3
         cub=(i%*10)+j%
         mesh=(i%*100)+j%
         3d_chain cub,mesh
         next i%
     next j%
 end_sub
 '_________________________________________________________________________
 
 sub positionmesh()
    for j%=1 to 3
         z=2.01*(2-j%)
         c=j%*100
         3d_position c+1,0,0,z
         3d_position c+2,0,2.01,z
         3d_position c+3,0,-2.01,z
         3d_position c+4,2.01,0,z
         3d_position c+5,2.01,2.01,z
         3d_position c+06,2.01,-2.01,z
         3d_position c+7,-2.01,0,z
         3d_position c+8,-2.01,2.01,z
         3d_position c+9,-2.01,-2.01,z
     next j%
 end_sub
 '_________________________________________________________________________
 
 sub triedre()
     3d_cube 1,1     :3d_scale 1,12,0.1,0.1
     3d_cube 2,1     :3d_scale 2,0.1,12,0.1
     3d_cube 3,1     :3d_scale 3,0.1,0.1,12
     3d_cone 4,.8,.3 :3d_x_position 4,6 :3d_z_rotate 4,-90
     3d_cone 5,.8,.3 :3d_y_position 5,6
     3d_cone 6,.8,.3 :3d_z_position 6,6 :3d_x_rotate 6,-90
     3d_text 7,"X"     : 3d_x_position 7,6.5
     3d_text 8,"Y"     : 3d_y_position 8,6.5
     3d_text 9,"Z"     : 3d_z_position 9,7.1 :3d_y_rotate 9,90
 end_sub
 
 '_________________________________________________________________________

sub CommandesManuel()
button 501:top 501,50 :left 501,75:width 501,25 :height 501,25 :caption 501,"Front <"
button 502:top 502,50 :left 502,100:width 502,25 :height 502,25 :caption 502,"Front >"
button 503:top 503,50 :left 503,25:width 503,25 :height 503,25 :caption 503,"Lef <"
button 504:top 504,50 :left 504,50:width 504,25 :height 504,25 :caption 504,"Lef >"
button 505:top 505,50 :left 505,125:width 505,25 :height 505,25 :caption 505,"Right <"
button 506:top 506,50 :left 506,150:width 506,25 :height 506,25 :caption 506,"Right >"
button 507:top 507,25 :left 507,75:width 507,25 :height 507,25 :caption 507,"Up <"
button 508:top 508,25 :left 508,100:width 508,25 :height 508,25 :caption 508,"Up >"
button 509:top 509,75 :left 509,75:width 509,25 :height 509,25 :caption 509,"Down <"
button 510:top 510,75 :left 510,100:width 510,25 :height 510,25 :caption 510,"Down >"
button 511:top 511,100 :left 511,75:width 511,25 :height 511,25 :caption 511,"Back <"
button 512:top 512,100 :left 512,100:width 512,25 :height 512,25 :caption 512,"Back >"
end_sub  

 '__________________________________________________________________________
 
sub CommandesRotationCamera()
button 513:top 513,200 :left 513,80:width 513,40 :height 513,40 :caption 513,"<left"
button 514:top 514,200 :left 514,460:width 514,40 :height 514,40 :caption 514,"right>"
button 515:top 515,10 :left 515,280:width 515,40 :height 515,40 :caption 515,"up >"
button 516:top 516,400 :left 516,280:width 516,40 :height 516,40 :caption 516,"down >"
 end_sub
'___________________________________________________________________________
  
sub control()
 cub=15
A(0,0)=0
A(0,1)=0
A(0,2)=0

  
A(1,0)=o3d_x_rotate (cub)
A(1,1)=o3d_y_rotate (cub)
A(1,2)=o3d_z_rotate (cub)
print o3d_x_rotate (cub)
print o3d_y_rotate (cub)    
print o3d_z_rotate (cub)

A(2,0)=sin (degree_to_radian  (A(1,0)))
A(2,1)=sin (degree_to_radian (A(1,1)))
A(2,2)=sin (degree_to_radian(A(1,2)))
   print "cub 15 rotation"
print "   X A | "+ str$(A(0,0))+ "  B | "+ str$(A(1,0))+ "  C | "+ str$(A(2,0))
print "   Y A | "+ str$(A(0,1))+ "  B | "+ str$(A(1,1))+ "  C | "+ str$(A(2,1))
print "   Z A | "+ str$(A(0,2))+ "  B | "+ str$(A(1,2))+ "  C | "+ str$(A(2,2))
end_sub

'_________________________________________________________________________

sub rotationprogressive()

    for i%=1 to 3
        z=r*30*i%
        3d_rotate d+1,x,y,z
        3d_rotate d+2,x,y,z
        3d_rotate d+3,x,y,z
        3d_rotate d+4,x,y,z
        3d_rotate d+5,x,y,z
        3d_rotate d+6,x,y,z
        3d_rotate d+7,x,y,z
        3d_rotate d+8,x,y,z
        3d_rotate d+9,x,y,z
    wait 300
    next i%
    control()
end_sub

'_________________________________________________________________________


sub RotationZ()
dim_local i,j,k
print "rotaxeZ
 for k=1 to 90  
    camxy= 0+k
    camz= 90
    camp=17
    xc=camp*(sin(degree_to_radian (camz))*cos(degree_to_radian (camxy)))
    yc=camp*(sin(degree_to_radian (camz))*sin(degree_to_radian (camxy)))
    zc=camp* (cos(degree_to_radian (camz)))
    cam_position xc,yc,zc        
  next k
end_sub

 
sub RotationY()
dim_local i,j,k
print "rotaxeY
 for j=1 to 90  
    camxy=0    
    camz=0+j
    camp=17
    xc=camp*(sin(degree_to_radian (camz))*cos(degree_to_radian (camxy)))
    yc=camp*(sin(degree_to_radian (camz))*sin(degree_to_radian (camxy)))
    zc=camp* (cos(degree_to_radian (camz)))
    cam_position xc,yc,zc        
  next j
end_sub

  
  
sub RotationX()  
dim_local i,j,k
print "rotaxeX
 for i=1 to 90  
    camxy=270
    camz= 0+i
    camp=17
    xc=camp*(sin(degree_to_radian (camz))*cos(degree_to_radian (camxy)))
    yc=camp*(sin(degree_to_radian (camz))*sin(degree_to_radian (camxy)))
    zc=camp* (cos(degree_to_radian (camz)))  
  cam_position xc,yc,zc              
  next i  
end_sub


sub RotationCamera()
print "rotaxe cub  
    camxy= camxy+butxy  
    camz= camz+butz
    camp=17.32
    xc=camp*(cos(degree_to_radian (camz))*cos(degree_to_radian (camxy)))
    zc=camp*(cos(degree_to_radian (camz))*sin(degree_to_radian (camxy)))
    yc=camp* (sin(degree_to_radian (camz)))
    cam_position xc,yc,zc
    
      ' orientation de la caméra par MARC.
            y1% = wrap_value(camz)
            if (y1% >= 0 and y1% < 90) or (y1% > 270 and y1% < 360)
                cam_roll 0
            else
                cam_roll 180
            end_if  
    control()                
end_sub


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 6 Empty
MessageSujet: Re: Projet d'un Rubik's cube en 3D   Projet d'un Rubik's cube en 3D - Page 6 EmptyVen 14 Oct 2022 - 10:45

@mindstorm
Non non, je ne parle pas de la camera du rubiks cube, mais de celle du code que j'ai posté ci-dessus. Il s'agit d'un programme qui permet de détecter le clic sur un objet 3D.
Comme la caméra est fixe et positionnée en 0,0,0, le rayon qui détecte les collisions est bien positionné. C'est un code que j'ai fait vite fait, mais si la caméra bouge, il faut recalculer la position du rayon. Je n'ai encore inclu cette possibilité car ça me semble à première vue un peu plus compliqué, mais pas infaisable.
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 6 Empty
MessageSujet: Re: Projet d'un Rubik's cube en 3D   Projet d'un Rubik's cube en 3D - Page 6 EmptyVen 14 Oct 2022 - 12:25

Bonjour à tous !

@Silverman : Merci d'avoir pris le temps de cette réflexion.
houlà c'est déjà bien compliqué pour moi ! donc je vais éliminer cette solution même si elle semble réalisable !
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 6 Empty
MessageSujet: Re: Projet d'un Rubik's cube en 3D   Projet d'un Rubik's cube en 3D - Page 6 EmptySam 15 Oct 2022 - 11:39

silverman a écrit:
mais si la caméra bouge, il faut recalculer la position du rayon.
As tu essayé de lancer la sphère sur la tuile?
J'avais codé assez facilement un robot autonome qui devait éviter des murs.
Le code est dans mon webmail
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 6 Empty
MessageSujet: Re: Projet d'un Rubik's cube en 3D   Projet d'un Rubik's cube en 3D - Page 6 EmptyLun 17 Oct 2022 - 15:11

J'ai une vague idée de comment faire sans lancer la sphère sur la tuile. Obtenir le vecteur d'orientation de la caméra ne semble pas bien compliqué, alors je vais voir ça.
J'étudierai ton code à l'occasion, mais je ne vois pas lequel est-ce dans ton webdav.
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 6 Empty
MessageSujet: Re: Projet d'un Rubik's cube en 3D   Projet d'un Rubik's cube en 3D - Page 6 EmptyLun 17 Oct 2022 - 23:12

@silvermann
Passe voir le mini pelle
@Papydall
Après avoir digéré les coordonnées sphérique (j'espère avoir fait le tour ce soir)
Peux tu me fournir tes équations pour obtenir Artang et Arcos ?
merci d'avance
Revenir en haut Aller en bas
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 6 Empty
MessageSujet: Re: Projet d'un Rubik's cube en 3D   Projet d'un Rubik's cube en 3D - Page 6 EmptyMar 18 Oct 2022 - 1:24

Bonsoir Mindstorm,

J’ai voulu aller voir ton programme « mini pelle ». Je ne l’ai pas trouvé dans ton WebDAV.
Quoi qu’il en soit, cela m’a permis de découvrir avec plaisir ton programme 3D Architekt et ta palette de couleurs.
Ce sont de belles réalisations fonctionnelles et efficaces.

Autrement, si tu cherches les fonctions arc tangente et arc cosinus,
elles existent sous Panoramic : ATN(V) et ACOS(V).

Bonne programmation !
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 6 Empty
MessageSujet: Re: Projet d'un Rubik's cube en 3D   Projet d'un Rubik's cube en 3D - Page 6 EmptyMar 18 Oct 2022 - 18:10

Bonsoir Marc
merci pour les opérateurs mathématique.
Je viens de remettre la minipelle en ligne.
Avec toutes me excuses

PS quelqu'un connait il l'alternative à la fonction atan2(x,y)?
Revenir en haut Aller en bas
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 6 Empty
MessageSujet: Re: Projet d'un Rubik's cube en 3D   Projet d'un Rubik's cube en 3D - Page 6 EmptyMer 19 Oct 2022 - 10:56

Mindstorm a écrit:
PS quelqu'un connait il l'alternative à la fonction atan2(x,y)?

Voici la fonction atan2(y,x). Le résultat est en radians.
Si tu souhaites des degrés, multiplie le résultat par 180/PI.

Code:
dim x,y
y=1
x=0
print atan2(y,x)
end
' ------------------------------------------------------------------------------
fnc atan2(y,x)
    if x=0 and y=0
        message "Indéfini"
        exit_fnc
    end_if    
    if x>0
        result atn(y/x)
    else
        if x<0 and y >=0
            result atn(y/x)+PI
        else
            if x<0 and y<0
                result atn(y/x)-PI
            else
                if x=0 and y>0
                    result PI/2
                else
                    if x=0 and y<0
                        result PI/2*(-1)
                    end_if
                end_if
            end_if
        end_if
    end_if                                
end_fnc

Le lien Wikipédia qui m'a permis de créer la fonction atan2(y,x) : https://en.wikipedia.org/wiki/Atan2
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 7017
Age : 74
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Projet d'un Rubik's cube en 3D - Page 6 Empty
MessageSujet: Re: Projet d'un Rubik's cube en 3D   Projet d'un Rubik's cube en 3D - Page 6 EmptyMer 19 Oct 2022 - 13:28

Une très mauvaise nouvelle pour moi.
Depuis deux jours j'étais victime d'un vilain ransomware.
Tous mes fichiers (photos, documents, programmes, etc..) ont étés cryptés par ce virus avec comme extension .tury
Des centaines de programmes en Panoramic, en Free Basic, en Python, etc ont été perdus.
Et il est presqu'impossible de décrypter : il faut payer 980 $.
Je préfère formater mon PC et tout perdre afin de recommencer à partir de zéro, que de payer le moidre centime à ces types de "salaupards"!
Je m'excuse pour ce hors-sujet et je réponds à mindstorm


Code:

rem ============================================================================
rem                      Fonction Atn2(y,x)
rem  Arc tangente de Y/X : retourne les valeurs dans les 4 quadrants en radians
rem ============================================================================
dim x,y
width 0,700
caption 0,"La fonction ATN2(y,x) retourne les valeurs de l'Arc Tangente de y / x dans les 4 quadrants"
memo 10 : top 10,20 : left 10,20 : width 10,300 : height 10,400
memo 20 : top 20,20 : left 20,350 : width 20,300 : height 20,400
item_add 10,"      Valeurs en Radians par défaut" : item_add 10,""
item_add 20,"      Valeurs converties en degrés"  : item_add 20,""
for x = -2 to 2
  for y = -2 to 2    
      item_add 10, " x = " +str$(x) +  "   y = " + str$(y) + "    atn2(y,x) = "+  str$(atn2(y,x))
      item_add 20, " x = " +str$(x) +  "   y = " + str$(y) + "    atn2(y,x) = "+  str$(radian_to_degree(atn2(y,x)))      
  next y
next x
end
rem ============================================================================
' Atn2(y,x) :  Arc tangente de Y/X
' arc tangente de Y/X -->  retourne les valeurs dans les 4 quadrants
FNC Atn2(y,x)
    If x = 0
       result Sgn(y) * pi/2
    Else
       If x > 0
          result Atn(y / x)
       Else
          if x < 0 and y = 0
             result atn(y / x) - sgn(x) * pi
          else
             result Atn(y / x) + Sgn(y) * pi
          end_if
       End_If        
    end_if
END_FNC
rem ============================================================================


Ps : Je n'ai pas vu la réponse de Marc avant de publier mon message.
Bon, c'est une autre façon de coder la dite fonction Atn2(y,x)
NB : pour x = 0 et y = 0 la plus part de langage donnent 0 comme résultat.


EDIT
Code édité selon l'anomalie relévée par Marc


Dernière édition par papydall le Mer 19 Oct 2022 - 17:07, édité 1 fois
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
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 6 Empty
MessageSujet: Re: Projet d'un Rubik's cube en 3D   Projet d'un Rubik's cube en 3D - Page 6 EmptyMer 19 Oct 2022 - 14:36

Bonjour Papydall !

Je suis désolé pour cette histoire de virus. pale

Après avoir modifié ton source pour afficher côte à côte ta fonction atn2() et ma fonction atan2(), j'ai remarqué que les résultats ne sont pas identiques.

Projet d'un Rubik's cube en 3D - Page 6 Papyda18



L’anomalie est située dans ton source, lignes 14 et 15. Les paramètres y et x sont inversés :

Projet d'un Rubik's cube en 3D - Page 6 Papyda17
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 7017
Age : 74
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Projet d'un Rubik's cube en 3D - Page 6 Empty
MessageSujet: Re: Projet d'un Rubik's cube en 3D   Projet d'un Rubik's cube en 3D - Page 6 EmptyMer 19 Oct 2022 - 17:10

Merci Marc.
J'ai édité mon code ci-dessus.
Je suis vraiment navré d'avoir perdu tout! Sad
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
JL35




Nombre de messages : 7112
Localisation : 77
Date d'inscription : 29/11/2007

Projet d'un Rubik's cube en 3D - Page 6 Empty
MessageSujet: Re: Projet d'un Rubik's cube en 3D   Projet d'un Rubik's cube en 3D - Page 6 EmptyMer 19 Oct 2022 - 17:32

Désolé papydall pour ce qui t'est arrivé...
Évidemment tu as eu raison de ne pas céder, mais quand même, ça fait froid dans le dos.
Perso je fais régulièrement des sauvegardes sur un disque externe,
mais malgré ça, on perd forcément beaucoup de choses.
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 6 Empty
MessageSujet: Re: Projet d'un Rubik's cube en 3D   Projet d'un Rubik's cube en 3D - Page 6 EmptyMer 19 Oct 2022 - 18:27

@papydall
Je suis de tout cœur avec toi, c'est toujours une catastrophe ces choses là.
Pour ma part, j'ai acquis  une méfiance  légitime pour l'informatique lorsque je me suis assis (au sens propre) en 1990 sur un PSION et par là même j'ai perdu 1000 clients.
C'est encore autre chose, j'imagine, de se faire pirater et nous ne sommes jamais totalement à l'abri.

Merci à Marc et toi pour le code, je vais pouvoir les comparer avec le mien (fini entre midi et deux)
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 6 Empty
MessageSujet: Re: Projet d'un Rubik's cube en 3D   Projet d'un Rubik's cube en 3D - Page 6 EmptyMer 19 Oct 2022 - 19:17

Je suis désolé pour toi Papydall. pale

Encore les programmes c'est pas le plus grave, mais les photos c'est plus triste, et les documents ça c'est le plus importants !

C'est vrai qu'on ne pense pas assez à faire des copies mais on devrait pourtant faire plusieurs sauvegardes et stocker à différents endroits.

Ma maison a brulée il y a une 15 d'années et j'avais à l'époque tout perdu comme toi avec pourtant des copies sur disque dur externe.
mais il a aussi disparu dans l'incendie !

C'est vrai que ces virus, ransomwares et autres sont une plaie pour l'informatique !

Vraiment très peiné de ce qui t'arrive et pas de problème pour le hors sujet.
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 6 Empty
MessageSujet: Re: Projet d'un Rubik's cube en 3D   Projet d'un Rubik's cube en 3D - Page 6 EmptyMer 19 Oct 2022 - 20:48

Merci, je viens de trouver mon erreur grâce à vos encouragements.
Mon plaisir est de ne pas copier,
malheureusement cela ne donne pas un code aussi lisible que les vôtres et bien sur
Quand ce n'est pas lisible..... bref un % qui avait disparu!

Code:



 rem "     Programme RUBICKS CUBE  par Mindstorm
 rem"      Mais avec l'aide de pas mal de monde!
 Rem"           dans l'ordre alphabetique
 rem"     Jack  marc   minibub papydall silverman




label quitter,ActionRotationCameraxyp,ActionRotationCameraxym,ActionRotationCamerazp,ActionRotationCamerazm

scene3d 1:full_space 1 :color 1,240,234,199
form 2:Left 2,600:height 2,800:top 2,0:width 2,140
print_target_is 2
 
dim i%,j%,x,y,z,d,c,r,cub,mesh,rot(3,3,3),pos(3,3,3),B(2,2),A(2,2),camxy,camz,camp ,y1%
dim butxy,butz,xc%,yc%,zc% ,xcux%,ycux%,zcux% ,xcuy%,ycuy%,zcuy%,xcuz%,ycuz%,zcuz%
dim anglconstrxy,anglconstrz
dim calp,calxy,calz,xcal%,ycal%,zcal% ,correctifatan% ,correccal%

camxy=45  
camz=54.735
cam_position 10,10,10

triedre()
CommandesManuel()
CommandesRotationCamera()
constructionmesh()
constructioncube()
positionmesh()
chainage()
controlCam()
                         rem "zone programme en cours"
wait 200
x=0:y=0:z=0
d=10
r=1
 rotationprogressive()
                         rem        "fin de zone"
                        
on_click 513,ActionRotationCameraxym
on_click 514,ActionRotationCameraxyp
on_click 515,ActionRotationCamerazp
on_click 516,ActionRotationCamerazm

end
quitter:
    terminate
return
 '________________________________________________________________________
 
ActionRotationCameraxyp:        
    butxy=45  
    RotationCamera()  
    butxy=0          
return
ActionRotationCameraxym:        
    butxy=-45  
    RotationCamera()  
    butxy=0          
return
ActionRotationCamerazp:
    butz=-45  
    RotationCamera()
    butz=0          
return
ActionRotationCamerazm:
    butz=45  
    RotationCamera()
    butz=0          
return
'___________________________________________________________________________
      
 sub constructionmesh()
     for j%=1 to 9
         for i%=1 to 3
             mesh=(100*i%)+j%
             3d_mesh mesh
             3d_load_object mesh,"cube.3ds"
             3d_load_texture mesh, "cube.bmp"
         next i%
     next j%
 end_sub
 '__________________________________________________________________________
 
 sub constructioncube()
     for j%=1 to 9
         for i%=1 to 3
             cub=(10*i%)+j%
             3d_cube cub,1
         next i%
     next j%
 end_sub
 '_________________________________________________________________________
 
 sub chainage()
     for j%=1 to 9
         for i%=1 to 3
         cub=(i%*10)+j%
         mesh=(i%*100)+j%
         3d_chain cub,mesh
         next i%
     next j%
 end_sub
 '_________________________________________________________________________
 
 sub positionmesh()
    for j%=1 to 3
         z=2.01*(2-j%)
         c=j%*100
         3d_position c+1,0,0,z
         3d_position c+2,0,2.01,z
         3d_position c+3,0,-2.01,z
         3d_position c+4,2.01,0,z
         3d_position c+5,2.01,2.01,z
         3d_position c+6,2.01,-2.01,z
         3d_position c+7,-2.01,0,z
         3d_position c+8,-2.01,2.01,z
         3d_position c+9,-2.01,-2.01,z
     next j%
 end_sub
 '_________________________________________________________________________
 
 sub triedre()
     3d_cube 1,1     :3d_scale 1,12,0.1,0.1
     3d_cube 2,1     :3d_scale 2,0.1,12,0.1
     3d_cube 3,1     :3d_scale 3,0.1,0.1,12
     3d_cone 4,.8,.3 :3d_x_position 4,6 :3d_z_rotate 4,-90
     3d_cone 5,.8,.3 :3d_y_position 5,6
     3d_cone 6,.8,.3 :3d_z_position 6,6 :3d_x_rotate 6,-90
     3d_text 7,"X"     : 3d_x_position 7,6.5
     3d_text 8,"Y"     : 3d_y_position 8,6.5
     3d_text 9,"Z"     : 3d_z_position 9,7.1 :3d_y_rotate 9,90
 end_sub
 
 '_________________________________________________________________________

sub CommandesManuel()
button 501:top 501,50 :left 501,75:width 501,25 :height 501,25 :caption 501,"Front <"
button 502:top 502,50 :left 502,100:width 502,25 :height 502,25 :caption 502,"Front >"
button 503:top 503,50 :left 503,25:width 503,25 :height 503,25 :caption 503,"Lef <"
button 504:top 504,50 :left 504,50:width 504,25 :height 504,25 :caption 504,"Lef >"
button 505:top 505,50 :left 505,125:width 505,25 :height 505,25 :caption 505,"Right <"
button 506:top 506,50 :left 506,150:width 506,25 :height 506,25 :caption 506,"Right >"
button 507:top 507,25 :left 507,75:width 507,25 :height 507,25 :caption 507,"Up <"
button 508:top 508,25 :left 508,100:width 508,25 :height 508,25 :caption 508,"Up >"
button 509:top 509,75 :left 509,75:width 509,25 :height 509,25 :caption 509,"Down <"
button 510:top 510,75 :left 510,100:width 510,25 :height 510,25 :caption 510,"Down >"
button 511:top 511,100 :left 511,75:width 511,25 :height 511,25 :caption 511,"Back <"
button 512:top 512,100 :left 512,100:width 512,25 :height 512,25 :caption 512,"Back >"
end_sub  

 '__________________________________________________________________________
 
sub CommandesRotationCamera()
button 513:top 513,200 :left 513,80:width 513,40 :height 513,40 :caption 513,"<left"
button 514:top 514,200 :left 514,460:width 514,40 :height 514,40 :caption 514,"right>"
button 515:top 515,10 :left 515,280:width 515,40 :height 515,40 :caption 515,"up >"
button 516:top 516,400 :left 516,280:width 516,40 :height 516,40 :caption 516,"down >"
 end_sub
'___________________________________________________________________________
 
sub control()
cub=15
anglconstrxy=45 :anglconstrz=54.735

A(0,0)=2.01
A(0,1)=2.01
A(0,2)=2.01
  
A(1,0)=o3d_x_rotate (cub)
A(1,1)=o3d_y_rotate (cub)
A(1,2)=o3d_z_rotate (cub)

     print "      cub" + str$ (cub) + "  rotation"
print "  rcX | "+ str$(A(1,0))
print "  rcY | "+ str$(A(1,1))
print "  rcZ | "+ str$(A(1,2))

RotationCalcul()

end_sub

'_________________________________________________________________________

 sub controlCam()

 print_y_locate 0
 print "                                                               "
 print "         position Cam                                          "
 print "     Xcam |"+str$(xc%)+"                                       "
 print "     YCam |"+str$(yc%)+"                                       "
 print "     ZCam |"+str$(zc%)+"                                       "
 print "                                                               "

 end_sub

'________________________________________________________________________

sub RotationCamera()
    camxy= camxy+butxy  
    camz= camz+butz
    camp=17.32
    xc%=camp*(cos(degree_to_radian (camz))*cos(degree_to_radian (camxy)))
    zc%=camp*(cos(degree_to_radian (camz))*sin(degree_to_radian (camxy)))
    yc%=camp* (sin(degree_to_radian (camz)))
    cam_position xc%,yc%,zc%
    
      ' orientation de la caméra par MARC.
            y1% = wrap_value(camz)
            if (y1% >= 0 and y1% < 90) or (y1% > 270 and y1% < 360)
              cam_roll 0
                else
                cam_roll 180
            end_if  
    controlCam()                
end_sub

'__________________________________________________________________________

sub rotationprogressive()

    for i%=1 to 3
        z=r*30*i%
        3d_rotate d+1,x,y,z
        3d_rotate d+2,x,y,z
        3d_rotate d+3,x,y,z
        3d_rotate d+4,x,y,z
        3d_rotate d+5,x,y,z
        3d_rotate d+6,x,y,z
        3d_rotate d+7,x,y,z
        3d_rotate d+8,x,y,z
        3d_rotate d+9,x,y,z
    wait 300
    next i%
    control()
end_sub

'_________________________________________________________________________


sub RotationCalcul()
dim cal2xy, cal2z, cal2p

                   rem "zonne de programme en cours
rem a suivre   A(1,0)   A(1,1)  
                   rem       "fin de zone
                  
    calxy= A(1,2)+anglconstrxy
    calz=anglconstrz
    calp=1.732
    
    xcal%=calp*(sin(degree_to_radian (calz))*cos(degree_to_radian (calxy)))
    ycal%=calp*(sin(degree_to_radian (calz))*sin(degree_to_radian (calxy)))
    zcal%=calp* (cos(degree_to_radian (calz)))
    
    
    
     cal2p=sqr((xcal% *xcal%)+(ycal% *ycal%)+(zcal% * zcal%))
     if (xcal%>0)
        cal2xy=atn(ycal%/xcal%)
     else      
           if xcal% <0 and ycal% >=0
              cal2xy=atn(ycal% /xcal%)+pi
                else
                if xcal% <0 and ycal% <0
                   cal2xy=atn(ycal% /xcal%)-pi  
                else
                     if xcal% =0 and ycal% >0
                        cal2xy=pi/2
                     else
                          cal2xy% =-pi/2  
                     end_if
                end_if
           end_if
        end_if
    cal2z=acos (zcal% /cal2p )
    
    A(2,0)=(xcal% *A(0,0))          
    A(2,1)=(ycal% *A(0,1))
    A(2,2)=(zcal% *A(0,2))    
    
    
 
print_y_locate 160
 print "      résultat calcul                                                "
 print "                                                                     "
 print "  mesh repère orthonormé                                             "
 print "   Xcal |"+str$(xcal%)+"                                             "
 print "   YCal |"+str$(ycal%)+"                                             "
 print "   ZCal |"+str$(zcal%)+"                                             "
 print "                                                                     "  
 print "  mesh repère spherique                                              "
 print "   Pcal2  |"+str$(cal2p)+"                                           "
 print "   Calxy2 |"+str$(radian_to_degree(cal2xy))+"                        "
 print "   calz2  |"+str$(radian_to_degree(cal2z))+"                         "
 print "                                                                     "
 print "  mesh nouvelle position                                             "
 print "   X2 | "+ str$(A(2,0))+"                                            "  
 print "   Y2 | "+ str$(A(2,1))+"                                            "  
 print "   Z2 | "+ str$(A(2,2))+"                                            "  

end_sub


Il reste encore pas mal de choses à faire mais il n'y a plus de bug!
la prochaine fois j'utiliserai fnc et result
merci encore


Dernière édition par mindstorm le Mer 19 Oct 2022 - 22:56, édité 2 fois
Revenir en haut Aller en bas
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 6 Empty
MessageSujet: Re: Projet d'un Rubik's cube en 3D   Projet d'un Rubik's cube en 3D - Page 6 EmptyMer 19 Oct 2022 - 22:30

Bonsoir à tous,

Voici une idée de présentation pour réaliser le jeu du Rubik’s Cube.

Projet d'un Rubik's cube en 3D - Page 6 Rubiks11

Le principe :
Les icônes de rotation permettent de faire tourner la face souhaitée de 90° à chaque clic.
La couleur de l’icône correspond à la couleur centrale de la face à faire tourner.

Le "moteur" de rotation des faces, créé par Silverman, n’est malheureusement pas totalement compatible avec ce mode de commande. Peux-tu, s’il te plait Silverman, jeter un œil dessus ? Est-ce adaptable ?

Sous les icônes de rotation, les deux suivantes permettront de mélanger et de restaurer le cube.

Pour finir, les deux dernières icônes serviront à afficher le Mode d’emploi et à quitter le jeu.

Le jeu possède un menu contextuel accessible depuis un clic droit.
Les commandes peuvent être placées à gauche ou à droite du Rubik’s Cube, suivant si vous êtes droitier ou gaucher.

Le clic gauche sur le cube permet d’orienter celui-ci par un cliquer-déplacer. L’action est possible uniquement si les faces ne sont pas en mouvement.

Je vais travailler sur le Mode d’emploi et l’A propos.

Le plus compliqué est d’adapter le "moteur" de rotation à ce principe de commande. J’espère que Silverman aura un peu de temps pour jeter un œil.

Lien de téléchargement de cette version : https://e-nautia.com/yoda/disk?p=10364482

Bonne programmation à tous !

Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 7017
Age : 74
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Projet d'un Rubik's cube en 3D - Page 6 Empty
MessageSujet: Re: Projet d'un Rubik's cube en 3D   Projet d'un Rubik's cube en 3D - Page 6 EmptyJeu 20 Oct 2022 - 0:02

@ Marc
Merci pour ce code.
J'ai téléchargé et j'ai testé

Dans le S/P melanger:  select int(rnd(2)+1) donne un entier compris entre 1 (inclu) et 3 (exclu)
Or tu distingues 3 trois cas 1, 2 et 3
Pour obtenir un aléatoire entier 1 , 2 ou 3 remplacer par :
int(rnd(3)+1)

Autre minibug (salut Laurant !) :
Le s/p reinitialiser ne fait pas son boulot correctement !

Bonne continuation!

(Avec ce maudit virus que j'ai attrappé j'éprouve beaucoup de diffucultés pour naviguer.
Pas moins de 10 minutes pour pouvoir envoyer ce misérable message !)
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
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 6 Empty
MessageSujet: Re: Projet d'un Rubik's cube en 3D   Projet d'un Rubik's cube en 3D - Page 6 EmptyJeu 20 Oct 2022 - 0:57

Merci Papydall pour ton intervention.

Effectivement, les sous-programmes melanger et reinitialiser entre-autres, ne sont pas codés. C’est juste un brouillon.
Ils dépendront de l’algorithme de rotation des faces du cube quand celui-ci sera adapté au principe de fonctionnement du programme…

Pour l’instant ce n’est qu’une idée de présentation du jeu, une maquette.

Bon courage à toi pour remettre en état ta partie informatique.



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 6 Empty
MessageSujet: Re: Projet d'un Rubik's cube en 3D   Projet d'un Rubik's cube en 3D - Page 6 EmptyJeu 20 Oct 2022 - 7:28

Bonjour à tous !

@mindstorm :
Je viens de tester ton dernier code. Certes il est incomplet, mais l'approche me semble sympa.
Pour les déplacements il faudra voir une fois l'ensemble fonctionnel. geek

@Marc :
Bravo pour la partie graphique. Comme toujours tu te surpasse !
Par contre au niveau de la gestion des déplacements cela ne semble pas très pratique. du moins pour le moment.
Je sais bien que ton code est en cours de développement, donc attendons de voir la suite. Wink

@Papydall : Merci pour le clin d'œil et bon courage à toi pour la suite... sunny

Très heureux de voir que vous être toujours intéressés par le sujet du Rubiks cube.
Il faut dire que c'est un régal pour les programmeurs.

Merci à tous pour vos interventions ! cheers
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 6 Empty
MessageSujet: Re: Projet d'un Rubik's cube en 3D   Projet d'un Rubik's cube en 3D - Page 6 EmptyJeu 20 Oct 2022 - 14:22

@marc
Bien sur que c'est adaptable, et même déjà fait Very Happy . J'avais déjà identifié le problème, et normalement il a été corrigé ici, dans la dernière version du moteur  Wink . En plus dans celle-ci, la vitesse de rotation des couronnes a été accéléré (c'est paramétrable) ce qui est bien plus agréable.
Je compte neuf  "tranches" : en X sur -2, 0 et 2, pareil pour Y et Z. Soit 3 couronnes par axe, multiplié par 3 axes = 9 "tranches". Ton interface ne propose que 6 possibilité vers la droite ou la gauche, donc il doit y avoir des couronnes qui ne sont pas actionnées, celles du centre apparement. c'est bien ça ?

@papydall
Dans l'exemple de l'aide de la fonction rnd(), jack à écrit que rnd(3) donne un résultat compris entre 0 et 3. Donc cela sous-entend que 3 est inclu, alors que toi tu dis que c'est exclu. Tu es sûr de ton coup ? Suspect

@minibug
minibug a écrit:
Très heureux de voir que vous être toujours intéressés par le sujet du Rubiks cube.
Très bonne idée à la base! C'est d'autant plus plaisant que ce projet est codé en groupe. cheers
Revenir en haut Aller en bas
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 6 Empty
MessageSujet: Re: Projet d'un Rubik's cube en 3D   Projet d'un Rubik's cube en 3D - Page 6 EmptyJeu 20 Oct 2022 - 15:01

@Silverman
Merci pour ta prompte réponse.
Je n’avais pas vu ta version corrigée du moteur. Je vais essayer de l’intégrer dans ma dernière idée de présentation.
Quant aux couronnes centrales, effectivement, dans un souci de simplification et de clarté, j’ai préféré faire l’impasse dessus.



Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 7017
Age : 74
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Projet d'un Rubik's cube en 3D - Page 6 Empty
MessageSujet: Re: Projet d'un Rubik's cube en 3D   Projet d'un Rubik's cube en 3D - Page 6 EmptyJeu 20 Oct 2022 - 15:37

silverman a écrit:

@papydall
Dans l'exemple de l'aide de la fonction rnd(), jack à écrit que rnd(3) donne un résultat compris entre 0 et 3. Donc cela sous-entend que 3 est inclu, alors que toi tu dis que c'est exclu. Tu es sûr de ton coup ? Suspect

Absolument sûr!
C'est la définition même de la fonction RND() qui fourni une valeur flottante dans l'intervalle semi-fermé (ou semi-ouvert, si tu veux),
ouvert à droite , fermé à gauche [0,1[
Et par conséquent RND(n) fourni un flottant entre 0 (inclu) et n (exclu)

Voici un code qui confirme ce que j'affirme

Code:

dim r,zero,un,deux,trois,i

for i = 1 to 5000
    r = int(rnd(3))
    select r
        case 0 : zero = zero + 1
        case 1 : un = un + 1
        case 2 : deux = deux + 1
        case 3 : trois = trois + 1
    end_select
next i
print " La valeur 0 est apparue " + str$(zero) + " fois"
print " La valeur 1 est apparue " + str$(un) + " fois"
print " La valeur 2 est apparue " + str$(deux) + " fois"
print " La valeur 3 est apparue " + str$(trois) + " fois"
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
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 6 Empty
MessageSujet: Re: Projet d'un Rubik's cube en 3D   Projet d'un Rubik's cube en 3D - Page 6 EmptyJeu 20 Oct 2022 - 17:36

C'est juste papydall, et ça m'arrange ! Le fichier d'aide m'a induit en erreur Sad . Merci à toi Very Happy
Revenir en haut Aller en bas
Contenu sponsorisé





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

Revenir en haut Aller en bas
 
Projet d'un Rubik's cube en 3D
Revenir en haut 
Page 6 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: