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 |
|
|
| Une dentelle fantaisie | |
| | Auteur | Message |
---|
Parpaiun
Nombre de messages : 192 Age : 85 Localisation : HERAULT Date d'inscription : 15/04/2015
| Sujet: Une dentelle fantaisie Ven 22 Mai 2015 - 16:07 | |
| Voici une dentelle assez spéciale ! Pour voir les fantaisies, lancez le programme plusieurs fois ... - Code:
-
REM ========================================================= REM Auteur: Parpaiun REM Date-version: 22/05/2015 REM d après <Art trigono-plastique> de Bern-Art Bonbon REM REM ========================================================= REM caption 0,"DENTELLES FANTAISIE" dim a,ag,b,c,cs,cx,cy,d,e,ex,ey,f,h,i,j,k,mr,n,n2,r,rad,r$,s,ss,sw,u,v height 0,985 : width 0,985 label debut,init,bordure,boucle n=20 :' nombre de branches doubles par niveau n2=n*2 dim x(n2),y(n2) ag=360/n : rad=acos(-1)/180 cs=cos(ag*rad):ss=sin(ag*rad) cx=485:cy=475 :' centre de la figure f=1 :' facteur d'agrandissement/réduction de l'image debut: k=20:c=0:d=0 sw = sw + 1: if sw > 5 then sw = 1 cls init: for i=1 to n2: x(i)=0: y(i)=0: next i boucle: k = k - 1: if k<6 then k=6 select sw case 1 h=(rnd(k*1.5)-5)*2 : v=(rnd(k*1.5)-5)*2 u=190 case 2 h=int(rnd(k)-2)*2 : v=int(rnd(k)-2)*2 u=210 case 3 h=int(rnd(k)*3)-int(rnd(k)*2) : v=int(rnd(k)*3)-int(rnd(k)*2) u=90 case 4 h=int(rnd(k)-3)*2-int(rnd(k)-2)*2 : v=int(rnd(k)-3)*2-int(rnd(k)-2)*2 u=100 case 5 h=int(rnd(k*0.9)-2.5)*2 : v=int(rnd(k*0.9)-2.5)*2 u=300 END_SELECT 2D_POLY_FROM cx+x(1)*f,cy+y(1)*f x(1)=x(1)+h : y(1)=y(1)+v d=d+1: if d<100 then goto init c=c+1: if c>u then goto bordure 2D_POLY_TO cx+x(1)*f,cy+y(1)*f
REM =========================================== 2D_POLY_FROM cx+x(n+1)*f,cy+y(n+1)*f x(n+1)=x(1) : y(n+1)=-1*y(1) 2D_POLY_TO cx+x(n+1)*f,cy+y(n+1)*f
REM =========================================== for i=2 to n 2D_POLY_FROM cx+x(i)*f,cy+y(i)*f x(i)=x(i-1)*cs-y(i-1)*ss y(i)=x(i-1)*ss+y(i-1)*cs 2D_POLY_TO cx+x(i)*f,cy+y(i)*f REM ========================================== 2D_POLY_FROM cx+x(i+n)*f,cy+y(i+n)*f x(i+n)=x(i+n-1)*cs-y(i+n-1)*ss y(i+n)=x(i+n-1)*ss+y(i+n-1)*cs 2D_POLY_TO cx+x(i+n)*f,cy+y(i+n)*f rem for j=1 to 50000: next j next i goto boucle ' bordure: ex=cx+x(i-1+n): ey=cy+y(i-1+n) r=sqr((cx-ex)*(cx-ex)+(cy-ey)*(cy-ey)) : r=int(r) ' Comment empêcher le cercle de bordure d'escamoter l'image ? REM 2D_CIRCLE cx,cy,r
END A la dernière ligne de ce programme, j'ai rencontré un problème très agaçant qui ne se voit pas dans le GFA Basic ! Il s'agit d'un cercle de bordure qui escamote la dentelle. Très très fâcheux pour moi !!! Avez vous une solution pour ça , s'il vous plaît ? Merci ! Comme toujours, les amis, faites ce que vous voulez avec ce programme ! | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Une dentelle fantaisie Ven 22 Mai 2015 - 18:17 | |
| Salut Parpaiun Très beau dessin comme toujours. Pour le petit problème du cercle de bordure qui escamote la dentelle, c’est parce que le tracé d’un cercle en Panoramic ne fait pas uniquement de tracer le pourtour du cercle, mais le disque du cercle, donc forcement, ça efface ce qui était dessiné en dessous. Bon, je sais que je ne sais pas bien expliquer les choses, mais pour contourner le problème, tu peux tracer ton cercle point par point comme ceci - Code:
-
bordure: ex=cx+x(i-1+n): ey=cy+y(i-1+n) r=sqr((cx-ex)*(cx-ex)+(cy-ey)*(cy-ey)) : r=int(r) ' Comment empêcher le cercle de bordure d'escamoter l'image ? ' 2D_CIRCLE cx,cy,r 2d_poly_from cx+r,cy for i = 0 to 360 2d_poly_to cx+r*cos(i*rad),cy+r*sin(i*rad) next i
PS : Tu sais ce que je pense de GOTO, donc No Comment! | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Une dentelle fantaisie Ven 22 Mai 2015 - 19:14 | |
| Tout à fait Papydall t'a répondu et a donné une astuce pour tracer le tour. Je suis parti sur l'autre solution qui est de dire que l'on ne veut pas que le remplissage se fasse. J'ai également modifié un peu le programme qui marchait très bien mais qui dépasse la taille de mon écran de portable (ben oui désolé, je travail sur un portable avec un écran large mais avec seulement 800 en hauteur). Ma version réduit donc l'image. (J'a irepensé qu'après avoir modifié à f qui m'aurait éviter d'avoir à modifier le code ...) Elle retire aussi le remplissage du cercle et j'ai modifié le calcul du rayon car chez moi, le rayon était souvent plus petit et certains points étaient à l'exterieur du cercle - Code:
-
REM ========================================================= REM Auteur: Parpaiun REM Date-version: 22/05/2015 REM d après <Art trigono-plastique> de Bern-Art Bonbon REM REM ========================================================= REM caption 0,"DENTELLES FANTAISIE" dim a,b,c,d,e,h,i,j,k,mr,n,r,r$,s,sw,u,v, ymin height 0,750 : width 0,750 label debut,init,bordure,boucle n=16 :' nombre de branches doubles par niveau dim x(n*2),y(n*2) dim ag : ag =360/n dim rad : rad=acos(-1)/180 dim cs, ss : cs=cos(ag*rad):ss=sin(ag*rad) dim cx, cy : cx=(width(0)-50)/2:cy=(height(0)-50)/2 :' centre de la figure ymin = cy dim f : f=0.8 :' facteur d'agrandissement/réduction de l'image debut: k=18:c=0:d=0 sw = sw + 1: if sw > 5 then sw = 1 cls init: for i=1 to (n*2): x(i)=0: y(i)=0: next i boucle: k = k - 1: if k<6 then k=6 select sw case 1 : h=(rnd(k*1.5)-5)*2 : v=(rnd(k*1.5)-5)*2 : u=190 case 2 : h=int(rnd(k)-2)*2 : v=int(rnd(k)-2)*2 : u=210 case 3 : h=int(rnd(k)*3)-int(rnd(k)*2) : v=int(rnd(k)*3)-int(rnd(k)*2) : u=90 case 4 : h=int(rnd(k)-3)*2-int(rnd(k)-2)*2 : v=int(rnd(k)-3)*2-int(rnd(k)-2)*2 : u=100 case 5 : h=int(rnd(k*0.9)-2.5)*2 : v=int(rnd(k*0.9)-2.5)*2 : u=300 END_SELECT 2D_POLY_FROM cx+x(1)*f,cy+y(1)*f x(1)=x(1)+h : y(1)=y(1)+v d=d+1: if d<100 then goto init c=c+1: if c>u then goto bordure 2D_POLY_TO cx+x(1)*f,cy+y(1)*f
REM =========================================== 2D_POLY_FROM cx+x(n+1)*f,cy+y(n+1)*f x(n+1)=x(1) : y(n+1)=-1*y(1) 2D_POLY_TO cx+x(n+1)*f,cy+y(n+1)*f
REM =========================================== for i=2 to n 2D_POLY_FROM cx+x(i)*f,cy+y(i)*f x(i)=x(i-1)*cs-y(i-1)*ss y(i)=x(i-1)*ss+y(i-1)*cs 2D_POLY_TO cx+x(i)*f,cy+y(i)*f
REM ========================================== 2D_POLY_FROM cx+x(i+n)*f,cy+y(i+n)*f x(i+n)=x(i+n-1)*cs-y(i+n-1)*ss y(i+n)=x(i+n-1)*ss+y(i+n-1)*cs 2D_POLY_TO cx+x(i+n)*f,cy+y(i+n)*f if (cy+y(i+n))*f < ymin then ymin = (cy+y(i+n))*f next i goto boucle
' bordure: r=cy - int(ymin) - 67 ' Comment empêcher le cercle de bordure d'escamoter l'image ? 2D_fill_off : 2D_pen_width 3 : 2D_CIRCLE cx,cy,r
END | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Une dentelle fantaisie Ven 22 Mai 2015 - 19:31 | |
| Salut tous le monde ! Bravo Parpaiun pour cette belle dentelle ! (Huuummmm la dentelle...) @Jicehel : Pas mal cette inscruction ' 2D_fill_off', mais tu la sort d'ou ??? Elle est même pas référencé dans la doc en ligne... Il faudra dire a Jack de mettre a jour la doc dans sa todo liste. Le pauvre, on le laissera jamais tranquille. | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Une dentelle fantaisie Ven 22 Mai 2015 - 19:35 | |
| On en a parlé il n'y a pas longtemps. Ca existe depuis la version instantanée de juillet 2014 il me semble. | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Une dentelle fantaisie Ven 22 Mai 2015 - 19:40 | |
| Merci pour l'info Jicehel. C'est noté. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Une dentelle fantaisie Ven 22 Mai 2015 - 22:20 | |
| Voici une copie de l'annonce d'une des versions instantanées: - Citation :
- Version instantanée du 16 décembre 2014 : PANORAMIC V 0.9.26i3
NUMBER_ACTIVATE : numéro du dernier objet (FORM) activé NUMBER_SHOW : numéro du dernier objet (FORM) visible
TRIGGER_CLICK N : simule un événement ON_CLICK sur l'objet système numéro N
2D_FILL_ON : à leur création, les formes 2D_CIRCLE et 2D_RECTANGLE sont remplies avec la couleur 2D_FILL_COLOR 2D_FILL_OFF : à leur création, les formes 2D_CIRCLE et 2D_RECTANGLE sont transparentes
ARCHIVER_ON : démarre l'archiveur ARCHIVER_ADD D$, F$ : archive le contenu du répertoire D$ dans le fichier F$ ARCHIVER_EXTRACT F$, D$ : extrait le fichier archive F$ dans le répertoire D$. Attention, D$ doit exister. ARCHIVER_OFF : arrête l'archiveur
exemple d'archivage :
Code: rem archives directory source into file fff.zip ARCHIVER_ON ARCHIVER_ADD "source", fff.zip ARCHIVER_OFF
exemple d'extraction :
Code: rem extracts file fff.zip into directory dest DIR_MAKE "dest" ARCHIVER_ON ARCHIVER_EXTRACT fff.zip, "dest" ARCHIVER_OFF
Correction de bugs : appel d'un SUB avec chaine de caractère possédant le caractère = (égal) DELETE et ON_CLICK étaient inefficaces sur un SCENE2D
Je te suggère de te constituer un fichier texte dans lequel tu pourrais copier toutes ces annonces des versions instantanées, jusqu'à ce qu'elles soient remplacées par la prochaine version officielle. Voici le mien: - Spoiler:
Version instantanée du 26 septembre 2014 : PANORAMIC V 0.9.26i2
1 - traitement de l'événement ACTIVATE L'événement ACTIVATE se déclenche quand un FORM prend le focus.
ON_ACTIVATE N,L exécute le programme à partir du label L quand l'objet système numéro N prend le focus N doit être le numéro d'un objet FORM
OFF_ACTIVATE N ignore le traitement d'événement "activate" quand l'objet système numéro N (FORM) est activé
Exemple : cliquez alternativement sur l'un des 2 FORMs.
Code: label active0,active1
dim k0%,k1%
k0%=0 k1%=0
height 0,200:width 0,300 alpha 10:top 10,20:left 10,20:caption 10, "Cliquez sur ce FORM"
form 1:left 1,310:height 1,200:width 1,300 alpha 11:parent 11,1:top 11,20:left 11,20
on_activate 0,active0 on_activate 1,active1 end
active0: k0%=k0%+1 caption 0, "nombre d'activations: "+str$(k0%) caption 10, "" caption 11, "Cliquez sur ce FORM" return
active1: k1%=k1%+1 caption 1, "nombre d'activations: "+str$(k1%) caption 10, "Cliquez sur ce FORM" caption 11, "" return
2 - traitement de l'événement SHOW L'événement SHOW se déclenche quand un FORM devient visible.
ON_SHOW N,L exécute le programme à partir du label L quand l'objet système numéro N devient visible N doit être le numéro d'un objet FORM
OFF_SHOW N ignore le traitement d'événement "show" quand l'objet système numéro N (FORM) devient visible
Exemple :
Code: label show,click
dim k%
k%=0
button 1:width 1,200:top 1,20:left 1,20:caption 1, "Cliquez pour rendre le FORM invisible"
on_show 0, show on_click 1, click end
show: k%=k%+1 caption 0, "nombre de SHOWs: "+str$(k%) return
click: hide 0 wait 1000 show 0 return
3 - dans l'évaluation d'une expression de la gauche vers la droite, la division s'effectue avant la multiplication quand ces 2 opérations ont même priorité
Exemple :
Code: dim kk%
kk%=2
print "les 2 lignes suivantes doivent être identiques :" print ((6.2832/7)*kk%) print (6.2832/7*kk%)
print "la ligne suivante doit être 30" print 30/5*5
4 - envoi d'un mail
MAIL_SEND adresse$,titre$,corps$
Exemple :
Code: mail_send "amigo@hotmail.fr","titre","corps du mail"
============================================================================================
Version instantanée du 16 décembre 2014 : PANORAMIC V 0.9.26i3
NUMBER_ACTIVATE : numéro du dernier objet (FORM) activé NUMBER_SHOW : numéro du dernier objet (FORM) visible
TRIGGER_CLICK N : simule un événement ON_CLICK sur l'objet système numéro N
2D_FILL_ON : à leur création, les formes 2D_CIRCLE et 2D_RECTANGLE sont remplies avec la couleur 2D_FILL_COLOR 2D_FILL_OFF : à leur création, les formes 2D_CIRCLE et 2D_RECTANGLE sont transparentes
ARCHIVER_ON : démarre l'archiveur ARCHIVER_ADD D$, F$ : archive le contenu du répertoire D$ dans le fichier F$ ARCHIVER_EXTRACT F$, D$ : extrait le fichier archive F$ dans le répertoire D$. Attention, D$ doit exister. ARCHIVER_OFF : arrête l'archiveur
exemple d'archivage :
Code: rem archives directory source into file fff.zip ARCHIVER_ON ARCHIVER_ADD "source", fff.zip ARCHIVER_OFF
exemple d'extraction :
Code: rem extracts file fff.zip into directory dest DIR_MAKE "dest" ARCHIVER_ON ARCHIVER_EXTRACT fff.zip, "dest" ARCHIVER_OFF
Correction de bugs : appel d'un SUB avec chaine de caractère possédant le caractère = (égal) DELETE et ON_CLICK étaient inefficaces sur un SCENE2D
==================================================================================================================
Version instantanée du 2 janvier 2015 : PANORAMIC V 0.9.26i4
Voici les améliorations de cette version, par rapport à la dernière version instantanée PANORAMIC V0.9.26i3 du 16 décembre 2014:
SEPARATOR_IS_POINT : le séparateur pour les nombres réels est le point (option par défaut) SEPARATOR_IS_COMMA : le séparateur pour les nombres réels est la virgule
exemple :
Code: dim f$ f$="123.456" print val(f$) separator_is_comma f$="123,456" print val(f$) separator_is_point f$="123.456" print val(f$)
OBJECT_INTERNAL(N) : retourne un numéro interne généré à la création de l'objet système de numéro N et -1 si l'objet de numéro N n'existe pas. (cette fonction avait été demandée par Klaus pour sa DLL)
exemple :
Code: button 1 caption 0,object_internal(1)
Correction de bugs :
l'objet HVIEWER est actif le séparateur pour les nombres réels est le point
=======================================================================================================================$
Version instantanée du 7 janvier 2015 : PANORAMIC V 0.9.26i5
Voici les améliorations de cette version, par rapport à la dernière version instantanée PANORAMIC V0.9.26i4 du 2 janvier 2015 :
OBJECT_INTERNAL(N) s'applique à l'objet FORM de numéro 0
l'objet HVIEWER est actif
ON_CLICK peut être utilisé avec l'objet HVIEWER
| |
| | | Parpaiun
Nombre de messages : 192 Age : 85 Localisation : HERAULT Date d'inscription : 15/04/2015
| Sujet: Revue du sujet Sam 23 Mai 2015 - 0:07 | |
| | |
| | | Parpaiun
Nombre de messages : 192 Age : 85 Localisation : HERAULT Date d'inscription : 15/04/2015
| | | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Une dentelle fantaisie Sam 23 Mai 2015 - 0:21 | |
| C'est par ce que pour l'utiliser, il ne fautpas utiliser la dernière version récupérable sur le site WEB, mais aller récupérer la version avec editeur présente sur le Webdav de Jack. Toutes les commandes qu'à énumérées Klaus ont été ajoutées depuis. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Une dentelle fantaisie Sam 23 Mai 2015 - 0:34 | |
| Ca marche avec la version V0.9.25i6. Essaie ce code: - Code:
-
picture 1 color 1,255,255,0 2d_pen_color 0,0,0 2d_circle 40,40,15 2d_fill_off 2d_circle 70,70,15 end
Et voici le résultat: Mais comme dit Jicehel, encore faut-il avoir la dernière version... | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Une dentelle fantaisie Sam 23 Mai 2015 - 0:44 | |
| La dernière version est iciFichier : PANORAMIC_EDITOR.exe | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| | | | Contenu sponsorisé
| Sujet: Re: Une dentelle fantaisie | |
| |
| | | | Une dentelle fantaisie | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |