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 |
|
|
| Les procédures LINOR et ARCOR | |
| | Auteur | Message |
---|
Parpaiun
Nombre de messages : 192 Age : 85 Localisation : HERAULT Date d'inscription : 15/04/2015
| Sujet: Les procédures LINOR et ARCOR Sam 25 Avr 2015 - 15:39 | |
| Bonjour les panoramiciens ! Voici un utilitaire pour tracer manuellement des figures en mode graphique 2D et 3D.
Explication des paramètres: Dans LINOR: x et y = coordonnées du point de départ de la droite, lr = longueur en pixels, la = angle de direction (de 0 à 360 degrés) et lt 1 = tracé actif (pen down) ou lt 0 = tracé inactif (pen up).
Dans ARCOR : x et y = coordonnées du point de départ de l'arc, ar = rayon de courbure, ad = angle de direction en degrés, al = longueur de l'arc, et at 1 = orientation de l'arc vers la droite ou at -1 = orientation vers la gauche. Code: [rem Auteur: Parpaiun rem Date-version: 19/04/2015 dim rad,th,x,x2,y,y2 width 0,500 : height 0,500 caption 0,"Les fonctions LINOR et ARCOR" rad = 3.141592 / 180
rem Mettre ici vos directives de tracé x = 200 : y = 130 2d_circle x,y,3 2d_pen_width 3 linor(x,y,100,0,1) linor(x,y,50,90,1) arcor(x,y,50,90,180,-1) linor(x,y,50,270,1) end terminate
sub linor(x1,y1,lr,la,lt) la = la * rad for th = 1 to lr x2 = x1 + th * cos(la) y2 = y1 + th * sin(la * -1) next th 2d_pen_color 0,0,0: if lt = 0 then 2d_pen_color 255,255,255 2d_line x1,y1,x2,y2 x = x2: y = y2 END_SUB
sub arcor(ax,ay,ar,ad,al,at) dim_local mx,my,n ad = (360 - ad) * rad n = int(0.5 + ar * al * rad) for th = 1 to n if th > 1 then 2d_line mx,my,ax,ay mx = ax : my = ay ax = ax + cos(ad) ay = ay + sin(ad) ad = ad + at / ar next th x = ax : y = ay END_SUB] [/code]
J'espère que vous en tirez profit pour faire de belles figures géométriques ou trigonométriques. Amusez vous bien !
| |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Sam 25 Avr 2015 - 15:56 | |
| Merci Parpaiun ! et bienvenue parmis nous !
Pour une entrée, ca c' est une entrée ! J' espère que tu trouveras sur le forum toute l' aide dont tu auras besoin et je te souhaite une bonne programmation en Panoramic. | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Les procédures LINOR et ARCOR Sam 25 Avr 2015 - 16:07 | |
| Salut Parpaium Je viens de te répondre par MP, mais tu as été plus rapide que moi. Bon, je reprends - Code:
-
rem ============================================================================ rem Auteur: Parpaiun rem Date-version: 19/04/2015 rem ============================================================================ dim pi,rad,th,x,x2,y,y2 width 0,500 : height 0,500 caption 0,"Les fonctions LINOR et ARCOR" pi = acos(-1) : rad = pi / 180
alpha 10 : font_name 10 ,"ariel" : font_bold 10 : font_size 10,18 : top 10,50 : left 10,50 caption 10,"Les fonctions LINOR et ARCOR" + chr$(13) + string$(15," ")+"Par Parpaium"
rem Mettre ici vos directives de tracé ' 2d_circle x,y,3 2d_pen_width 3 x = 100 : y = 430 linor(x,y,200,0,1) linor(x,y,150,90,1) arcor(x,y,100,90,180,-1) linor(x,y,150,270,1)
' =============================================== x = 220 : y = 350 linor(x,y,40,0,1) linor(x,y,30,90,1) arcor(x,y,20,90,180,-1) linor(x,y,30,270,1) ' ============================================== x = 150 : y = 350 linor(x,y,40,0,1) linor(x,y,30,90,1) arcor(x,y,20,90,180,-1) linor(x,y,30,270,1)
end ' terminate rem ============================================================================ sub linor(x1,y1,lr,la,lt) la = la * rad for th = 1 to lr x2 = x1 + th * cos(la) y2 = y1 + th * sin(la * -1) next th 2d_pen_color 0,0,0: if lt = 0 then 2d_pen_color 255,255,255 2d_line x1,y1,x2,y2 x = x2: y = y2 END_SUB rem ============================================================================ sub arcor(ax,ay,ar,ad,al,at) dim_local mx,my,n ad = (360 - ad) * rad n = int(0.5 + ar * al * rad) for th = 1 to n if th > 1 then 2d_line mx,my,ax,ay mx = ax : my = ay ax = ax + cos(ad) ay = ay + sin(ad) ad = ad + at / ar next th x = ax : y = ay END_SUB rem ============================================================================
| |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Les procédures LINOR et ARCOR Sam 25 Avr 2015 - 18:13 | |
| très bien, j'ai fait une toute petite modif pour que si l'on ne trace pas, cela ne fasse pas de trace blanche et par soucis de cohérence, j'ai ajouté aussi la possibilité de ne pas tracer sur arcor (c'est un peu vicieux, normalement, c'est vrai que l'on se déplacerait plus en ligne droite, mais cela permet aussi d'effacer l'arc tel que c'est codé) En fait pour que la fonction corresponde à la description personnellement, j'aurais plutot supprimé la ligne if lt = 0 then 2d_pen_color 255,255,255 et j'aurais juste conditionné le traçage avec if lt <> 0 then 2d_line x1,y1,x2,y2 (et pareil pour arcor: if lt<>0 and th > 1 then 2d_line mx,my,ax,ay) en faisant comme ça, tu pourrais passer la couleur du tracé en paramètre à la SUB et choisir de dessiner avec la couleur de fond quand tu veux effacer ou avec une autre couleur pour tracer une figure
| |
| | | Contenu sponsorisé
| Sujet: Re: Les procédures LINOR et ARCOR | |
| |
| | | | Les procédures LINOR et ARCOR | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |