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 |
|
|
| Rotation Algorithm n°3 | |
| | Auteur | Message |
---|
Parpaiun
Nombre de messages : 192 Age : 85 Localisation : HERAULT Date d'inscription : 15/04/2015
| Sujet: Rotation Algorithm n°3 Mar 23 Juin 2015 - 15:22 | |
| Enfin, ça y est ! J'ai terminé mon programme qui m'a demandé 24 heures en tout sur 4 jours de travail sur mon ordinateur personnel ! Lancez le et regardez le défilé automatique de 9 images toutes différentes jusqu'à la dernière, ceci pour vous épargner d'éreintantes manipulations ! - Code:
-
REM =================================================================== REM REM ROTATION ALGORITHM REM REM =================================================================== REM Auteur: Parpaiun REM Date-version: 23/06/2015 REM =================================================================== LABEL retour DIM a,cx,cy,f,i,j,l,rn,sw,u,x,y,z DIM c(20),e(30,2),mx(24),my(24),n(40) f=3 :' Ecart entre droites l=3 a=0.6 FONT_SIZE 0,14
REM =================================================================== ' Paramètres de POLY ' p1 = Nombre de sommets du polygone ' p2 = Inclinaison du 1er côté en degrés ' p3 = Longueur de chaque côté ' p4 = Coordonnée en x du premier sommet ' p5 = Coordonnée en y du premier sommet REM =================================================================== height 0,980 : width 0,980 cx=480 : cy=475 REm Pour centrer exactement le polygone et préciser son centre ' 2D_CIRCLE cx,cy,420 ' 2D_CIRCLE cx,cy,3 ' 2D_line cx,50,cx,500 REM =================================================================== ' ICI COMMENCE LE SPECTACLE !
For sw= 1 to 9 SELECT sw CASE 1 POLY(3,240,726,480,56) MID(1,2) MID(2,3) MID(3,1) CENTRE() ROTATE6(1,4,7,1,6,7) ROTATE6(2,5,7,2,4,7) ROTATE6(3,5,7,3,6,7) JOIN12(1,7,4,7,2,7,5,7,3,7,6,7) Print_locate 20,50: Print " IMAGE n°1 SUR 9" ' CASE 2 POLY(3,240,726,480,56) MID(1,2) MID(2,3) MID(3,1) CENTRE() ROTATE3(1,4,6) ROTATE3(4,6,5) ROTATE3(4,2,5) ROTATE3(6,5,3) JOIN6(4,6,5,4,6,5) Print_locate 20,50: Print " IMAGE n°2 SUR 9" ' CASE 3 POLY(4,225,600,480,56) MID(1,2) MID(2,3) MID(3,4) MID(4,1) ROTATE3(2,5,6) ROTATE3(4,7,8) ROTATE3(1,8,5) ROTATE3(3,6,7) ROTATE3(5,6,7) ROTATE3(5,7,8) JOIN10(5,6,7,6,7,8,5,8,5,7) Print_locate 20,50: Print " IMAGE n°3 SUR 9" ' CASE 4 POLY(4,225,600,480,56) MID(1,2) MID(2,3) MID(3,4) MID(4,1) MID(1,3) ROTATE3(1,5,9) ROTATE3(1,8,9) ROTATE3(2,5,9) ROTATE3(2,6,9) ROTATE3(3,6,9) ROTATE3(3,7,9) ROTATE3(4,7,9) ROTATE3(4,8,9) JOIN12(1,9,2,9,3,9,4,9,5,7,6,8) Print_locate 20,50: print " IMAGE n°4 SUR 9" ' CASE 5 POLY(4,225,600,480,56) MID(2,4) JOIN4(1,3,2,4) ROTATE6(5,1,2,5,3,2) ROTATE6(5,3,4,5,1,4) Print_locate 20,50: print " IMAGE n°5 SUR 9" ' CASE 6 POLY(5,216,530,480,56) MID(1,2) MID(2,3) MID(3,4) MID(4,5) MID(5,1) CENTRE() ROTATE3(11,1,6) ROTATE3(11,1,10) ROTATE3(11,2,6) ROTATE3(11,2,7) ROTATE3(11,3,7) ROTATE3(11,3,8) ROTATE3(11,4,8) ROTATE3(11,4,9) ROTATE3(11,5,9) ROTATE3(11,5,10) JOIN10(6,11,7,11,8,11,9,11,10,11) JOIN10(11,1,11,2,11,3,11,4,11,5) Print_locate 20,50: print " IMAGE n°6 SUR 9" ' CASE 7 POLY(9,200,300,480,30) MID(5,6) JOIN6(4,1,7,1,10,1) ROTATE4(1,10,5,4) ROTATE4(1,10,6,7) ROTATE4(1,4,3,2) ROTATE4(1,7,8,9) Print_locate 20,50: print " IMAGE n°7 SUR 9" ' CASE 8 POLY(12,195,230,480,30) JOIN4(1,7,4,10) MID(1,7) ROTATE5(1,13,4,3,2) ROTATE5(7,13,4,5,6) ROTATE5(1,13,10,11,12) ROTATE5(7,13,10,9,8) Print_locate 20,50: print " IMAGE n°8 SUR 9" ' CASE 9 POLY(6,210,380,480,80) ROTATE6(1,2,3,4,5,6) ROTATE6(1,6,5,4,3,2) POLY(6,210,450,480,25) POLY(6,210,430,480,42) POLY(6,210,410,480,59) Print_locate 20,50: print " IMAGE n°9 SUR 9" END_SELECT
if scancode=27 then EXIT_FOR PAUSE 3000 CLS NEXT sw
END
REM ===================================================================
SUB POLY(p1,p2,p3,p4,p5) dim_local b,PI,RAD PI=acos(-1): rad=PI/180 : p2=p2*RAD x=p4 : y=p5 2D_POLY_FROM x,y :' Coordonnées du premier sommet i=0: u=0 u=u+1: mx(u)=x: my(u)=y i=i+1: c(i)=u :' Numéro du premier sommet b=2*PI/p1 for i=2 to p1 x=x+p3*COS(p2): y=y+p3*SIN(p2)*-1 2D_POLY_TO x,y u=u+1: mx(u)=x: my(u)=y c(i)=u if i<p1+1 then p2=p2+b next i 2D_POLY_TO mx(1),my(1)
END_SUB rem ============================ ' SUB MID(m1,m2) u=u+1 mx(u)=(mx(m1)+mx(m2))/2 my(u)=(my(m1)+my(m2))/2 ' 2D_CIRCLE mx(u),my(u),3 i=i+1: c(i)=u END_SUB rem ============================
SUB CENTRE() 2D_CIRCLE cx,cy,2 u=u+1: mx(u)=cx: my(u)=cy i=i+1: c(i)=u END_SUB rem ============================
SUB ROTATE3(r1,r2,r3) for j=1 to 3 SELECT j CASE 1 z=r1 CASE 2 z=r2 CASE 3 z=r3 END_SELECT c(j)=z next j ROTATE_ALL(3)
END_SUB rem ==============================
SUB ROTATE4(r1,r2,r3,r4) for j=1 to 4 SELECT j CASE 1 z=r1 CASE 2 z=r2 CASE 3 z=r3 CASE 4 z=r4 END_SELECT c(j)=z next j ROTATE_ALL(4)
END_SUB rem =============================
SUB ROTATE5(r1,r2,r3,r4,r5) for j=1 to 5 SELECT j CASE 1 z=r1 CASE 2 z=r2 CASE 3 z=r3 CASE 4 z=r4 CASE 5 z=r5 END_SELECT c(j)=z next j ROTATE_ALL(5)
END_SUB rem =============================
SUB ROTATE6(r1,r2,r3,r4,r5,r6) for j=1 to 6 SELECT j CASE 1 z=r1 CASE 2 z=r2 CASE 3 z=r3 CASE 4 z=r4 CASE 5 z=r5 CASE 6 z=r6 END_SELECT c(j)=z next j ROTATE_ALL(6) END_SUB rem ============================
SUB ROTATE_ALL(rn) DIM_LOCAL s$,x1,x2 for j=1 to rn e(j,1)=mx(c(j)) e(j,2)=my(c(j)) next j e(j,1)=e(1,1) e(j,2)=e(1,2) ' retour: for j=1 to rn x1=(e(j+1,1)-e(j,1))*(e(j+1,1)-e(j,1)) x2=(e(j+1,2)-e(j,2))*(e(j+1,2)-e(j,2)) n(j)=(f*l)/sqr(x1+x2) if n(j)>a then EXIT_SUB next j ' for j=1 to rn e(j,1)=e(j,1)+n(j)*(e(j+1,1)-e(j,1)) e(j,2)=e(j,2)+n(j)*(e(j+1,2)-e(j,2)) if j=1 2D_POLY_FROM e(j,1),e(j,2) Else 2D_POLY_TO e(j,1),e(j,2) END_IF next j e(j,1)=e(1,1) e(j,2)=e(1,2) 2D_POLY_TO e(j,1),e(j,2) s$=inkey$ : if s$<>"" then EXIT_PROC GOTO retour END_SUB rem ==================================
SUB JOIN4(j1,j2,j3,j4) 2D_LINE mx(j1),my(j1),mx(j2),my(j2) 2D_LINE mx(j3),my(j3),mx(j4),my(j4) END_SUB rem ==================================
SUB JOIN6(j1,j2,j3,j4,j5,j6) 2D_LINE mx(j1),my(j1),mx(j2),my(j2) 2D_LINE mx(j3),my(j3),mx(j4),my(j4) 2D_LINE mx(j5),my(j5),mx(j6),my(j6) END_SUB rem ==================================
SUB JOIN10(j1,j2,j3,j4,j5,j6,j7,j8,j9,j10) 2D_LINE mx(j1),my(j1),mx(j2),my(j2) 2D_LINE mx(j3),my(j3),mx(j4),my(j4) 2D_LINE mx(j5),my(j5),mx(j6),my(j6) 2D_LINE mx(j7),my(j7),mx(j8),my(j8) 2D_LINE mx(j9),my(j9),mx(j10),my(j10) END_SUB rem ==================================
SUB JOIN12(j1,j2,j3,j4,j5,j6,j7,j8,j9,j10,j11,j12) 2D_LINE mx(j1),my(j1),mx(j2),my(j2) 2D_LINE mx(j3),my(j3),mx(j4),my(j4) 2D_LINE mx(j5),my(j5),mx(j6),my(j6) 2D_LINE mx(j7),my(j7),mx(j8),my(j8) 2D_LINE mx(j9),my(j9),mx(j10),my(j10) 2D_LINE mx(j11),my(j11),mx(j12),my(j12) END_SUB Je rends hommage à papydall pour avoir fait son programme "Les Insectes Amoureux" par formules mathématiques. Le fait de construire mes propres images par formules mathématiques tient de la gageure tant ces formules deviennent compliquées. Mon programme a relevé le défi par la simplicité de ses expressions semi-mathématiques. Le challenge par les panoramiciens est désormais ouvert en matière de modifications de mon programme et de nouvelles images au delà de 9. A Jicehel de se lancer patiemment dans les colorisations. Je l'espère façon VASARELY qui est incontournable en nuances de couleurs savamment réparties sur ses motifs géométriques... C'est un boulot de titan ! A Papydall de prouver ce qu'il avait dit: "Je peux simplifier les ROTATE en une seule ligne" ... Allez-y, braves Panoramiciens et bon courage ! | |
| | | sergeauze
Nombre de messages : 391 Age : 72 Localisation : Hautes Alpes France Date d'inscription : 09/01/2010
| Sujet: Re: Rotation Algorithm n°3 Mar 23 Juin 2015 - 16:05 | |
| Salut j'aime bien le rendu | |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Rotation Algorithm n°3 Mar 23 Juin 2015 - 16:47 | |
| Joli ! Il y a une petite erreur ligne 309... | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Rotation Algorithm n°3 Mar 23 Juin 2015 - 17:48 | |
| Un grand bravo Parpaiun ! Tu as relevé ton propre défi. Le programme fonctionne et ça c’est l’essentiel. La programmation consiste avant tout à trouver des solutions à des problèmes qu’on se pose. L’optimisation et l’amélioration viennent en second lieu. L’erreur signalée par Nardo26 Ligne 309 - Code:
-
s$=inkey$ : if s$<>"" then EXIT_PROC Bien sûr c’est EXIT_SUB au lieu de EXIT_PROC. - Parpaiun a écrit:
- A Papydall de prouver ce qu'il avait dit: "Je peux simplifier les ROTATE en une seule ligne" ...
C’est chose faite. Regarde aussi SUB ROTATE_ALL pour se passer du GOTO Retour, remplacé par WHILE / END_WHILE. A tout moment, vous pouvez arrêter le programme par un CLICK ou par l'appui sur une touche du clavier. J’ai aussi arrangé le code à ma façon et voici ce que ça donne - Code:
-
REM ============================================================================ REM REM ROTATION ALGORITHM REM REM ============================================================================ REM Auteur: Parpaiun REM Date-version: 23/06/2015 REM ============================================================================ Init() Spectacle()
end rem ============================================================================ SUB Init() DIM a,cx,cy,f,i,j,l,rn,sw,u,x,y,z DIM c(20),e(30,2),mx(24),my(24),n(40) f = 3 :' Ecart entre droites l = 3 : a = 0.6 FONT_SIZE 0,14 : height 0,980 : width 0,980 : cx = 480 : cy = 475 caption 0,"<CLICK> pour arrêter" ' Pour centrer exactement le polygone et préciser son centre ' 2D_CIRCLE cx,cy,420 ' 2D_CIRCLE cx,cy,3 ' 2D_line cx,50,cx,500
END_SUB REM ============================================================================ ' ICI COMMENCE LE SPECTACLE ! SUB Spectacle() For sw= 1 to 9 cls SELECT sw CASE 1 POLY(3,240,726,480,56) MID(1,2) : MID(2,3) : MID(3,1) : CENTRE() ROTATE6(1,4,7,1,6,7) : ROTATE6(2,5,7,2,4,7) ROTATE6(3,5,7,3,6,7) :JOIN12(1,7,4,7,2,7,5,7,3,7,6,7) Print_locate 20,50: Print " IMAGE n°1 SUR 9" ' CASE 2 POLY(3,240,726,480,56) MID(1,2) : MID(2,3) : MID(3,1) : CENTRE() ROTATE3(1,4,6) : ROTATE3(4,6,5) : ROTATE3(4,2,5) ROTATE3(6,5,3) : JOIN6(4,6,5,4,6,5) Print_locate 20,50: Print " IMAGE n°2 SUR 9" ' CASE 3 POLY(4,225,600,480,56) MID(1,2) : MID(2,3) : MID(3,4) : MID(4,1) ROTATE3(2,5,6) : ROTATE3(4,7,8) : ROTATE3(1,8,5) ROTATE3(3,6,7) : ROTATE3(5,6,7) : ROTATE3(5,7,8) JOIN10(5,6,7,6,7,8,5,8,5,7) Print_locate 20,50: Print " IMAGE n°3 SUR 9" ' CASE 4 POLY(4,225,600,480,56) MID(1,2) : MID(2,3) : MID(3,4) : MID(4,1) : MID(1,3) ROTATE3(1,5,9) : ROTATE3(1,8,9) : ROTATE3(2,5,9) ROTATE3(2,6,9) : ROTATE3(3,6,9) : ROTATE3(3,7,9) ROTATE3(4,7,9) : ROTATE3(4,8,9) : JOIN12(1,9,2,9,3,9,4,9,5,7,6,8) Print_locate 20,50: print " IMAGE n°4 SUR 9" ' CASE 5 POLY(4,225,600,480,56) MID(2,4) : JOIN4(1,3,2,4) : ROTATE6(5,1,2,5,3,2) :ROTATE6(5,3,4,5,1,4) Print_locate 20,50: print " IMAGE n°5 SUR 9" ' CASE 6 POLY(5,216,530,480,56) MID(1,2) : MID(2,3) : MID(3,4) : MID(4,5) : MID(5,1) : CENTRE() ROTATE3(11,1,6) : ROTATE3(11,1,10) : ROTATE3(11,2,6) : ROTATE3(11,2,7) ROTATE3(11,3,7) : ROTATE3(11,3,8) : ROTATE3(11,4,8) : ROTATE3(11,4,9) ROTATE3(11,5,9) : ROTATE3(11,5,10) JOIN10(6,11,7,11,8,11,9,11,10,11) : JOIN10(11,1,11,2,11,3,11,4,11,5) Print_locate 20,50: print " IMAGE n°6 SUR 9" ' CASE 7 POLY(9,200,300,480,30) MID(5,6) : JOIN6(4,1,7,1,10,1) ROTATE4(1,10,5,4) : ROTATE4(1,10,6,7) : ROTATE4(1,4,3,2) : ROTATE4(1,7,8,9) Print_locate 20,50: print " IMAGE n°7 SUR 9" ' CASE 8 POLY(12,195,230,480,30) JOIN4(1,7,4,10) : MID(1,7) : ROTATE5(1,13,4,3,2) : ROTATE5(7,13,4,5,6) ROTATE5(1,13,10,11,12) : ROTATE5(7,13,10,9,8) Print_locate 20,50: print " IMAGE n°8 SUR 9" ' CASE 9 POLY(6,210,380,480,80) : ROTATE6(1,2,3,4,5,6) : ROTATE6(1,6,5,4,3,2) POLY(6,210,450,480,25) : POLY(6,210,430,480,42) : POLY(6,210,410,480,59) Print_locate 20,50: print " IMAGE n°9 SUR 9" END_SELECT
if scancode <> 0 then fin() PAUSE 3000 NEXT sw Print_locate 20,50: print "!!! LE SPECTACLE EST TERMINE !!!" caption 0,"Terminé" END_SUB REM ============================================================================ ' Paramètres de POLY ' p1 = Nombre de sommets du polygone ' p2 = Inclinaison du 1er côté en degrés ' p3 = Longueur de chaque côté ' p4 = Coordonnée en x du premier sommet ' p5 = Coordonnée en y du premier sommet SUB POLY(p1,p2,p3,p4,p5) dim_local b,PI,RAD PI=acos(-1): rad=PI/180 : p2=p2*RAD x=p4 : y=p5 2D_POLY_FROM x,y :' Coordonnées du premier sommet i=0: u=0 : u=u+1: mx(u)=x: my(u)=y i=i+1: c(i)=u :' Numéro du premier sommet b=2*PI/p1 for i=2 to p1 x=x+p3*COS(p2): y=y+p3*SIN(p2)*-1 2D_POLY_TO x,y u=u+1: mx(u)=x: my(u)=y : c(i)=u if i<p1+1 then p2=p2+b next i 2D_POLY_TO mx(1),my(1) END_SUB rem ============================================================================ SUB MID(m1,m2) u=u+1 mx(u)=(mx(m1)+mx(m2))/2 : my(u)=(my(m1)+my(m2))/2 ' 2D_CIRCLE mx(u),my(u),3 i=i+1: c(i)=u END_SUB rem ============================================================================ SUB CENTRE() 2D_CIRCLE cx,cy,2 u=u+1: mx(u)=cx: my(u)=cy : i=i+1: c(i)=u END_SUB rem ============================================================================ SUB ROTATE3(r1,r2,r3) c(1) = r1 : c(2) = r2 : c(3) = r3 ROTATE_ALL(3) END_SUB rem ============================================================================ SUB ROTATE4(r1,r2,r3,r4) c(1) = r1 : c(2) = r2 : c(3) = r3 : c(4) = r4 ROTATE_ALL(4) END_SUB rem ============================================================================ SUB ROTATE5(r1,r2,r3,r4,r5) c(1) = r1 : c(2) = r2 : c(3) = r3 : c(4) = r4 : c(5) = r5 ROTATE_ALL(5) END_SUB rem ============================================================================ SUB ROTATE6(r1,r2,r3,r4,r5,r6) c(1) = r1 : c(2) = r2 : c(3) = r3 : c(4) = r4 : c(5) = r5 : c(6) = r6 ROTATE_ALL(6) END_SUB rem ============================================================================ SUB ROTATE_ALL(rn) DIM_LOCAL s$,x1,x2 for j=1 to rn e(j,1)=mx(c(j)) e(j,2)=my(c(j)) next j e(j,1)=e(1,1) e(j,2)=e(1,2)
while 1 = 1 : ' Toujours vrai, donc une boucle infinie ! for j=1 to rn x1=(e(j+1,1)-e(j,1))*(e(j+1,1)-e(j,1)) x2=(e(j+1,2)-e(j,2))*(e(j+1,2)-e(j,2)) n(j)=(f*l)/sqr(x1+x2) if n(j)>a then EXIT_SUB : ' On brise ici la boucle infinie next j ' for j=1 to rn e(j,1)=e(j,1)+n(j)*(e(j+1,1)-e(j,1)) e(j,2)=e(j,2)+n(j)*(e(j+1,2)-e(j,2)) if j=1 2D_POLY_FROM e(j,1),e(j,2) Else 2D_POLY_TO e(j,1),e(j,2) END_IF next j e(j,1)=e(1,1) e(j,2)=e(1,2) 2D_POLY_TO e(j,1),e(j,2) END_WHILE END_SUB rem ============================================================================ SUB JOIN4(j1,j2,j3,j4) 2D_LINE mx(j1),my(j1),mx(j2),my(j2) : 2D_LINE mx(j3),my(j3),mx(j4),my(j4) END_SUB rem ============================================================================ SUB JOIN6(j1,j2,j3,j4,j5,j6) 2D_LINE mx(j1),my(j1),mx(j2),my(j2) 2D_LINE mx(j3),my(j3),mx(j4),my(j4) 2D_LINE mx(j5),my(j5),mx(j6),my(j6) END_SUB rem ============================================================================ SUB JOIN10(j1,j2,j3,j4,j5,j6,j7,j8,j9,j10) 2D_LINE mx(j1),my(j1),mx(j2),my(j2) 2D_LINE mx(j3),my(j3),mx(j4),my(j4) 2D_LINE mx(j5),my(j5),mx(j6),my(j6) 2D_LINE mx(j7),my(j7),mx(j8),my(j8) 2D_LINE mx(j9),my(j9),mx(j10),my(j10) END_SUB rem ============================================================================ SUB JOIN12(j1,j2,j3,j4,j5,j6,j7,j8,j9,j10,j11,j12) 2D_LINE mx(j1),my(j1),mx(j2),my(j2) : 2D_LINE mx(j3),my(j3),mx(j4),my(j4) 2D_LINE mx(j5),my(j5),mx(j6),my(j6) : 2D_LINE mx(j7),my(j7),mx(j8),my(j8) 2D_LINE mx(j9),my(j9),mx(j10),my(j10) : 2D_LINE mx(j11),my(j11),mx(j12),my(j12) END_SUB rem ============================================================================ SUB Fin() caption 0, "Programme arrêté par l'utilisateur" end END_SUB rem ============================================================================
Pour la couleur, je passe la parole au coloriste du forum (il se reconnaitra) . Personnellement je ne cherche pas à être meilleur que les autres. Il me suffit d'être meilleur que moi-même! | |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Rotation Algorithm n°3 Mar 23 Juin 2015 - 18:15 | |
| Tu peux aussi simplifier est n'avoir qu'une seule procédure ROTATE(N,r1,r2,r3,r4,...,rN).. idem pour la procédure JOIN | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Rotation Algorithm n°3 Mar 23 Juin 2015 - 18:50 | |
| Très joli résultat Parpaiun, bravo. | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Rotation Algorithm n°3 Mar 23 Juin 2015 - 22:38 | |
| OK, je n'ai pas trop d'ide pour la colorisation car ce n'est pas très simple. J'ai fais une version, si ça vous plait tant mieux, sinon, je vous laisse adapter si vous pouvez l'améliorer pour que ce soit encore plus joli. - Code:
-
REM ============================================================================ REM REM ROTATION ALGORITHM REM REM ============================================================================ REM Auteur: Parpaiun REM Date-version: 23/06/2015 REM ============================================================================ Init() Spectacle()
end rem ============================================================================ SUB Init() DIM a,cx,cy,f,i,j,l,rn,sw,u,x,y,z DIM c(20),e(30,2),mx(24),my(24),n(40), a$ f = 3 :' Ecart entre droites l = 3 : a = 0.6 FONT_SIZE 0,14 : height 0,980 : width 0,980 : cx = 480 : cy = 400 caption 0,"<CLICK> pour arrêter"
END_SUB REM ============================================================================ ' ICI COMMENCE LE SPECTACLE ! SUB Spectacle() For sw= 1 to 9 cls SELECT sw CASE 1 POLY(3,240,726,480,56) MID(1,2) : MID(2,3) : MID(3,1) : CENTRE() ROTATE6(1,4,7,1,6,7) : ROTATE6(2,5,7,2,4,7) ROTATE6(3,5,7,3,6,7) :JOIN12(1,7,4,7,2,7,5,7,3,7,6,7) Print_locate 20,50: Print " IMAGE n°1 SUR 9" ' CASE 2 POLY(3,240,726,480,56) MID(1,2) : MID(2,3) : MID(3,1) : CENTRE() ROTATE3(1,4,6) : ROTATE3(4,6,5) : ROTATE3(4,2,5) ROTATE3(6,5,3) : JOIN6(4,6,5,4,6,5) Print_locate 20,50: Print " IMAGE n°2 SUR 9" ' CASE 3 POLY(4,225,600,480,56) MID(1,2) : MID(2,3) : MID(3,4) : MID(4,1) ROTATE3(2,5,6) : ROTATE3(4,7,8) : ROTATE3(1,8,5) ROTATE3(3,6,7) : ROTATE3(5,6,7) : ROTATE3(5,7,8) JOIN10(5,6,7,6,7,8,5,8,5,7) Print_locate 20,50: Print " IMAGE n°3 SUR 9" ' CASE 4 POLY(4,225,600,480,56) MID(1,2) : MID(2,3) : MID(3,4) : MID(4,1) : MID(1,3) ROTATE3(1,5,9) : ROTATE3(1,8,9) : ROTATE3(2,5,9) ROTATE3(2,6,9) : ROTATE3(3,6,9) : ROTATE3(3,7,9) ROTATE3(4,7,9) : ROTATE3(4,8,9) : JOIN12(1,9,2,9,3,9,4,9,5,7,6,8) Print_locate 20,50: print " IMAGE n°4 SUR 9" ' CASE 5 POLY(4,225,600,480,56) MID(2,4) : JOIN4(1,3,2,4) : ROTATE6(5,1,2,5,3,2) :ROTATE6(5,3,4,5,1,4) Print_locate 20,50: print " IMAGE n°5 SUR 9" ' CASE 6 POLY(5,216,530,480,56) MID(1,2) : MID(2,3) : MID(3,4) : MID(4,5) : MID(5,1) : CENTRE() ROTATE3(11,1,6) : ROTATE3(11,1,10) : ROTATE3(11,2,6) : ROTATE3(11,2,7) ROTATE3(11,3,7) : ROTATE3(11,3,8) : ROTATE3(11,4,8) : ROTATE3(11,4,9) ROTATE3(11,5,9) : ROTATE3(11,5,10) JOIN10(6,11,7,11,8,11,9,11,10,11) : JOIN10(11,1,11,2,11,3,11,4,11,5) Print_locate 20,50: print " IMAGE n°6 SUR 9" ' CASE 7 POLY(9,200,300,480,30) MID(5,6) : JOIN6(4,1,7,1,10,1) ROTATE4(1,10,5,4) : ROTATE4(1,10,6,7) : ROTATE4(1,4,3,2) : ROTATE4(1,7,8,9) Print_locate 20,50: print " IMAGE n°7 SUR 9" ' CASE 8 POLY(12,195,230,480,30) JOIN4(1,7,4,10) : MID(1,7) : ROTATE5(1,13,4,3,2) : ROTATE5(7,13,4,5,6) ROTATE5(1,13,10,11,12) : ROTATE5(7,13,10,9,8) Print_locate 20,50: print " IMAGE n°8 SUR 9" ' CASE 9 2D_pen_width 3 POLY(6,210,380,480,80) : ROTATE6(1,2,3,4,5,6) : ROTATE6(1,6,5,4,3,2) POLY(6,210,450,480,25) : POLY(6,210,430,480,42) : POLY(6,210,410,480,59) Print_locate 20,50: print " IMAGE n°9 SUR 9" END_SELECT
a$ = inkey$ if a$ <> "" then fin() PAUSE 3000 NEXT sw Print_locate 20,50: print "!!! LE SPECTACLE EST TERMINE !!!" caption 0,"Terminé" END_SUB REM ============================================================================ ' Paramètres de POLY ' p1 = Nombre de sommets du polygone ' p2 = Inclinaison du 1er côté en degrés ' p3 = Longueur de chaque côté ' p4 = Coordonnée en x du premier sommet ' p5 = Coordonnée en y du premier sommet SUB POLY(p1,p2,p3,p4,p5) dim_local b,PI,RAD PI=acos(-1): rad=PI/180 : p2=p2*RAD x=p4 : y=p5 2D_PEN_COLOR abs(x-cx)/3,abs(y-cy)/3,(abs(x-cx)+abs(y-cy))/5 :2D_POLY_FROM x,y :' Coordonnées du premier sommet i=0: u=0 : u=u+1: mx(u)=x: my(u)=y i=i+1: c(i)=u :' Numéro du premier sommet b=2*PI/p1 for i=2 to p1 x=x+p3*COS(p2): y=y+p3*SIN(p2)*-1 2D_PEN_COLOR abs(x-cx)/3,abs(y-cy)/3,(abs(x-cx)+abs(y-cy))/5 : 2D_POLY_TO x,y u=u+1: mx(u)=x: my(u)=y : c(i)=u if i<p1+1 then p2=p2+b next i 2D_POLY_TO mx(1),my(1) END_SUB rem ============================================================================ SUB MID(m1,m2) u=u+1 mx(u)=(mx(m1)+mx(m2))/2 : my(u)=(my(m1)+my(m2))/2 i=i+1: c(i)=u END_SUB rem ============================================================================ SUB CENTRE() 2D_CIRCLE cx,cy,2 u=u+1: mx(u)=cx: my(u)=cy : i=i+1: c(i)=u END_SUB rem ============================================================================ SUB ROTATE3(r1,r2,r3) c(1) = r1 : c(2) = r2 : c(3) = r3 ROTATE_ALL(3) END_SUB rem ============================================================================ SUB ROTATE4(r1,r2,r3,r4) c(1) = r1 : c(2) = r2 : c(3) = r3 : c(4) = r4 ROTATE_ALL(4) END_SUB rem ============================================================================ SUB ROTATE5(r1,r2,r3,r4,r5) c(1) = r1 : c(2) = r2 : c(3) = r3 : c(4) = r4 : c(5) = r5 ROTATE_ALL(5) END_SUB rem ============================================================================ SUB ROTATE6(r1,r2,r3,r4,r5,r6) c(1) = r1 : c(2) = r2 : c(3) = r3 : c(4) = r4 : c(5) = r5 : c(6) = r6 ROTATE_ALL(6) END_SUB rem ============================================================================ SUB ROTATE_ALL(rn) DIM_LOCAL s$,x1,x2 for j=1 to rn e(j,1)=mx(c(j)) e(j,2)=my(c(j)) next j e(j,1)=e(1,1) e(j,2)=e(1,2)
while 1 = 1 : ' Toujours vrai, donc une boucle infinie ! for j=1 to rn x1=(e(j+1,1)-e(j,1))*(e(j+1,1)-e(j,1)) x2=(e(j+1,2)-e(j,2))*(e(j+1,2)-e(j,2)) n(j)=(f*l)/sqr(x1+x2) if n(j)>a then EXIT_SUB : ' On brise ici la boucle infinie next j ' for j=1 to rn e(j,1)=e(j,1)+n(j)*(e(j+1,1)-e(j,1)) e(j,2)=e(j,2)+n(j)*(e(j+1,2)-e(j,2)) 2D_PEN_COLOR abs(e(j,1) - cx)/3,abs(e(j,2)-cy)/3,(abs(e(j,1) - cx)+abs(e(j,2) - cy))/5 if j=1 2D_POLY_FROM e(j,1),e(j,2) Else 2D_POLY_TO e(j,1),e(j,2) END_IF next j e(j,1)=e(1,1) e(j,2)=e(1,2) 2D_PEN_COLOR abs(e(j,1) - cx)/3,abs(e(j,2)-cy)/3,(abs(e(j,1) - cx)+abs(e(j,2) - cy))/5 2D_POLY_TO e(j,1),e(j,2) END_WHILE END_SUB rem ============================================================================ SUB JOIN4(j1,j2,j3,j4) 2D_LINE mx(j1),my(j1),mx(j2),my(j2) : 2D_LINE mx(j3),my(j3),mx(j4),my(j4) END_SUB rem ============================================================================ SUB JOIN6(j1,j2,j3,j4,j5,j6) 2D_LINE mx(j1),my(j1),mx(j2),my(j2) 2D_LINE mx(j3),my(j3),mx(j4),my(j4) 2D_LINE mx(j5),my(j5),mx(j6),my(j6) END_SUB rem ============================================================================ SUB JOIN10(j1,j2,j3,j4,j5,j6,j7,j8,j9,j10) 2D_LINE mx(j1),my(j1),mx(j2),my(j2) 2D_LINE mx(j3),my(j3),mx(j4),my(j4) 2D_LINE mx(j5),my(j5),mx(j6),my(j6) 2D_LINE mx(j7),my(j7),mx(j8),my(j8) 2D_LINE mx(j9),my(j9),mx(j10),my(j10) END_SUB rem ============================================================================ SUB JOIN12(j1,j2,j3,j4,j5,j6,j7,j8,j9,j10,j11,j12) 2D_LINE mx(j1),my(j1),mx(j2),my(j2) : 2D_LINE mx(j3),my(j3),mx(j4),my(j4) 2D_LINE mx(j5),my(j5),mx(j6),my(j6) : 2D_LINE mx(j7),my(j7),mx(j8),my(j8) 2D_LINE mx(j9),my(j9),mx(j10),my(j10) : 2D_LINE mx(j11),my(j11),mx(j12),my(j12) END_SUB rem ============================================================================ SUB Fin() caption 0, "Programme arrêté par l'utilisateur" end END_SUB rem ============================================================================ | |
| | | Parpaiun
Nombre de messages : 192 Age : 85 Localisation : HERAULT Date d'inscription : 15/04/2015
| Sujet: Revue du sujet Mer 24 Juin 2015 - 1:09 | |
| Alors Nardo26, Jean-Claude, Jicehel et Papydall, vous avez pu voir comment je m'en suis tiré ! Je vous révèle que le programme original, écrit en HP 3000 Basic par l'américain Samuel Bates, a été trouvé par mes soins dans le magazine BYTE de janvier 1981, chapître "Programming quickies" sous le titre de "Rotation Algorithm". Toute l'écriture de ce programme est très différente de ma traduction en GFA Basic comme en Panoramic. Il m'a fallu un effort pour arriver à comprendre les mécanismes de ce programme original, donnant exactement les mêmes images. Quant à la traduction de GFA Basic en Panoramic, je n'ai pas eu le temps de chercher à réduire le nombre de lignes comme l'a fait Papydall, merci à lui ! Au moins, il sait peut-être que je l'ai battu grâce à mon programme en GFA Basic dans lequel j'ai utilisé les instructions ParamArray et Ubound comme dans les exemples suivants: Procedure ROTATE(ParamArray c()), For j = 1 to UBound(c()) , etc... de même que pour JOIN(ParamArray c()) et For j = 1 to UBound(c()). Ce serait super si Jack parvenait à exploiter ces précieuses fonctions dans Panoramic ! Jicehel, ta tentative de coloration des lignes sur les images est vraiment trop pauvre. Il fallait remplir les vides blancs avec des nuances de couleur façon VASARELY sur une image de ton choix, si tu sais bien ce qu'il avait fait. Ce serait absolument magnifique à voir, je t'assure. Mais cette méthode prendrait un temps fou à choisir les nuances. Utilise pour cela un logiciel genre "La boîte à couleurs" ou autre. D'accord ? Voilà, j'en ai assez dit. Merci à vous braves panoramiciens et bonne nuit ! | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Rotation Algorithm n°3 Mer 24 Juin 2015 - 7:01 | |
| Merci pour ta proposition Parpaiun mais je ne relève pas le défit car je n'en ai absolument pas le temps. Si tu veux essayer, fais toi plaisir... J'ai hésité à proposer ma tentative de colorisation car elle ne me plait pas plus que ça non plus, mais je n'ai pas d'idée. Tu pourras proposer toi même ton amélioration pour que ce soit encore plus joli Moi là, je manque d'idées. | |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Rotation Algorithm n°3 Mer 24 Juin 2015 - 8:43 | |
| Nickel Parpaiun ! Je te propose cette version qui te simplifie les procédures JOIN et ROTATE Mais si tu veux d'abord chercher par toi même, la soluce à toi de voir Bref ma proposition : - simplification:
- Code:
-
REM ============================================================================ REM REM ROTATION ALGORITHM REM REM ============================================================================ REM Auteur: Parpaiun REM Date-version: 23/06/2015 REM ============================================================================ Init() Spectacle()
end rem ============================================================================ SUB Init() DIM a,cx,cy,f,i,j,l,rn,sw,u,x,y,z DIM c(20),e(30,2),mx(24),my(24),n(40) f = 3 :' Ecart entre droites l = 3 : a = 0.6 FONT_SIZE 0,14 : height 0,980 : width 0,980 : cx = 480 : cy = 475 caption 0,"<ESC> pour arrêter" ' Pour centrer exactement le polygone et préciser son centre ' 2D_CIRCLE cx,cy,420 ' 2D_CIRCLE cx,cy,3 ' 2D_line cx,50,cx,500
END_SUB REM ============================================================================ ' ICI COMMENCE LE SPECTACLE ! SUB Spectacle() For sw= 1 to 9 cls SELECT sw CASE 1 POLY(3,240,726,480,56) MID(1,2) : MID(2,3) : MID(3,1) : CENTRE() ROTATE(6,1,4,7,1,6,7) : ROTATE(6,2,5,7,2,4,7) ROTATE(6,3,5,7,3,6,7) :JOIN(12,1,7,4,7,2,7,5,7,3,7,6,7) Print_locate 20,50: Print " IMAGE n°1 SUR 9" ' CASE 2 POLY(3,240,726,480,56) MID(1,2) : MID(2,3) : MID(3,1) : CENTRE() ROTATE(3,1,4,6) : ROTATE(3,4,6,5) : ROTATE(3,4,2,5) ROTATE(3,6,5,3) : JOIN(6,4,6,5,4,6,5) Print_locate 20,50: Print " IMAGE n°2 SUR 9" ' CASE 3 POLY(4,225,600,480,56) MID(1,2) : MID(2,3) : MID(3,4) : MID(4,1) ROTATE(3,2,5,6) : ROTATE(3,4,7,8) : ROTATE(3,1,8,5) ROTATE(3,3,6,7) : ROTATE(3,5,6,7) : ROTATE(3,5,7,8) JOIN(10,5,6,7,6,7,8,5,8,5,7) Print_locate 20,50: Print " IMAGE n°3 SUR 9" ' CASE 4 POLY(4,225,600,480,56) MID(1,2) : MID(2,3) : MID(3,4) : MID(4,1) : MID(1,3) ROTATE(3,1,5,9) : ROTATE(3,1,8,9) : ROTATE(3,2,5,9) ROTATE(3,2,6,9) : ROTATE(3,3,6,9) : ROTATE(3,3,7,9) ROTATE(3,4,7,9) : ROTATE(3,4,8,9) : JOIN(12,1,9,2,9,3,9,4,9,5,7,6,8) Print_locate 20,50: print " IMAGE n°4 SUR 9" ' CASE 5 POLY(4,225,600,480,56) MID(2,4) : JOIN(4,1,3,2,4) : ROTATE(6,5,1,2,5,3,2) :ROTATE(6,5,3,4,5,1,4) Print_locate 20,50: print " IMAGE n°5 SUR 9" ' CASE 6 POLY(5,216,530,480,56) MID(1,2) : MID(2,3) : MID(3,4) : MID(4,5) : MID(5,1) : CENTRE() ROTATE(3,11,1,6) : ROTATE(3,11,1,10) : ROTATE(3,11,2,6) : ROTATE(3,11,2,7) ROTATE(3,11,3,7) : ROTATE(3,11,3,8) : ROTATE(3,11,4,8) : ROTATE(3,11,4,9) ROTATE(3,11,5,9) : ROTATE(3,11,5,10) JOIN(10,6,11,7,11,8,11,9,11,10,11) : JOIN(10,11,1,11,2,11,3,11,4,11,5) Print_locate 20,50: print " IMAGE n°6 SUR 9" ' CASE 7 POLY(9,200,300,480,30) MID(5,6) : JOIN(6,4,1,7,1,10,1) ROTATE(4,1,10,5,4) : ROTATE(4,1,10,6,7) : ROTATE(4,1,4,3,2) : ROTATE(4,1,7,8,9) Print_locate 20,50: print " IMAGE n°7 SUR 9" ' CASE 8 POLY(12,195,230,480,30) JOIN(4,1,7,4,10) : MID(1,7) : ROTATE(5,1,13,4,3,2) : ROTATE(5,7,13,4,5,6) ROTATE(5,1,13,10,11,12) : ROTATE(5,7,13,10,9,8) Print_locate 20,50: print " IMAGE n°8 SUR 9" ' CASE 9 POLY(6,210,380,480,80) : ROTATE(6,1,2,3,4,5,6) : ROTATE(6,1,6,5,4,3,2) POLY(6,210,450,480,25) : POLY(6,210,430,480,42) : POLY(6,210,410,480,59) Print_locate 20,50: print " IMAGE n°9 SUR 9" END_SELECT
if KEY_UP_CODE = 27 then fin() : ' Nardo : c'est plus pratique, cela evite d'appuyer comme un malade pour que la touche soit prise en compt PAUSE 3000 NEXT sw Print_locate 20,50: print "!!! LE SPECTACLE EST TERMINE !!!" caption 0,"Terminé" END_SUB REM ============================================================================ ' Paramètres de POLY ' p1 = Nombre de sommets du polygone ' p2 = Inclinaison du 1er côté en degrés ' p3 = Longueur de chaque côté ' p4 = Coordonnée en x du premier sommet ' p5 = Coordonnée en y du premier sommet SUB POLY(p1,p2,p3,p4,p5) dim_local b,PI,RAD PI=acos(-1): rad=PI/180 : p2=p2*RAD x=p4 : y=p5 2D_POLY_FROM x,y :' Coordonnées du premier sommet i=0: u=0 : u=u+1: mx(u)=x: my(u)=y i=i+1: c(i)=u :' Numéro du premier sommet b=2*PI/p1 for i=2 to p1 x=x+p3*COS(p2): y=y+p3*SIN(p2)*-1 2D_POLY_TO x,y u=u+1: mx(u)=x: my(u)=y : c(i)=u if i<p1+1 then p2=p2+b next i 2D_POLY_TO mx(1),my(1) END_SUB rem ============================================================================ SUB MID(m1,m2) u=u+1 mx(u)=(mx(m1)+mx(m2))/2 : my(u)=(my(m1)+my(m2))/2 ' 2D_CIRCLE mx(u),my(u),3 i=i+1: c(i)=u END_SUB rem ============================================================================ SUB CENTRE() 2D_CIRCLE cx,cy,2 u=u+1: mx(u)=cx: my(u)=cy : i=i+1: c(i)=u END_SUB rem ============================================================================
SUB ROTATE(N,r1,r2,r3,r4,r5,r6) c(1) = r1 : c(2) = r2 : c(3) = r3 : c(4) = r4 : c(5) = r5 : c(6) = r6 ROTATE_ALL(N) END_SUB
rem ============================================================================ SUB ROTATE_ALL(rn) DIM_LOCAL s$,x1,x2 for j=1 to rn e(j,1)=mx(c(j)) e(j,2)=my(c(j)) next j e(j,1)=e(1,1) e(j,2)=e(1,2)
while 1 = 1 : ' Toujours vrai, donc une boucle infinie ! for j=1 to rn x1=(e(j+1,1)-e(j,1))*(e(j+1,1)-e(j,1)) x2=(e(j+1,2)-e(j,2))*(e(j+1,2)-e(j,2)) n(j)=(f*l)/sqr(x1+x2) if n(j)>a then EXIT_SUB : ' On brise ici la boucle infinie next j ' for j=1 to rn e(j,1)=e(j,1)+n(j)*(e(j+1,1)-e(j,1)) e(j,2)=e(j,2)+n(j)*(e(j+1,2)-e(j,2)) if j=1 2D_POLY_FROM e(j,1),e(j,2) Else 2D_POLY_TO e(j,1),e(j,2) END_IF next j e(j,1)=e(1,1) e(j,2)=e(1,2) 2D_POLY_TO e(j,1),e(j,2) END_WHILE END_SUB
rem ============================================================================ rem A adapter en fct de tes prochaines réalisation rem ============================================================================ SUB JOIN(N,j1,j2,j3,j4,j5,j6,j7,j8,j9,j10,j11,j12) 2D_LINE mx(j1),my(j1),mx(j2),my(j2) IF N>4 2D_LINE mx(j3),my(j3),mx(j4),my(j4) 2D_LINE mx(j5),my(j5),mx(j6),my(j6) END_IF IF N>6 2D_LINE mx(j7),my(j7),mx(j8),my(j8) 2D_LINE mx(j9),my(j9),mx(j10),my(j10) END_IF IF N>10 2D_LINE mx(j11),my(j11),mx(j12),my(j12) END_IF END_SUB
rem ============================================================================ SUB Fin() caption 0, "Programme arrêté par l'utilisateur" end END_SUB rem ============================================================================
Regarde la commande KEY_UP_CODE qui à mon avis, est plus "souple" que l'utilisation de SCANCODE (pour quitter le prog en cours d’exécution) | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Rotation Algorithm n°3 Mer 24 Juin 2015 - 12:53 | |
| Merci Nardo en plus chez moi, le scancode ne fonctionne pas (je suis toujours à 255) donc le programme s'arrète dès la première image si je ne change rien. C'est un problème qu'avait rencontré Cosmos70 et d'autres. Ca doit être lié à quelque chose dans la config ou les drivers, mais pas la moindre idée de quoi. Enfin bref, j'ai des moyens de contournement comme le inkey$ ou le key_down_code (ou le key_up_code) | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Rotation Algorithm n°3 Mer 24 Juin 2015 - 17:49 | |
| Salut Jicehel Comme le scancode ne fonctionne pas sur ton ordi ou plutôt ton ordi ne reconnait pas le scancode, jette-le à la corbeille et procure-toi un nouveau ! Tu sais, la corbeille qui se trouve sur le bureau, prends ton ordi à deux mains et essaie de le mettre dedans. Si tu n’y arrives pas, tu peux toujours me l’envoyer en cadeau (par les moyens modernes : par SMS, par FAX, par courrier indésirable, etc.). Tu sors gagnant : tu as un nouveau ordi et ton grenier est propre ! Je cours regarder ma boîte à lettre pour voir si ton ordi y est, qui sait, à la vitesse où nous vivons, tout est possible ! Sérieusement, j’ai eu ce même problème et je l’ai résolu. Comment ? Jette un œil ici ou là. Ça t’épargnera peut-être la peine de m’expédier ton cher PC ! | |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Rotation Algorithm n°3 Mer 24 Juin 2015 - 18:19 | |
| Oui tu en avais parlé mais il n'y a pas de solution... Mon PC win7 64bits me renvoi 255 pour la touche ESC... | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Rotation Algorithm n°3 Mer 24 Juin 2015 - 18:47 | |
| C'est quand même bizarre ce truc. Comme ça pose souvent problème moi dans mes programmes j'ai abandonné l'usage du scancode en tout cas (mais je sais que ça vient probablement de quelque chose quelque part dans mes drivers ou résident puisque le reboot ne résoud pas le problème). Je n'ai pas envie de tout cassé dans mes programmes car mon PC fonctionne très bien et que ce problème est très facilement contournable avec d'autres instructions avec lesquelles je n'ai aucun problème. | |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Rotation Algorithm n°3 Mer 24 Juin 2015 - 19:00 | |
| idem... pourtant scancode marchait bien sur mon PC avant... et je reviens de me faire avoir avec le programme de serge (polygone) | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Rotation Algorithm n°3 Jeu 25 Juin 2015 - 2:19 | |
| | |
| | | Invité Invité
| Sujet: Re: Rotation Algorithm n°3 Jeu 25 Juin 2015 - 7:57 | |
| Bonjour, Une simple question: est-ce quelqu'un a regardé si Lbound et Ubound pouvaient être remplacés ici par ce qu'on a dit sur dlist? Était-ce une erreur, ou une mauvaise interprétation? |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Rotation Algorithm n°3 Jeu 25 Juin 2015 - 8:56 | |
| Bonjour cosmos,
UBOUND, renvoie la plus grande valeur d'une dimension d'un tableau. En VBA:
Dim tableau(5, 7) UBound(tableau) renvoie : 7 UBound(tableau, 1) renvoi : 5 UBound(tableau, 2) renvoi : 7
Dans le cas d'une DLIST (une seule dimension), la fonction Panoramic COUNT() est bien équivalent à UBOUND | |
| | | Invité Invité
| Sujet: Re: Rotation Algorithm n°3 Jeu 25 Juin 2015 - 13:35 | |
| D'accord Nardo, je l'avais compris. Mais vu que Parpaiun (il me semble que c'est l'orthographe, vu que le nom n'est pas sur cette page) avait dit que cela ne convenait pas, j'aimerai que les spécialistes du genre, valident ou non. Si un dlist pouvait être utilisé, montrer le fonctionnement à l'auteur du sujet (n'étant pas sur de l'orthographe, et vu les réactions de celui-ci, je préfère en éviter l'écriture!) |
| | | Contenu sponsorisé
| Sujet: Re: Rotation Algorithm n°3 | |
| |
| | | | Rotation Algorithm n°3 | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |