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
» Gestion d'un système client-serveur.
Une énigme sous forme d’un poème : flocon de Von Koch Emptypar Klaus Ven 17 Mai 2024 - 14:02

» item_index(résolu)
Une énigme sous forme d’un poème : flocon de Von Koch Emptypar jjn4 Mar 14 Mai 2024 - 19:38

» Bataille terrestre
Une énigme sous forme d’un poème : flocon de Von Koch Emptypar jjn4 Lun 13 Mai 2024 - 15:01

» SineCube
Une énigme sous forme d’un poème : flocon de Von Koch Emptypar Marc Sam 11 Mai 2024 - 12:38

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Une énigme sous forme d’un poème : flocon de Von Koch Emptypar Marc Sam 11 Mai 2024 - 12:22

» Philharmusique
Une énigme sous forme d’un poème : flocon de Von Koch Emptypar jjn4 Ven 10 Mai 2024 - 13:58

» PANORAMIC V 1
Une énigme sous forme d’un poème : flocon de Von Koch Emptypar papydall Jeu 9 Mai 2024 - 3:22

» select intégrés [résolu]
Une énigme sous forme d’un poème : flocon de Von Koch Emptypar jjn4 Mer 8 Mai 2024 - 17:00

» number_mouse_up
Une énigme sous forme d’un poème : flocon de Von Koch Emptypar jjn4 Mer 8 Mai 2024 - 11:59

» Aide de PANORAMIC
Une énigme sous forme d’un poème : flocon de Von Koch Emptypar jjn4 Mer 8 Mai 2024 - 11:16

» trop de fichiers en cours
Une énigme sous forme d’un poème : flocon de Von Koch Emptypar lepetitmarocain Mer 8 Mai 2024 - 10:43

» Je teste PANORAMIC V 1 beta 1
Une énigme sous forme d’un poème : flocon de Von Koch Emptypar papydall Mer 8 Mai 2024 - 4:17

» bouton dans autre form que 0(résolu)
Une énigme sous forme d’un poème : flocon de Von Koch Emptypar leclode Lun 6 Mai 2024 - 13:59

» KGF_dll - nouvelles versions
Une énigme sous forme d’un poème : flocon de Von Koch Emptypar Klaus Lun 6 Mai 2024 - 11:41

» @Jack
Une énigme sous forme d’un poème : flocon de Von Koch Emptypar Jack Mar 30 Avr 2024 - 20:40

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
-14%
Le deal à ne pas rater :
Apple MacBook Air (2020) 13,3″ Puce Apple M1 – RAM 8Go/SSD 256Go
799 € 930 €
Voir le deal

 

 Une énigme sous forme d’un poème : flocon de Von Koch

Aller en bas 
5 participants
AuteurMessage
papydall

papydall


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

Une énigme sous forme d’un poème : flocon de Von Koch Empty
MessageSujet: Une énigme sous forme d’un poème : flocon de Von Koch   Une énigme sous forme d’un poème : flocon de Von Koch EmptyMer 29 Avr 2020 - 5:46

Quelqu’un m’a proposé (avec un air malicieux) une énigme sous forme d’un poème.
Voici le poème:

Voici ma réponse en Panoramic

Code:

rem ============================================================================
rem               L’énigme du flocon de Von Koch
rem                 Papydall le 29 / 04 / 2020
rem ============================================================================
label choix
dim x(4*65536),y(4*65536)
dim sin60,cos60, maxx,generation,puissance4
dim l, longueur, aire

GUI()
Init()
Afficher_Poeme()
Debut()

end
rem ============================================================================
SUB GUI()
    width 0,1000 : height 0,800
    picture 10 : width 10,550 : height 10,650 : top 10,20 : left 10,20 : 2d_target_is 10
    font_bold 10 : font_size 10,14 : 2d_fill_color 200,100,20 : print_target_is 10
    font_size 10,10 : 2d_fill_color 255,255,255 : 2d_pen_width 2 : 2d_pen_color 255,0,0
    button 20 : top 20,700 : left 20,050 : caption 20,"&Précédent" : on_click 20,choix
    button 30 : top 30,700 : left 30,225 : caption 30,"&Suivant"   : on_click 30,choix
    button 40 : top 40,700 : left 40,400 : caption 40,"&Quitter"   : on_click 40,choix
    alpha 99 : top 99,50 : left 99,650 : font_bold 99 : font_size 99,12
    font_color 99,20,100,200
    caption 0,"Flocon de Von Koch."    
END_SUB
rem ============================================================================
SUB Init()        
    L = 400       : ' longueur en pixels du côté du triangle initial
    longueur = 3  : ' périmètre du triangle de départ de côté 1
    maxx = width_client(10)
    sin60 = sqr(3)/2       : ' sin(60°) pour les déplacements
    cos60 = 0.5            : ' cos(60)
    x(0) = (maxx-L) / 2    : '  1er point
    y(0) = (maxx-4*L*Sin60/3) / 2+L*Sin60
    x(1) = x(0)+L*Cos60    : '  2eme point
    y(1) = y(0)-L*Sin60
    x(2) = x(0)+L          : '  3eme point
    y(2) = y(0)
    x(3) = x(0)
    y(3) = y(0)
    generation  = 1  : puissance4 = 1
END_SUB
rem ============================================================================
SUB Afficher_Poeme()
    dim_local a$,t$  
    read a$
    while a$ <> "FIN"
       t$ = t$ + a$ + chr$(13)
       read a$
    end_while
    caption 99,t$
END_SUB
rem ============================================================================
Choix:
    select number_click
        case 20 : Precedent()
        case 30 : Suivant()
        case 40 : Quitter()
    end_select
return
rem ============================================================================
SUB Debut()
    cls
    Dessiner(1)
END_SUB
rem ============================================================================
SUB Generer(generation)
    dim_local i,j,dx,dy
    for j = puissance4 * 3 to 1 step -1 : ' On décale les points pour intercaler les 3 nouveaux points  
        x(j*4) = x(j) : y(j*4) = y(j)
    next j
    for j = 0 to puissance4 * 3 - 1     : ' On intercale les 3 nouveaux points
        i = 4*j
        dx = (x(i+4)-x(i))/3 : dy = (y(i+4)-y(i))/3 : ' on coupe en 3
        x(i+1) = x(i)+dx : y(i+1) = y(i)+dy         : ' on part du 1/3 et on termine aux 2/3
        x(i+2) = x(i+1)+cos60*dx+sin60*dy           : ' on obtient le nouveau point,
        y(i+2) = y(i+1)-sin60*dx+cos60*dy           : ' sommet du triangle équiltéral
        x(i+3) = x(i)+2*dx : y(i+3) = y(i)+2*dy    
    next j
END_SUB
rem ============================================================================
SUB Dessiner(generation)
    dim_local i
    cls
    2d_poly_from x(0),y(0)   : ' on se positionne sur le 1er point
    for i = 1 to 3*puissance4
        2d_poly_to x(i),y(i) : ' on trace de point en point
    next i
    Afficher()
END_SUB
rem ============================================================================
SUB Afficher()
    dim_local s$
    2d_fill_color 200,100,20
    2d_rectangle 10,518,maxx-2,640
    2d_fill_off
    print_locate 150,10 : print "Flocon de Von Koch par Papydall."
    print_locate 020,520 : print "Génération : " + str$(generation-1) + "     "
    s$ = "Nombre de côtés : " + str$(3*puissance4) + "     "
    print_locate 300,520 : print s$
    longueur = 3*power(4/3,generation-1)  
    print_locate 020,540 : print "Périmètre = " + str$(longueur)
    aire = 2*sqr(3)/5 - (3*sqr(3)/20) * power(4/9,generation-1)
    print_locate 300,540 : print "Aire = " + str$(aire)
    print_locate 020,560 : print "Le périmètre tend vers l'infini lorsque le nombre de générations tend vers l'infini."
    print_locate 020,580 : print "L'aire du flocon est finie et tend vers les 8/5 de l'aire du triangle de départ."
    print_locate 020,600 : print "Pour un triangle initial de côté 1, l'aire du flocon tend vers "+ str$(2*sqr(3)/5)
    print_locate 100,620 : print "La Dimension fractale est : " + str$(log(4)/log(3))
END_SUB
rem ============================================================================
SUB Suivant()
    if puissance4 >= 1024 : ' on se limite à la génération 5; au-dela les calculs...
       message "On se limite à la génération 5 !"
       inactive 30
       exit_sub       : ' ... deviennent chronophages et il n'y a plus de ...
    end_if            : ' ... différences sensibles entre une courbe et la suivante
    inactive 20 : inactive 30 : ' pour calmer Mr Bourrin
    puissance4 = puissance4 * 4
    generation = generation + 1
    Generer(generation)
    Dessiner(generation)
    active 20 : active 30     : ' Mr Bourrin peut se défouler
END_SUB
rem ============================================================================
SUB Precedent()
    dim_local j
    if puissance4 = 1
       message "Il n'y a pas de précédent pour la génération 0 !!!"
       inactive 20
       exit_sub
    end_if
    cls
    inactive 20 : inactive 30 : ' pour calmer Mr. Bourrin
    FOR j = 1 TO puissance4*3 : ' On décale les points pour suppimer les 3 nouveaux points
        x(j) = x(j*4)
        y(j) = y(j*4)
    next j
    puissance4 = puissance4 / 4
    generation = generation - 1
    Dessiner(generation)
    active 20 : active 30  
END_SUB
rem ============================================================================
SUB Quitter()
    if message_confirmation_yes_no("Vous voulez vraiment quitter ?") = 1
       terminate
    end_if
END_SUB
rem ============================================================================
data "       E N I G M E"
data ""
data "Au jardin des mathématiques,"
data "Un triangle aspirait à l'infini."
data "Ses côtés trop isométriques"
data "Entravaient ses rêves inassouvis"
data "Et l'agaçaient de leur musique :"
data "Ton périmètre, il est fini ... fini."
data ""
data "Un jour, un ange bucolique"
data "Lui greffa, bien au centre des côtés"
data "Deux tiers de segments en oblique."
data "Cet ange était excellent jardinier"
data "Et bientôt, surgeons identiques,"
data "Trois bébés trigones bourgeonnaient."
data ""
data "Voyant qu'ainsi le périmètre"
data "S'agrandissant en belle proportion,"
data "Il suivit son art de géomètre,"
data "Sautant de division en division."
data "Cela fit une belle étoile"
data "Et tous les triangles à l'unisson,"
data "Se festonnèrent de fractales"
data "Qui rivalisaient en perfection."
data ""
data "Auteur inconnu"
data "FIN"
rem ============================================================================


Résultat:
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Froggy One

Froggy One


Nombre de messages : 586
Date d'inscription : 06/01/2012

Une énigme sous forme d’un poème : flocon de Von Koch Empty
MessageSujet: Re   Une énigme sous forme d’un poème : flocon de Von Koch EmptyMer 29 Avr 2020 - 17:04

on peut couper les cheveux en quatre
ou refaire la guerre de... trois,
il n'empêche qu'en moins de deux,
Papydall en étonne plus d'un !
Revenir en haut Aller en bas
http://gaeldwest.wordpress.com
JL35




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

Une énigme sous forme d’un poème : flocon de Von Koch Empty
MessageSujet: Re: Une énigme sous forme d’un poème : flocon de Von Koch   Une énigme sous forme d’un poème : flocon de Von Koch EmptyMer 29 Avr 2020 - 18:58

Bravo Froggy, quel poète !

J'ai essayé d'en faire une petite sub (du papydall, pas du poème)
En recopiant bêtement les instructions du programme ci-dessus, sans trop approfondir !
Ça perd un peu de son charme poétique, mais bon...
Code:
dim x,y,w
WIDTH 0,600: HEIGHT 0,600
PICTURE 10: FULL_SPACE 10: 2D_TARGET_IS 10: 2D_FILL_OFF
x = 100: y = 50: w = 400
' 2D_PEN_COLOR 64,64,64: 2D_PEN_DOT: 2D_RECTANGLE x,y,x+w,y+w
  2D_PEN_COLOR 255,0,0: 2D_PEN_WIDTH 2
Cadretoile(10,x,y,w,4)
END
' ==============================================================================
SUB Cadretoile(p,x0,y0,w,gen)
  ' d'après PAPYDALL
  ' Cadre fantaisie dans picture p, forme gen = 1 (triangle) à 5 (étoilé)
  ' Tracé en x0,y0, w = largeur de la figure (enveloppe ~ carrée)
  ' Paramètres actuels: couleur et épaisseur de trait.
  DIM_LOCAL L,lg,sin60,cos60,x(4*65536),y(4*65536)
  DIM_LOCAL p4,i,j,k,dx,dy
  IF gen > 5 THEN gen = 5
  i = 2*gen-2: p4 = POWER(2,i)
  ' Init
  L = w: ' longueur en pixels du côté du triangle initial
  lg = 3: ' périmètre du triangle de départ de côté 1
  sin60 = sqr(3)/2: ' sin(60°) pour les déplacements
  cos60 = 0.5: ' cos(60)
  x(0) = x0: y(0) = y0+2+L*Sin60: ' 1er point
  x(1) = x(0)+L*Cos60: y(1) = y(0)-L*Sin60: ' 2ème point
  x(2) = x(0)+L: y(2) = y(0): ' 3ème point
  x(3) = x(0): y(3) = y(0)
  IF gen > 1
    ' Générer
    FOR k = 2 TO gen
      for j = p4 * 3 to 1 step -1 : ' Intercaler les 3 nouveaux points  
        x(j*4) = x(j) : y(j*4) = y(j)
      next j
      for j = 0 to p4 * 3 - 1     : ' On intercale les 3 nouveaux points
        i = 4*j
        dx = (x(i+4)-x(i))/3 : dy = (y(i+4)-y(i))/3 : ' Coupe en 3
        x(i+1) = x(i)+dx : y(i+1) = y(i)+dy         : ' Du 1/3 aux 2/3
        x(i+2) = x(i+1)+cos60*dx+sin60*dy           : ' nouveau point,
        y(i+2) = y(i+1)-sin60*dx+cos60*dy           : ' sommet triangle équilatéral
        x(i+3) = x(i)+2*dx : y(i+3) = y(i)+2*dy    
      next j  
    NEXT k
  END_IF  
  ' Dessiner
  2d_poly_from x(0),y(0)   : ' on se positionne sur le 1er point
  for i = 1 to 3*p4
      2d_poly_to x(i),y(i) : ' on trace de point en point
  next i
END_SUB
' ==============================================================================
Ça peut servir pour encadrer un sprite de façon originale, dans une image du picture.


Dernière édition par JL35 le Mer 29 Avr 2020 - 21:03, édité 1 fois
Revenir en haut Aller en bas
jjn4

jjn4


Nombre de messages : 2709
Date d'inscription : 13/09/2009

Une énigme sous forme d’un poème : flocon de Von Koch Empty
MessageSujet: Re: Une énigme sous forme d’un poème : flocon de Von Koch   Une énigme sous forme d’un poème : flocon de Von Koch EmptyMer 29 Avr 2020 - 19:24

Quand les programmeurs deviennent bucoliques...!
(ou plutôt bucolico-mathématiques) Laughing
Revenir en haut Aller en bas
http://jjn4.e-monsite.com
Froggy One

Froggy One


Nombre de messages : 586
Date d'inscription : 06/01/2012

Une énigme sous forme d’un poème : flocon de Von Koch Empty
MessageSujet: Re   Une énigme sous forme d’un poème : flocon de Von Koch EmptyMer 29 Avr 2020 - 20:56

YES !!! il y a juste une coquille en ligne 27.
Revenir en haut Aller en bas
http://gaeldwest.wordpress.com
JL35




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

Une énigme sous forme d’un poème : flocon de Von Koch Empty
MessageSujet: Re: Une énigme sous forme d’un poème : flocon de Von Koch   Une énigme sous forme d’un poème : flocon de Von Koch EmptyMer 29 Avr 2020 - 21:03

Bien vu ! manque une parenthèse, sans doute emportée par le vent...
Je corrige
Revenir en haut Aller en bas
papydall

papydall


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

Une énigme sous forme d’un poème : flocon de Von Koch Empty
MessageSujet: Re: Une énigme sous forme d’un poème : flocon de Von Koch   Une énigme sous forme d’un poème : flocon de Von Koch EmptyJeu 30 Avr 2020 - 0:19

Merci à vous tous : Le poète, Le Martien et l’amateur des cadres.
Et tant qu’on parle de cadrer un sprite ou même un petit Martien vert, voici comment j’imagine le cadre

Code:

dim x,y,w
WIDTH 0,600: HEIGHT 0,600
PICTURE 10: FULL_SPACE 10: 2D_TARGET_IS 10: 2D_FILL_COLOR 255,255,0
x = 100: y = 50: w = 400
2D_PEN_COLOR 255,0,0: 2D_PEN_WIDTH 2
Cadretoile(10,x,y,w,5)
picture 20 : width 20,200 : height 20,200 : top 20, 180 : left 20,200
stretch_on 20
file_load 20,"C:\Users\acer\Desktop\1.jpg" : ' <--- à adapter !!!
END
' ==============================================================================
SUB Cadretoile(p,x0,y0,w,gen)
  ' d'après PAPYDALL
  ' Cadre fantaisie dans picture p, forme gen = 1 (triangle) à 5 (étoilé)
  ' Tracé en x0,y0, w = largeur de la figure (enveloppe ~ carrée)
  ' Paramètres actuels: couleur et épaisseur de trait.
  DIM_LOCAL L,lg,sin60,cos60,x(4*65536),y(4*65536)
  DIM_LOCAL p4,i,j,k,dx,dy
  IF gen > 5 THEN gen = 5
  i = 2*gen-2: p4 = POWER(2,i)
  ' Init
  L = w: ' longueur en pixels du côté du triangle initial
  lg = 3: ' périmètre du triangle de départ de côté 1
  sin60 = sqr(3)/2: ' sin(60°) pour les déplacements
  cos60 = 0.5: ' cos(60)
  x(0) = x0: y(0) = y0+2+L*Sin60: ' 1er point
  x(1) = x(0)+L*Cos60: y(1) = y(0)-L*Sin60: ' 2ème point
  x(2) = x(0)+L: y(2) = y(0): ' 3ème point
  x(3) = x(0): y(3) = y(0)
  IF gen > 1
    ' Générer
    FOR k = 2 TO gen
      for j = p4 * 3 to 1 step -1 : ' Intercaler les 3 nouveaux points  
        x(j*4) = x(j) : y(j*4) = y(j)
      next j
      for j = 0 to p4 * 3 - 1     : ' On intercale les 3 nouveaux points
        i = 4*j
        dx = (x(i+4)-x(i))/3 : dy = (y(i+4)-y(i))/3 : ' Coupe en 3
        x(i+1) = x(i)+dx : y(i+1) = y(i)+dy         : ' Du 1/3 aux 2/3
        x(i+2) = x(i+1)+cos60*dx+sin60*dy           : ' nouveau point,
        y(i+2) = y(i+1)-sin60*dx+cos60*dy           : ' sommet triangle équilatéral
        x(i+3) = x(i)+2*dx : y(i+3) = y(i)+2*dy    
      next j  
    NEXT k
  END_IF  
  ' Dessiner
 ' 2d_poly_from x(0),y(0)   : ' on se positionne sur le 1er point
  for i = 1 to 3*p4
    '  2d_poly_to x(i),y(i) : ' on trace de point en point
      2d_circle x(i),y(i),5 : display
  next i
END_SUB
' ==============================================================================

Resultat:
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
jean_debord

jean_debord


Nombre de messages : 1250
Age : 69
Localisation : Limoges
Date d'inscription : 21/09/2008

Une énigme sous forme d’un poème : flocon de Von Koch Empty
MessageSujet: Re: Une énigme sous forme d’un poème : flocon de Von Koch   Une énigme sous forme d’un poème : flocon de Von Koch EmptyJeu 30 Avr 2020 - 8:30

Excellent ce cadre fractal !

Je suppose que si l'on voulait des tableaux dynamiques, il faudrait faire :

Code:

dim x(4 * p4), y(4 * p4)

(ceci pour une éventuelle adaptation crocodilienne !)

EDIT : en fait c'est (12 * p4) d'après la variation des indices i et j dans le sous-programme.

L'adaptation est en cours Smile
Revenir en haut Aller en bas
http://www.unilim.fr/pages_perso/jean.debord/index.htm
papydall

papydall


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

Une énigme sous forme d’un poème : flocon de Von Koch Empty
MessageSujet: Re: Une énigme sous forme d’un poème : flocon de Von Koch   Une énigme sous forme d’un poème : flocon de Von Koch EmptySam 2 Mai 2020 - 6:26

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





Une énigme sous forme d’un poème : flocon de Von Koch Empty
MessageSujet: Re: Une énigme sous forme d’un poème : flocon de Von Koch   Une énigme sous forme d’un poème : flocon de Von Koch Empty

Revenir en haut Aller en bas
 
Une énigme sous forme d’un poème : flocon de Von Koch
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Calculette Décimal/Hexa sous forme de Sub
» Calcul d'expressions saisies sous forme de chaîne.
» Un programme plante sous l'IDE, mais marche sous l'éditeur
» La clé de l'énigme
» L’énigme d’Einstein.

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: