Parpaiun
Nombre de messages : 192 Age : 85 Localisation : HERAULT Date d'inscription : 15/04/2015
| Sujet: La cinquième surprise de l'année Sam 16 Avr 2016 - 10:36 | |
| Oyez, oyez, chers confrères, en proie à une volonté indéfectible de programmer en Panoramic, je vous ai concocté une cinquième surprise de l'année ! Cette figure baptisée par mes soins: "Rosace à bandes entrelacées" est tirée d'un ouvrage de Michel Fleury dans lequel il n'y a pourtant aucun programme, ni formule mathématique. J'ai donc usé de mes méninges pour en faire un programme digne de Panoramic. D'abord, je me suis attaqué à la maquette puis à la confection de la rosace grâce à un tour de magie que peut-être certains d'entre vous connaissent. Dans mon programme, vous remarquerez la présence des procédures ROT et ECHEL. Ces deux là, tirés du package "APPLESOFT", demandent que chaque figure concernée soit mise en mémoire plot par plot. C'est important pour que tout ça fonctionne bien. - ROT est une fonction de rotation qu'il faut exécuter angle par angle en degrés. - ECHEL (qui remplace la fonction SCALE primitive dans APPLESOFT) permet soit de réduire, soit d'agrandir la figure à la taille que vous voulez. Seulement, attention, tracez une figure suffisamment grande à l'agrandissement maximum, sinon les plots risqueront d'être espacés. Voici mon programme: - Code:
-
' Auteur: Parpaiun ' Date-version: 15/04/2016 ' D'après :"Graphisme et géométrie", éditions "Presses de l'Université du Québec " par Michel ' Fleury, page 31 ' width 0,500: height 0,500 caption 0,"Rosace à bandes entrelacées" dim cx,cy,i,j,k,n,px,py,rad,th,x,y n=786 dim mx(n),my(n),td(n) label boucle ' ' Construction de la maquette cx=64 : cy=200 j=1 : mx(j)=cx : my(j)=cy : td(j)=1 droite(cx,cy,0,263,1) droite(cx,cy,45,261,1) arc(cx+12,cy,50,70,16,-1) arc(x,y,60,345,15,1) px=x : py=y arc(px,py,50,70,28,-1) arc(px,py,50,335,16,1) arc(x,y,60,56,20,-1) px=x : py=y arc(px,py,50,335,33,1) arc(px,py,60,73,30,-1) arc(x,y,100,345,21,1) px=x : py=y arc(px,py,143,82,19,-1) arc(px,py,138,323,19,1) arc(x,y,153,62,21,-1) px=x : py=y arc(px,py,230,320,18,1) arc(px,py,153,81,27,-1) arc(x,y,240,340,19,1) px=x : py=y arc(px,py,175,80,33,-1) arc(px,py,240,321,26,1) 2d_fill_color 255,255,255 print_locate 60,220: print "Nombre total de pixels mémorisés = ";j ' ' Construction de la rosace wait 1500 cls th=0 2d_fill_color 0,0,0 boucle: for i = 1 to j x=cx - mx(i) : y = cy - my(i) rot(th) echel(0.8) 2d_circle 240+x,230+y,2 next i th = th + 45 if th<360 then goto boucle
END
SUB arc(ax,ay,ar,ad,al,at) rad=0.01745 n=int(0.55+ar*(al*rad)) ad=(360-ad)*rad 2d_fill_color 0,0,0 for i=1 to n 2d_circle ax,ay,2 j=j+1 mx(j)=ax : my(j)=ay : td(j)=at ax = ax + cos(ad) : ay = ay + sin(ad) ad = ad + (at/ar) next i j=j+1 mx(j)=ax : my(j)=ay : td(j)=at x=ax : y=ay END_SUB
SUB droite(dx,dy,da,dl,dt) rad=0.01745 da=da*rad for i = 1 to dl dx = dx + cos(da) : dy = dy + sin(da*-1) if dt=1 then 2d_point dx,dy next i x=dx : y=dy END_SUB
SUB rot(th) dim_local cs,ss th=(360-th)*rad cs=cos(th) : ss=sin(th) px = x * cs - y * ss py = x * ss + y * cs x = px : y = py END_SUB
SUB echel(e) x = x * e : y = y * e END_SUB
Comme toujours, libre à vous le soin de procéder à la coloration. Et bon week-end ! | |
|