Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| Problème mathématique en 3D | |
| | Auteur | Message |
---|
Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Problème mathématique en 3D Jeu 24 Mai 2018 - 1:24 | |
| Bonjour à tous ! Dans un précédant sujet > ici <, vous avez pu tester un dé en 3D réalisé avec 6 objets 3DPLANE. En animation, j’avais choisi d’utiliser la caméra du SCENE3D que j’ai asservi à la position de la souris en x et en y. Mais, comme l’ont fait remarquer Papydall et Minibug, il n’est pas possible de voir la face arrière du dé. Voilà qui m’a donné l’idée de changer d’animation et de faire tourner le dé sur lui-même en fonction de la position x et y de la souris. Aie aie aie ! Simple à dire mais très complexe (pour moi) à programmer ! Ce dé est un objet composé de plusieurs objets et chaque objet a ses propres coordonnées x,y et z. J’ai réussi à faire tourner le dé sur son axe y en fonction de la position x de la souris => Voir source de démonstration ci-dessous.J’ai réussi à faire tourner le dé sur son axe x en fonction de la position y de la souris. Mais je n’arrive pas à "mixer" les 2 rotations en x et en y sans que les faces du dé ne se disloquent. Comment faire ? Voilà donc un défi mathématique pour ceux qui le souhaitent... Le SCENE3D porte le numéro 100 Le dé est composé de 6 objets : l’objet 1 est la face une, l’objet 2 est la face deux etc. L’animation s’opère dans la SUB Move. - Code:
-
' ------------------------------------------------------------------------------ ' PANORAMIC 3D Dice / Dé 3D ' Marc - May 2018 - Panoramic v0.9.28.i18 ' http://panoramic-language.pagesperso-orange.fr/French/index.html ' http://panoramic.top-forum.net ' ------------------------------------------------------------------------------ ' main Init() Skin() Dice() Instructions() CAM_MOVE -15 ON_MOUSE_MOVE 100,Move END ' ------------------------------------------------------------------------------ SUB Init() LABEL Move,Quit DEGREES DIM x,y HEIGHT 0,540 + HEIGHT(0)-HEIGHT_CLIENT(0) WIDTH 0,500 + WIDTH(0)-WIDTH_CLIENT(0) LEFT 0,(screen_x-WIDTH(0))/2 TOP 0,(screen_y-HEIGHT(0))/2 COLOR 0,50,150,50 PICTURE 1 WIDTH 1,200 HEIGHT 1,200 ON_CLOSE 0, Quit END_SUB ' ------------------------------------------------------------------------------ SUB dice() DIM_LOCAL i% SCENE3D 100 HEIGHT 100,500 WIDTH 100,500 COLOR 100,50,150,50 FOR i% = 1 TO 6 3D_PLANE i% 3D_V_TILE i%,1 3D_U_TILE i%,1 NEXT i% 3D_IMAGE_TEXTURE 1,10 3D_X_ROTATE 1,-90 3D_Y_POSITION 1,-5 3D_IMAGE_TEXTURE 2,11 3D_Z_POSITION 2,-5 3D_Y_ROTATE 2,180
3D_IMAGE_TEXTURE 3,12 3D_X_POSITION 3,5 3D_Y_ROTATE 3,90
3D_IMAGE_TEXTURE 4,13 3D_X_POSITION 4,-5 3D_Y_ROTATE 4,-90
3D_IMAGE_TEXTURE 5,14 3D_X_ROTATE 5,0 3D_Z_POSITION 5,5
3D_U_TILE 6,1 3D_IMAGE_TEXTURE 6,15 3D_X_ROTATE 6,90 3D_Y_POSITION 6,5 END_SUB ' ------------------------------------------------------------------------------ SUB Skin() 2D_TARGET_IS 1 face1() face2() face3() face4() face5() face6() END_SUB ' ------------------------------------------------------------------------------ SUB Face1() COLOR 1,0,250,250 2D_CIRCLE 100,100,15 IMAGE 10 2D_IMAGE_COPY 10,0,0,200,200 END_SUB ' ------------------------------------------------------------------------------ SUB Face2() COLOR 1,0,250,0 2D_CIRCLE 40,40,15 2D_CIRCLE 160,160,15 IMAGE 11 2D_IMAGE_COPY 11,0,0,200,200 END_SUB ' ------------------------------------------------------------------------------ SUB Face3() COLOR 1,0,0,250 2D_CIRCLE 40,40,15 2D_CIRCLE 100,100,15 2D_CIRCLE 160,160,15 IMAGE 12 2D_IMAGE_COPY 12,0,0,200,200 END_SUB ' ------------------------------------------------------------------------------ SUB Face4() COLOR 1,250,250,0 2D_CIRCLE 40,40,15 2D_CIRCLE 40,160,15 2D_CIRCLE 160,160,15 2D_CIRCLE 160,40,15 IMAGE 13 2D_IMAGE_COPY 13,0,0,200,200 END_SUB ' ------------------------------------------------------------------------------ SUB Face5() COLOR 1,250,0,0 2D_FILL_COLOR 250,250,250 2D_CIRCLE 40,40,15 2D_CIRCLE 40,160,15 2D_CIRCLE 160,160,15 2D_CIRCLE 160,40,15 2D_CIRCLE 100,100,15 2D_FILL_COLOR 250,0,0 PRINT_TARGET_IS 1 FONT_NAME 1,"Times New Roman" FONT_SIZE 1,7 PRINT_LOCATE 130,185 PRINT "Marc - May 2018" 2D_FILL_COLOR 250,250,250 IMAGE 14 2D_IMAGE_COPY 14,0,0,200,200 END_SUB ' ------------------------------------------------------------------------------ SUB Face6() COLOR 1,250,0,250 2D_CIRCLE 40,40,15 2D_CIRCLE 40,100,15 2D_CIRCLE 40,160,15 2D_CIRCLE 160,160,15 2D_CIRCLE 160,40,15 2D_CIRCLE 160,100,15 IMAGE 15 2D_IMAGE_COPY 15,0,0,200,200 END_SUB ' ------------------------------------------------------------------------------ SUB Instructions() PICTURE 50 HEIGHT 50,40 WIDTH 50,500 TOP 50,500 COLOR 50,50,150,50 2D_TARGET_IS 50 2D_FILL_COLOR 50,150,50 PRINT_TARGET_IS 50 FONT_NAME 50,"Times New Roman" FONT_SIZE 50,18 FONT_ITALIC 50 PRINT_LOCATE 60,10 PRINT "Move the mouse / Bougez la souris" END_SUB ' ------------------------------------------------------------------------------ Move: x = WRAP_VALUE(MOUSE_X_POSITION(100)) ' y = WRAP_VALUE(MOUSE_Y_POSITION(100)*(-1))
' face 1 3D_Z_ROTATE 1,x
' face 2 3D_Y_ROTATE 2,x+180 3D_Z_POSITION 2, 5*(COS(x+180)) 3D_X_POSITION 2, 5*(SIN(x+180))
' face 3 3D_Y_ROTATE 3,x+90 3D_Z_POSITION 3, 5*(COS(x+90)) 3D_X_POSITION 3, 5*(SIN(x+90))
' face 4 3D_Y_ROTATE 4,x -90 3D_Z_POSITION 4, 5*(COS(x-90)) 3D_X_POSITION 4, 5*(SIN(x-90))
' face 5 3D_Y_ROTATE 5,x 3D_Z_POSITION 5, 5*(COS(x)) 3D_X_POSITION 5, 5*(SIN(x))
' face 6 3D_Z_ROTATE 6,x RETURN ' ------------------------------------------------------------------------------ Quit: TERMINATE RETURN
| |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Problème mathématique en 3D Jeu 24 Mai 2018 - 2:59 | |
| Avec un peu de tâtonnement, j’ai réussi à faire tourner le dé : toutes les faces (de 1 à 6) peuvent être vues. Ajout de la ligne 155 - Code:
-
' ------------------------------------------------------------------------------ ' PANORAMIC 3D Dice / Dé 3D ' Marc - May 2018 - Panoramic v0.9.28.i18 ' http://panoramic-language.pagesperso-orange.fr/French/index.html ' http://panoramic.top-forum.net ' ------------------------------------------------------------------------------ ' main Init() Skin() Dice() Instructions() CAM_MOVE -15 ON_MOUSE_MOVE 100,Move END ' ------------------------------------------------------------------------------ SUB Init() LABEL Move,Quit DIM x,y HEIGHT 0,540 + HEIGHT(0)-HEIGHT_CLIENT(0) WIDTH 0,500 + WIDTH(0)-WIDTH_CLIENT(0) LEFT 0,(screen_x-WIDTH(0))/2 TOP 0,(screen_y-HEIGHT(0))/2 COLOR 0,50,150,50 PICTURE 1 WIDTH 1,200 HEIGHT 1,200 ON_CLOSE 0, Quit END_SUB ' ------------------------------------------------------------------------------ SUB dice() DIM_LOCAL i% SCENE3D 100 HEIGHT 100,500 WIDTH 100,500 COLOR 100,50,150,50 FOR i% = 1 TO 6 3D_PLANE i% 3D_V_TILE i%,1 3D_U_TILE i%,1 NEXT i% 3D_Z_POSITION 1,5 3D_IMAGE_TEXTURE 1,10 3D_IMAGE_TEXTURE 2,11 3D_Z_POSITION 2,-5 3D_Y_ROTATE 2,180 3D_IMAGE_TEXTURE 3,12 3D_X_POSITION 3,5 3D_Y_ROTATE 3,90 3D_IMAGE_TEXTURE 4,13 3D_X_POSITION 4,-5 3D_Y_ROTATE 4,-90 3D_IMAGE_TEXTURE 5,14 3D_X_ROTATE 5,90 3D_Y_POSITION 5,5 3D_U_TILE 6,1 3D_IMAGE_TEXTURE 6,15 3D_X_ROTATE 6,-90 3D_Y_POSITION 6,-5 END_SUB ' ------------------------------------------------------------------------------ SUB Skin() 2D_TARGET_IS 1 face1() face2() face3() face4() face5() face6() END_SUB ' ------------------------------------------------------------------------------ SUB Face1() COLOR 1,250,0,0 2D_FILL_COLOR 250,250,250 2D_CIRCLE 40,40,15 2D_CIRCLE 40,160,15 2D_CIRCLE 160,160,15 2D_CIRCLE 160,40,15 2D_CIRCLE 100,100,15 2D_FILL_COLOR 250,0,0 PRINT_TARGET_IS 1 FONT_NAME 1,"Times New Roman" FONT_SIZE 1,7 PRINT_LOCATE 130,185 PRINT "Marc - May 2018" 2D_FILL_COLOR 250,250,250 IMAGE 10 2D_IMAGE_COPY 10,0,0,200,200 END_SUB ' ------------------------------------------------------------------------------ SUB Face2() COLOR 1,0,250,0 2D_CIRCLE 40,40,15 2D_CIRCLE 160,160,15 IMAGE 11 2D_IMAGE_COPY 11,0,0,200,200 END_SUB ' ------------------------------------------------------------------------------ SUB Face3() COLOR 1,0,0,250 2D_CIRCLE 40,40,15 2D_CIRCLE 100,100,15 2D_CIRCLE 160,160,15 IMAGE 12 2D_IMAGE_COPY 12,0,0,200,200 END_SUB ' ------------------------------------------------------------------------------ SUB Face4() COLOR 1,250,250,0 2D_CIRCLE 40,40,15 2D_CIRCLE 40,160,15 2D_CIRCLE 160,160,15 2D_CIRCLE 160,40,15 IMAGE 13 2D_IMAGE_COPY 13,0,0,200,200 END_SUB ' ------------------------------------------------------------------------------ SUB Face5() COLOR 1,0,250,250 2D_CIRCLE 100,100,15 IMAGE 14 2D_IMAGE_COPY 14,0,0,200,200 END_SUB ' ------------------------------------------------------------------------------ SUB Face6() COLOR 1,250,0,250 2D_CIRCLE 40,40,15 2D_CIRCLE 40,100,15 2D_CIRCLE 40,160,15 2D_CIRCLE 160,160,15 2D_CIRCLE 160,40,15 2D_CIRCLE 160,100,15 IMAGE 15 2D_IMAGE_COPY 15,0,0,200,200 END_SUB ' ------------------------------------------------------------------------------ SUB Instructions() PICTURE 50 HEIGHT 50,40 WIDTH 50,500 TOP 50,500 COLOR 50,50,150,50 2D_TARGET_IS 50 2D_FILL_COLOR 50,150,50 PRINT_TARGET_IS 50 FONT_NAME 50,"Times New Roman" FONT_SIZE 50,18 FONT_ITALIC 50 PRINT_LOCATE 60,10 PRINT "Move the mouse / Bougez la souris" END_SUB ' ------------------------------------------------------------------------------ Move: CAM_X_POSITION 50-(MOUSE_X_POSITION(100)/5) CAM_Y_POSITION (MOUSE_Y_POSITION(100)/5)-50 CAM_Z_POSITION (MOUSE_Y_POSITION(100)/5)-50 : ' <------------ Papydall RETURN ' ------------------------------------------------------------------------------ Quit: TERMINATE RETURN
| |
| | | Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Re: Problème mathématique en 3D Jeu 24 Mai 2018 - 18:24 | |
| Bonjour à tous !
Bonjour Papydall ! Merci de ton intervention ! Effectivement, avec ta modification, on peut voir la face arrière, mais tu as utilisé la caméra. Là, dans cette nouvelle variante d’animation 3D, je souhaitais faire tourner le dé sur lui-même. Et c’est là que je bloque mathématiquement pour pouvoir le faire tourner dans tous les sens. En y seul, pas de problème. Voir mon source d’exemple dans mon premier post ci-dessus. En x seul , pas de problème non plus. Mais pour allier les 2 ensemble,x et y, autrement dit pour pouvoir le faire tourner en diagonal, c’est une autre paire de manches ! | |
| | | Contenu sponsorisé
| Sujet: Re: Problème mathématique en 3D | |
| |
| | | | Problème mathématique en 3D | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |