FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Logiciel de planétarium.
Rectangles à coins arrondis. Encore !? Emptypar Pedro Sam 23 Nov 2024 - 15:50

» Un autre pense-bête...
Rectangles à coins arrondis. Encore !? Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Rectangles à coins arrondis. Encore !? Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Rectangles à coins arrondis. Encore !? Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Rectangles à coins arrondis. Encore !? Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Rectangles à coins arrondis. Encore !? Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Rectangles à coins arrondis. Encore !? Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Rectangles à coins arrondis. Encore !? Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Rectangles à coins arrondis. Encore !? Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Rectangles à coins arrondis. Encore !? Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Rectangles à coins arrondis. Encore !? Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Rectangles à coins arrondis. Encore !? Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Rectangles à coins arrondis. Encore !? Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Rectangles à coins arrondis. Encore !? Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Rectangles à coins arrondis. Encore !? Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
Le Deal du moment :
SSD interne Crucial BX500 2,5″ SATA – 500 ...
Voir le deal
29.99 €

 

 Rectangles à coins arrondis. Encore !?

Aller en bas 
3 participants
AuteurMessage
papydall

papydall


Nombre de messages : 7017
Age : 74
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Rectangles à coins arrondis. Encore !? Empty
MessageSujet: Rectangles à coins arrondis. Encore !?   Rectangles à coins arrondis. Encore !? EmptyLun 24 Oct 2022 - 5:56

Code:

rem ============================================================================
rem       Tracé des rectangles à coins arrondis
rem ============================================================================
picture 10 : full_space 10 : 2d_target_is 10
' Exemples d'appel
Rounded_Rectangle(20,20,500,400,100,150,20)
Rounded_Rectangle(50,40,400,300,10,150,200)
Rounded_Rectangle(80,50,100,40,200,150,0)
Rounded_Rectangle(300,50,50,250,10,10,200)
Rounded_Rectangle(80,200,150,120,255,10,20)
Rounded_Rectangle(60,350,400,40,0,0,0)
end
rem ============================================================================
' Paramètres :
' cx,cy : coordonnées du coin haut gauche du rectangle
' w , h : respectivement largeur et hauteur du rectangle
' r,g,b : composantes RGB de la couleur du rectangle
SUB Rounded_Rectangle(cx,cy,w,h,r,g,b)
    dim_local cz
    cz = min(w,h)/6 : ' Valeur empirique pour arrondir les coins en fonction
                    : ' de w,et h à ajuster selon le goût  
    degrees : 2d_pen_width 2 : 2d_pen_color r,g,b
    ' tracé des côtés du rectangle dépourvu de ses coins
    2d_line cx+cz/2,cy,cx+w-cz/2,cy      
    2d_line cx+cz/2,cy+h,cx+w-cz/2,cy+h
    2d_line cx,cy+cz/2,cx,cy+h-cz/2
    2d_line cx+w,cy+cz/2,cx+w,cy+h-cz/2
    ' Tracé des arcs pour les coins
    2d_arc cx+cz/2,cy+cz/2,cz/2,180,90
    2d_arc cx+w-cz/2,cy+cz/2,cz/2,90,0
    2d_arc cx+cz/2,cy+h-cz/2,cz/2,270,180
    2d_arc cx+w-cz/2,cy+h-cz/2,cz/2,0,270      
END_SUB
rem ============================================================================
    
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
JL35




Nombre de messages : 7112
Localisation : 77
Date d'inscription : 29/11/2007

Rectangles à coins arrondis. Encore !? Empty
MessageSujet: Re: Rectangles à coins arrondis. Encore !?   Rectangles à coins arrondis. Encore !? EmptyLun 24 Oct 2022 - 19:25

Oh oui, encore papydall !
Tiens, par exemple:
Code:
DIM x,y,w,h,r,ty
PICTURE 1: FULL_SPACE 1: 2D_TARGET_IS 1: 2D_PEN_WIDTH 5: 2D_PEN_COLOR 255,0,0
x = 20: y = 20: w = 240: h = 180
r = 30
ty = 1: x = 20: y = 20: Rectar(x,y,w,h,r,ty)
ty = 2: x = 300: Rectar(x,y,w,h,r,ty)
ty = 3: x = 20: y = 230: Rectar(x,y,w,h,r,ty)
ty = 4: x = 300: Rectar(x,y,w,h,r,ty)
END

SUB Rectar(x,y,w,h,r,ty)
  ' Cadre en x,y, dimensions w,h, à coins arrondis de rayon r
  ' ty =0 rectangle normal, =1 arrondi vers l'extérieur, =2 vers l'intérieur
  '    =3 cercles complets, =4 angles droits
  ' Paramètres courants: épaisseur trait, couleur
  DIM_LOCAL x1,x2,y1,y2
  x1 = x+r: x2 = x+w-r: y1 = y+r: y2 = y+h-r
  DEGREES
  SELECT ty
    CASE 0: ' rectangle ordinaire (r ignoré)
        2D_RECTANGLE x,y,x+w,y+h
    CASE 1: ' angles arrondis vers l'extérieur
        2D_LINE x,y1,x,y2: 2D_ARC x1,y2,r,270,180
        2D_LINE x1,y+h,x2,y+h: 2D_ARC x2,y2,r,0,270
        2D_LINE x+w,y2,x+w,y+r: 2D_ARC x2,y+r,r,90,0
        2D_LINE x2,y,x+r,y: 2D_ARC x+r,y+r,r,180,90
    CASE 2: ' angles arrondis vers l'intérieur
        2D_LINE x,y+r,x,y2: 2D_ARC x,y+h,r,90,0
        2D_LINE x1,y+h,x2,y+h: 2D_ARC x+w,y+h,r,180,90
        2D_LINE x+w,y2,x+w,y1: 2D_ARC x+w,y,r,270,180
        2D_LINE x2,y,x1,y: 2D_ARC x,y,r,0,270
    CASE 3: ' angles = cercles complets
        2D_LINE x,y1,x,y2: 2D_CIRCLE x1,y2,r
        2D_LINE x1,y+h,x2,y+h: 2D_CIRCLE x2,y2,r
        2D_LINE x+w,y2,x+w,y1: 2D_CIRCLE x2,y1,r
        2D_LINE x2,y,x1,y: 2D_CIRCLE x1,y1,r
    CASE 4: ' angles décrochage angle droit
        2D_LINE x,y1,x,y2: 2D_POLY_TO x1,y2: 2D_POLY_TO x1,y+h
        2D_POLY_TO x2,y+h: 2D_POLY_TO x2,y2: 2D_POLY_TO x+w,y2
        2D_POLY_TO x+w,y1: 2D_POLY_TO x2,y1: 2D_POLY_TO x2,y
        2D_POLY_TO x1,y: 2D_POLY_TO x1,y1: 2D_POLY_TO x,y1 
  END_SELECT
END_SUB
Rectangles à coins arrondis. Encore !? Img13
Revenir en haut Aller en bas
Marc

Marc


Nombre de messages : 2466
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

Rectangles à coins arrondis. Encore !? Empty
MessageSujet: Re: Rectangles à coins arrondis. Encore !?   Rectangles à coins arrondis. Encore !? EmptyLun 24 Oct 2022 - 21:53

Papydall a écrit:
Rectangles à coins arrondis. Encore !?

Oui, pourquoi pas !

Je vous propose une version "de précision".

Elle fonctionne avec un pinceau d’une largeur d’un pixel (instruction 2D_PEN_WIDTH  1), il n’y aura pas de trou dans le tracé.
Les quatre angles arrondis sont rigoureusement identiques. Pas de distorsion.

La  syntaxe : rectangle_arrondi(X1,Y1,X2,Y2,R).
Dessine un rectangle entre deux coordonnées X1,Y1 et X2,Y2.
Les coordonnées de départ et d'arrivée sont incluses dans le tracé.
R est le rayon en pixels des angles arrondis.  

Les coordonnées des points de départ et d’arrivée peuvent être données dans n’importe quel sens. Par exemple, pour le point de départ, on peut renseigner le coin en bas à droite  et pour le point d’arrivée, celui en haut à gauche.

Comme d’habitude, la couleur du tracé se fait par un 2D_PEN_COLOR, et le remplissage par un 2D_FLOOD.

Code:
' Tracé de rectangles à coins arrondis
' Marc - Octobre 2022
' Ecrit en langage Panoramic 0.9.29.i9
' ------------------------------------------------------------------------------

' La  syntaxe : rectangle_arrondi(X1,Y1,X2,Y2,R).
' Dessine un rectangle entre deux coordonnées X1,Y1 et X2,Y2.
' Les coordonnées de départ et d'arrivées sont incluses dans le tracé.
' R est le rayon en pixels des angles arrondis.  

rectangle_arrondi(5,7,45,80,9)
end
' ------------------------------------------------------------------------------
sub rectangle_arrondi(xr1%,yr1%,xr2%,yr2%,rayon%)
    dim_local x%, y%, m%, cx%, cy%, x1%, y1%, x2%, y2%

    ' traitement des coordonnées si elles sont inversées
    if xr1% < xr2%
        x1% = xr1% : x2% = xr2%
    else
        x1% = xr2% : x2% = xr1%
    end_if
    
    if yr1% < yr2%
        y1% = yr1% : y2% = yr2%
    else
        y1% = yr2% : y2% = yr1%
    end_if
        
    ' tracer le trait du haut
    2d_line x1%+rayon%, y1%, x2%-rayon%, y1%
    ' tracer le trait du bas
    2d_line x1%+rayon%, y2%, x2%-rayon%, y2%
    ' tracer le trait de gauche
    2d_line x1%, y1%+rayon%, x1%, y2%-rayon%
    ' traver le trait de droite
    2d_line x2%, y1%+rayon%, x2%, y2%-rayon%
    
    ' dessiner l'angle supérieur gauche
    cx% = x1%+rayon% : cy% = y1%+rayon%
    x% = 0 : y% = rayon% : m% = 5 - 4*rayon%      
    while x% <= y%
        2d_point x%*(-1)+cx%,y%*(-1)+cy% : 2d_point y%*(-1)+cx%,x%*(-1)+cy%
        if m% > 0 then y% = y% - 1 : m% = m% - 8*y%
        x% = x% + 1 : m% = m% + 8*x% + 4
    end_while

    ' dessiner l'angle supérieur droit
    cx% = x2%-rayon% : cy% = y1%+rayon%
    x% = 0 : y% = rayon% : m% = 5 - 4*rayon%      
    while x% <= y%
        2d_point x%+cx%,y%*(-1)+cy% : 2d_point y%+cx%,x%*(-1)+cy%
        if m% > 0 then y% = y% - 1 : m% = m% - 8*y%
        x% = x% + 1 : m% = m% + 8*x% + 4
    end_while

    ' dessiner l'angle inférieur droit
    cx% = x2%-rayon% : cy% = y2%-rayon%
    x% = 0 : y% = rayon% : m% = 5 - 4*rayon%      
    while x% <= y%
        2d_point x%+cx%,y%+cy% : 2d_point y%+cx%,x%+cy%
        if m% > 0 then y% = y% - 1 : m% = m% - 8*y%
        x% = x% + 1 : m% = m% + 8*x% + 4
    end_while

    ' dessiner l'angle inférieur gauche
    cx% = x1%+rayon% : cy% = y2%-rayon%
    x% = 0 : y% = rayon% : m% = 5 - 4*rayon%      
    while x% <= y%
        2d_point x%*(-1)+cx%,y%+cy%
        2d_point y%*(-1)+cx%,x%+cy%
        if m% > 0 then y% = y% - 1 : m% = m% - 8*y%
        x% = x% + 1 : m% = m% + 8*x% + 4
    end_while
end_sub

Rectangles à coins arrondis. Encore !? Testre10
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 7017
Age : 74
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Rectangles à coins arrondis. Encore !? Empty
MessageSujet: Re: Rectangles à coins arrondis. Encore !?   Rectangles à coins arrondis. Encore !? EmptyMar 25 Oct 2022 - 1:38

Merci JL35
Merci Marc
Tous ces codes sont bons.

J'ai posté, il y a environ 7 années un code de tracé d'arc de cercle par l'algorithme de Bresenham.
Et un autre code dans le même post montrant une demo de ce l'on peut faire avec un simple octant.

ça se trouve ici

Ci-après un code de tracé d'arc de cercle par l'algorithme de Bresenham.

Code:

rem ============================================================================
rem       Tracé d’arc de cercle par l’alorithme de Bresenham
rem        Le tracé se fait par octant (c-à-d 1/8 de cercle)
rem     Les numéros des octants suivent le sens trigonométrique
rem ============================================================================
dim i
' tracé des axes
2d_pen_color 255,0,0 : 2d_line 20,200,500,200 : 2d_line 250,20,250,400
2d_pen_color 0,0,255
for i = 1 to 8
    caption 0,"Octant : " + str$(i)  
    Tracer_Octant(250,200,100,i) : pause 1000 : ' La pause pour observer le tracé
next i
caption 0,"Et maintenant les 8 octants d'un trait formant un cercle complet"
2d_pen_color 255,0,255 : 2d_fill_off
for i = 1 to 8
    Tracer_Octant(250,200,90,i)
next i
end

rem ============================================================================
' Tracer un arc de cercle : un huitième de cercle
' x_centre,y_centre : coordonnées du centre du cercle
' rayon : rayon du cercle
' octant : numéro de l'octant de 1 à 8 dans le sens trigonométrique
' octant = 1 : angle compris entre 0      et pi/4   rad soit entre 0°   et 45°
' octant = 2 : angle compris entre pi/4   et pi/2   rad soit entre 45°  et 90°
' octant = 3 : angle compris entre pi/2   et 3*pi/4 rad soit entre 90°  et 135°
' octant = 4 : angle compris entre 3*pi/4 et pi     rad soit entre 135° et 180°
' octant = 5 : angle compris entre pi     et 5*pi/4 rad soit entre 180° et 225°
' octant = 6 : angle compris entre 5*pi/4 et 3*pi/2 rad soit entre 225° et 270°
' octant = 7 : angle compris entre 3*pi/2 et 7*pi/4 rad soit entre 270° et 315°
' octant = 8 : angle compris entre 7*pi/4 et 2*pi   rad soit entre 315° et 360°

SUB Tracer_Octant(x_centre,y_centre,rayon,octant)
    dim_local x, y, m, xp, yp
    x = 0 : y = rayon : m = 5 - 4*rayon
    while x <= y
       select octant
          case 1 : xp = x_centre + y : yp = y_centre - x
          case 2 : xp = x_centre + x : yp = y_centre - y
          case 3 : xp = x_centre - x : yp = y_centre - y
          case 4 : xp = x_centre - y : yp = y_centre - x
          case 5 : xp = x_centre - y : yp = y_centre + x
          case 6 : xp = x_centre - x : yp = y_centre + y
          case 7 : xp = x_centre + x : yp = y_centre + y
          case 8 : xp = x_centre + y : yp = y_centre + x
       end_select
       2d_point xp,yp
       if  m > 0 then y = y - 1 : m = m - 8 * y
       x = x + 1 : m = m + 8 * x + 4
    end_while
    
END_SUB
rem ============================================================================
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
papydall

papydall


Nombre de messages : 7017
Age : 74
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Rectangles à coins arrondis. Encore !? Empty
MessageSujet: Re: Rectangles à coins arrondis. Encore !?   Rectangles à coins arrondis. Encore !? EmptyMar 25 Oct 2022 - 3:25

Algorithme d'Andres de tracé de cercle.


Code:

rem ============================================================================
rem             Algorithme de tracé de cercle d’Andres
rem Ref :
rem https://fr.wikipedia.org/wiki/Algorithme_de_trac%C3%A9_de_cercle_d%27Andres
rem ============================================================================
dim xc,yc,r
xc = 250 : yc = 200 : r = 100
' Tracé des axes
2d_pen_color 255,0,0 : 2d_line 20,yc,500,yc : 2d_line xc,20,xc,400
' Tracé de l'octant N° 7  (r = 100)
2d_pen_color 0,0,255 : Octant(xc,yc,r) : pause 1000
' Tracé du cercle complet
2d_pen_color 0,0,0 : Cercle(xc,yc,r+50) : ' r = 150
end
rem ============================================================================
' Tracé de l'octant N° 7
SUB Octant(xc,yc,r)
    dim_local x,y,d
    x = 0 : y = r : d = r-1
    while y >= x
        2d_point xc+x,yc+y      
        if d >= 2*x
           d = d-2*x-1 : x = x+1
        else
           if d < 2*(r-y)
              d = d+2*y-1 : y = y-1
           else
              d = d+2*(y-x-1) : y = y-1 : x = x+1
           end_if
        end_if
    end_while
END_SUB
rem ============================================================================
' Tracé du cercle complet par octants
SUB Cercle(xc,yc,r)
    dim_local x,y,d
    x = 0 : y = r : d = r-1
    while y >= x
        2d_point xc + y , yc - x   : ' Octant N° 1
        2d_point xc + x , yc - y   : ' Octant N° 2
        2d_point xc - x , yc - y   : ' Octant N° 3
        2d_point xc - y , yc - x   : ' Octant N° 4
        2d_point xc - y , yc + x   : ' Octant N° 5
        2d_point xc - x , yc + y   : ' Octant N° 6
        2d_point xc + x , yc + y   : ' Octant N° 7
        2d_point xc + y , yc + x   : ' Octant N° 8
        
        if d >= 2*x
           d = d-2*x-1 : x = x+1
        else
           if d < 2*(r-y)
              d = d+2*y-1 : y = y-1
           else
              d = d+2*(y-x-1) : y = y-1 : x = x+1
           end_if
        end_if        
    end_while
END_SUB
rem ============================================================================

Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Contenu sponsorisé





Rectangles à coins arrondis. Encore !? Empty
MessageSujet: Re: Rectangles à coins arrondis. Encore !?   Rectangles à coins arrondis. Encore !? Empty

Revenir en haut Aller en bas
 
Rectangles à coins arrondis. Encore !?
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Tracé lignes et rectangles : Convertisseur de standard
» rectangle à coins arrondis
» Triangle à coins arrondis
» Des rectangles...
» dessine des rectangles

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: