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.
Lignes ondulées Emptypar Jack Aujourd'hui à 10:03

» Un autre pense-bête...
Lignes ondulées Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Lignes ondulées Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Lignes ondulées Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Lignes ondulées Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Lignes ondulées Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Lignes ondulées Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Lignes ondulées Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Lignes ondulées Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Lignes ondulées Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Lignes ondulées Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Lignes ondulées Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Lignes ondulées Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Lignes ondulées Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Lignes ondulées 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 à ne pas rater :
Boutique Nike : -25% dès 50€ sur TOUT le site Nike avec le code ...
Voir le deal

 

 Lignes ondulées

Aller en bas 
3 participants
AuteurMessage
JL35




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

Lignes ondulées Empty
MessageSujet: Lignes ondulées   Lignes ondulées EmptyJeu 5 Juil 2018 - 20:34

Une petite sub pour tracer des lignes ondulées, horizontales ou verticales, à partir d'un point donné et de longueur donnée.
On donne en paramètre le point de départ, la longueur, le sens (horizontal ou vertical), et la hauteur de l'ondulation.
Code:
DIM x1%,y1%,ll%,hl%,hv%,e%
PICTURE 1: FULL_SPACE 1: 2D_TARGET_IS 1
2D_PEN_WIDTH 2
x1% = 20: y1% = 30: ' angle supérieur gauche
ll% = 500: hl% = 150: ' rectangle
e% = 3
Trait_Ondule(x1%,y1%,ll%,0,e%)
Trait_Ondule(x1%,y1%,hl%,1,e%)
Trait_Ondule(x1%,y1%+hl%,ll%,0,e%)
Trait_Ondule(x1%+ll%,y1%,hl%,1,e%)
END
' ==============================================================================
SUB Trait_Ondule(x1%,y1%,ll%,hv%,e%)
  ' Tracé d'une ligne ondulée depuis x1%,y1%, longueur ll%,
  ' e% = profondeur des ondulations (faible, 2 à 6 par exemple)
  ' hv% = 1: ligne verticale, sinon horizontale.
  DIM_LOCAL xc%,yc%,rx%,ry%,x2%,y2%,xf%,yf%,w%,h%,d%,f%,t%,i%,n%,pa%,p%
  IF hv% <> 1 THEN hv% = 0
  IF hv% = 0
      h% = e%: w% = h%*3: n% = ll%/(2*w%): ' nombre d'ondulations
      xf% = x1%+ll%: yf% = y1%
  ELSE
      w% = e%: h% = w%*3: n% = ll%/(2*h%)
      xf% = x1%: yf% = y1%+ll%
  END_IF
  rx% = w%/2: ry% = h%/2
  DEGREES
  pa% = 10: p% = pa%: ' pas de progression, en degrés
  FOR i% = 1 TO n%
      IF hv% = 0
          xc% = x1%+rx%: yc% = y1%: d% = 180: f% = 0: ' horizontale
          p% = -1*pa%
      ELSE
          xc% = x1%: yc% = y1%+ry%: d% = 90: f% = 270: ' verticale
          p% = pa%
      END_IF
      2D_POLY_FROM x1%,y1%
      FOR t% = d% TO f% STEP p%
          x2% = xc%+rx%*COS(t%): y2% = yc%-ry%*SIN(t%)
          IF (hv%=0 AND x2%>xf%) OR (hv%=1 AND y2%>yf%) THEN EXIT_FOR
          2D_POLY_TO x2%,y2%
      NEXT t%
      IF hv% = 0
          x1% = x1%+w%: xc% = x1%+rx%: d% = 180: f% = 360
          p% = pa%
      ELSE
          y1% = y1%+h%: yc% = y1%+ry%: d% = 450: f% = 270
          p% = -1*pa%
      END_IF
      2D_POLY_FROM x1%,y1%
      FOR t% = d% TO f% STEP p%
          x2% = xc%+rx%*COS(t%): y2% = yc%-ry%*SIN(t%)
          IF (hv%=0 AND x2%>xf%) OR (hv%=1 AND y2%>yf%) THEN EXIT_FOR
          2D_POLY_TO x2%,y2%
      NEXT t%
      IF hv% = 0
          x1% = x1%+w%: xc% = x1%+rx%
      ELSE
          y1% = y1%+h%: yc% = y1%+ry%
      END_IF
  NEXT i%
  2D_POLY_TO xf%,yf%
END_SUB
' ==============================================================================
Les ondulations sont constituées de demi-ellipses, dans un sens puis dans l'autre.
On peut varier l'épaisseur  (2D_PEN_WIDTH) et la hauteur de l'ondulation.
J'ai mis arbitrairement la longueur de l'ellipse à 3 fois sa hauteur (dans la sub: w% = h%*3 et h% = w%*3), mais on peut expérimenter d'autres rapports.
Il faut toutefois limiter l'épaisseur, sinon la terminaison de ligne peut devenir inesthétique. A voir.

On peut faire un cadre (ondulé, et non dentelé comme le précédent), par exemple:
Lignes ondulées Ondule10
Le cadre est bien fermé, on peut colorer l'intérieur avec un 2D_FLOOD.

Je n'ai fait que l'horizontale et la verticale, pour les lignes obliques ça devient trop compliqué (et sans intérêt a priori)
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

Lignes ondulées Empty
MessageSujet: Re: Lignes ondulées   Lignes ondulées EmptyJeu 5 Juil 2018 - 20:58

Sympa cette petite SUB.

On peu faire un rebord de toit de maison (tuiles rondes ou tôle) Very Happy

Une petite variante pour le plaisir:
Code:
DIM x1%,y1%,ll%,hl%,hv%,e%
PICTURE 1: FULL_SPACE 1: 2D_TARGET_IS 1
2D_PEN_WIDTH 2
x1% = 20: y1% = 30: ' angle supérieur gauche
ll% = 500: hl% = 150: ' rectangle
e% = 3
Trait_Ondule(x1%,y1%,ll%,0,e%,255,0,0)
Trait_Ondule(x1%,y1%,hl%,1,e%,0,255,0)
Trait_Ondule(x1%,y1%+hl%,ll%,0,e%,0,255,255)
Trait_Ondule(x1%+ll%,y1%,hl%,1,e%,0,0,255)
END
' ==============================================================================
SUB Trait_Ondule(x1%,y1%,ll%,hv%,e%,cr%,cg%,cb%)
  ' Tracé d'une ligne ondulée depuis x1%,y1%, longueur ll%,
  ' e% = profondeur des ondulations (faible, 2 à 6 par exemple)
  ' hv% = 1: ligne verticale, sinon horizontale.
  2d_pen_color cr%,cg%,cb%
  DIM_LOCAL xc%,yc%,rx%,ry%,x2%,y2%,xf%,yf%,w%,h%,d%,f%,t%,i%,n%,pa%,p%
  IF hv% <> 1 THEN hv% = 0
  IF hv% = 0
      h% = e%: w% = h%*3: n% = ll%/(2*w%): ' nombre d'ondulations
      xf% = x1%+ll%: yf% = y1%
  ELSE
      w% = e%: h% = w%*3: n% = ll%/(2*h%)
      xf% = x1%: yf% = y1%+ll%
  END_IF
  rx% = w%/2: ry% = h%/2
  DEGREES
  pa% = 10: p% = pa%: ' pas de progression, en degrés
  FOR i% = 1 TO n%
      IF hv% = 0
          xc% = x1%+rx%: yc% = y1%: d% = 180: f% = 0: ' horizontale
          p% = -1*pa%
      ELSE
          xc% = x1%: yc% = y1%+ry%: d% = 90: f% = 270: ' verticale
          p% = pa%
      END_IF
      2D_POLY_FROM x1%,y1%
      FOR t% = d% TO f% STEP p%
          x2% = xc%+rx%*COS(t%): y2% = yc%-ry%*SIN(t%)
          IF (hv%=0 AND x2%>xf%) OR (hv%=1 AND y2%>yf%) THEN EXIT_FOR
          2D_POLY_TO x2%,y2%
      NEXT t%
      IF hv% = 0
          x1% = x1%+w%: xc% = x1%+rx%: d% = 180: f% = 360
          p% = pa%
      ELSE
          y1% = y1%+h%: yc% = y1%+ry%: d% = 450: f% = 270
          p% = -1*pa%
      END_IF
      2D_POLY_FROM x1%,y1%
      FOR t% = d% TO f% STEP p%
          x2% = xc%+rx%*COS(t%): y2% = yc%-ry%*SIN(t%)
          IF (hv%=0 AND x2%>xf%) OR (hv%=1 AND y2%>yf%) THEN EXIT_FOR
          2D_POLY_TO x2%,y2%
      NEXT t%
      IF hv% = 0
          x1% = x1%+w%: xc% = x1%+rx%
      ELSE
          y1% = y1%+h%: yc% = y1%+ry%
      END_IF
  NEXT i%
  2D_POLY_TO xf%,yf%
END_SUB
' ==============================================================================

A+
Revenir en haut Aller en bas
JL35




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

Lignes ondulées Empty
MessageSujet: Re: Lignes ondulées   Lignes ondulées EmptyJeu 5 Juil 2018 - 21:08

Salut Jean Claude,

Bien sûr on peut jouer sur la couleur, l'épaisseur du trait, etc, imbriquer des cadres de couleurs différentes les uns dans les autres, les colorier, etc.
Et tu peux toujours mettre la photo de ta belle-mère à l'intérieur, ça lui fera plaisir...
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

Lignes ondulées Empty
MessageSujet: Re: Lignes ondulées   Lignes ondulées EmptyJeu 5 Juil 2018 - 23:43

JL35 a écrit:
Je n'ai fait que l'horizontale et la verticale, pour les lignes obliques ça devient trop compliqué (et sans intérêt a priori)

Pas si compliqué que ça !
Pour incliner une figure, il suffit d’appliquer la matrice de rotation à tous les points de la figure.

A titre d’application, voici un code pour tracer une ellipse inclinée

Code:

rem ============================================================================
rem                  Inclinaison d’une figure
rem ============================================================================
rem Pour incliner une figure, il suffit d’appliquer la matrice de rotation à
rem tous les points de la figure.
rem ============================================================================
rem
rem    __________________________________________________
rem   |                                                  |
rem   | xp = cx + (x1*cos(IncliDeg) - y1*sin(Inclideg))  |
rem   | yp = cy - (x1*sin(IncliDeg) + y1*cos(IncliDeg))  |
rem   |__________________________________________________|
rem
rem   xp,yp    : coordonnées du point à tracer
rem   cx,cy    : coordonnées du centre de la figure
rem   x1,y1    : coordonnées du point avant rotation
rem   IncliDeg : valeur de l’angle de rotation (en degré) , sens trigonométrique
rem ============================================================================
rem Application :
rem Tracer une ellipse inclinée    
rem Appel : Ellipse_Inclinee(cx,cy,rx,ry,IncliDeg)

    2d_pen_color 255,0,0 : Ellipse_Inclinee(300,220,200,100,30)
    2d_pen_color 0,0,255 : Ellipse_Inclinee(300,220,200,100,150)

end
rem ============================================================================

' cx,cy : coordonnées du centre de rotation de l'ellipse
' Rx et Ry sont les longueurs des demi-diagonales
' IncliDeg : inclinaison en degrés de l'ellipse dans le sens trigonométrique

SUB Ellipse_Inclinee(cx,cy,rx,ry,IncliDeg)
    dim_local a,x1,y1,xp,yp
    degrees
    IncliDeg = 0-IncliDeg
    ' Calcul du point Origine
    x1 = rx*sin(IncliDeg) : y1 = ry*cos(IncliDeg)
    xp = cx + (x1*cos(IncliDeg) - y1*sin(IncliDeg))
    yp = cy + (x1*sin(IncliDeg) + y1*cos(IncliDeg))
    2d_poly_from xp,yp

    for a = 0 to 360
        x1 = rx*sin(a + IncliDeg) : y1 = ry*cos(a + IncliDeg)
        ' Application de la matrice de rotation par rapport au centre cx,cy
        xp = cx + (x1*cos(IncliDeg) - y1*sin(IncliDeg))
        yp = cy + (x1*sin(IncliDeg) + y1*cos(IncliDeg))
        2d_poly_to xp,yp
    next a
END_SUB
rem ============================================================================

Quant à l’intérêt, ça se discute.
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
JL35




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

Lignes ondulées Empty
MessageSujet: Re: Lignes ondulées   Lignes ondulées EmptyVen 6 Juil 2018 - 13:01

Eh papydall, pas si simple que ça non plus !

Bon, c'est une solution, en cas de besoin (à appliquer à la ligne inclinée, ce qui complique encore un peu...), mais a priori ça me semble bien compliqué pour le peu d'usage (ou le non usage) qu'on en a.

Enfin, les outils sont là, y'a plus qu'à, si besoin était.
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

Lignes ondulées Empty
MessageSujet: Re: Lignes ondulées   Lignes ondulées EmptyVen 6 Juil 2018 - 16:05

Le but principal de mon code est de montrer comment faire une rotation pour un objet quelconque dont on connait les coordonnées des points.
Une simple application d’une matrice à tous les points de l’objet pour obtenir les nouvelles coordonnées.

Soient
x,y les coordonnées d’un point
cx,cy les coordonnées du centre de rotation
IncliDeg l’angle de rotation en degré

Les nouvelles coordonnées du point en question deviennent :
xp = cx + (x*cos(IncliDeg) - y*sin(Inclideg))
yp = cy  - (x*sin(IncliDeg) + y*cos(IncliDeg))

J’avoue que ce n’est trop compliqué pour incliner l’inclinable.
Les maths sont là pour nous faciliter les tâches, alors autant en profiter, abstraction faite de l'utilité ou de l'inutilité de la chose. tongue
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
JL35




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

Lignes ondulées Empty
MessageSujet: Re: Lignes ondulées   Lignes ondulées EmptyVen 6 Juil 2018 - 17:39

Je suis évidemment d'accord avec toi papydall, je pense qu'ici on programme avant tout pour le plaisir !
Revenir en haut Aller en bas
Contenu sponsorisé





Lignes ondulées Empty
MessageSujet: Re: Lignes ondulées   Lignes ondulées Empty

Revenir en haut Aller en bas
 
Lignes ondulées
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» indentation de lignes.
» Les deux lignes
» Tracé de lignes
» Eliminer les lignes blanches
» EDITOR avec gestion des numéros de lignes

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: