FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» Panoramic et ses curiosités
par Jack Aujourd'hui à 8:15

» Synedit Parameters
par Klaus Aujourd'hui à 1:33

» Utilitaire de suppression de fichiers
par Yannick Hier à 23:03

» Code à vérifier SVP (Oups ! résolu)
par Jean Claude Jeu 22 Juin 2017 - 21:16

» Compilateur FBPano
par jean_debord Jeu 22 Juin 2017 - 9:56

» Bienvenue à Virtualalan !
par UltraVox Jeu 22 Juin 2017 - 9:18

» Concours de Morpions
par jjn4 Jeu 22 Juin 2017 - 0:04

» ShortName$(F) [Cloturé]
par papydall Mer 21 Juin 2017 - 16:19

» Remplacer espace par tiret dans noms des dossiers / fichiers
par papydall Mer 21 Juin 2017 - 15:27

» Menu personalisé avec icones et menu contextuel
par Laurent (Minibug) Mer 21 Juin 2017 - 12:44

» La liste des choses à faire ...
par Jack Mar 20 Juin 2017 - 22:49

» Quoi de neuf à propos de Goric 3D ? (@Jack)
par UltraVox Mar 20 Juin 2017 - 21:06

» Nom court et anti fenetre dos
par silverman Mar 20 Juin 2017 - 18:31

» Ludothèque Panoramic
par jjn4 Mar 20 Juin 2017 - 18:09

» Proposition à la communauté
par Yannick Mar 20 Juin 2017 - 15:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Juin 2017
LunMarMerJeuVenSamDim
   1234
567891011
12131415161718
19202122232425
2627282930  
CalendrierCalendrier

Partagez | 
 

 Compilateur FBPano

Voir le sujet précédent Voir le sujet suivant Aller en bas 
Aller à la page : Précédent  1, 2, 3, 4, 5, 6, 7, 8, 9
AuteurMessage
Jicehel

avatar

Nombre de messages : 5838
Age : 44
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: Compilateur FBPano   Lun 22 Mai 2017 - 11:43

Trop bien Wink vraiment pratique
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
jean_debord

avatar

Nombre de messages : 725
Age : 62
Localisation : Limoges
Date d'inscription : 21/09/2008

MessageSujet: Re: Compilateur FBPano   Sam 27 Mai 2017 - 11:47

Nouvelle version 0.22
---------------------

1. Ajout des glissières et barres de défilement

2. Modifications des instructions FILE_READ et FILE_WRITE ; ajout des instructions FILE_WRITE_CSV et FILE_READ_CSV (voir documentation, chapitre "Les fonctions non graphiques de FBPano", paragraphe "Fichiers texte")

3. Nouveaux programmes de démonstration (dans exemples\FLTK) :

   ex70.bas : glissières
   ex71.bas : barres de défilement
   ex72.bas : carnet d'adresses

4. Installation : les fichiers sont sur mon WebDav, dossier FBPano.

   * Si vous avez installé la version 0.21 : ne pas désinstaller ; exécutez le programme de mise à jour update_021_to_022.exe en gardant le même répertoire d'installation que pour la 0.21

   * Si vous avez une version antérieure à 0.21 : désinstallez cette version et installez la version 0.22 complète avec le programme setup_022.exe
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.unilim.fr/pages_perso/jean.debord/index.htm
jean_debord

avatar

Nombre de messages : 725
Age : 62
Localisation : Limoges
Date d'inscription : 21/09/2008

MessageSujet: Re: Compilateur FBPano   Mer 31 Mai 2017 - 11:26

Voici un premier essai d'adaptation du programme "Esthétique polaire" de Papydall :

Code:

' *******************************************************************
'                      Esthetique polaire
'                          Par Papydall
'             Adaptation pour FBPano par J. Debord
' *******************************************************************

' -------------------------------------------------------------------
' Constantes et variables
' -------------------------------------------------------------------

dim s(360), c(360)  ' Table des sinus et cosinus

dim obj%            ' Indice d'un objet
dim cap$            ' Label d'un objet

' -------------------------------------------------------------------
' Creation de l'interface graphique
' -------------------------------------------------------------------

enum GUI
  fmMain,
  alEq1, alEq2
  ct_p, ct_u, ct_v, ct_q, ct_w, ct_z,
  rd_p1, rd_p2, rd_u1, rd_u2, rd_v1, rd_v2,
  rd_q1, rd_q2, rd_w1, rd_w2, rd_z1, rd_z2,
  spSize,
  edFile,
  btGraph,
  alImage
end enum

set_scheme "gtk+"

form fmMain, 100, 100, 720, 500, "Esthetique polaire"

alpha alEq1, 10, 10, 200, 30, "x = r (1 + p.u) v", , FL_FLAT_BOX
alpha alEq2, 10, 40, 200, 30, "y = r (1 + q.w) z", , FL_FLAT_BOX

container ct_p, 50, 100, 150, 35, "p "

container_begin ct_p
  radio rd_p1,  55, 105, 20, 25, "+1"
  radio rd_p2, 130, 105, 20, 25, "-1"
container_end ct_p

container ct_u, 50, 145, 150, 35, "u "

container_begin ct_u
  radio rd_u1,  55, 150, 20, 25, "cos(a)"
  radio rd_u2, 130, 150, 20, 25, "sin(a)"
container_end ct_u

container ct_v, 50, 190, 150, 35, "v "

container_begin ct_v
  radio rd_v1,  55, 195, 20, 25, "cos(a)"
  radio rd_v2, 130, 195, 20, 25, "sin(a)"
container_end ct_v

container ct_q, 50, 235, 150, 35, "q "

container_begin ct_q
  radio rd_q1,  55, 240, 20, 25, "+1"
  radio rd_q2, 130, 240, 20, 25, "-1"
container_end ct_q

container ct_w, 50, 280, 150, 35, "w "

container_begin ct_w
  radio rd_w1,  55, 285, 20, 25, "cos(a)"
  radio rd_w2, 130, 285, 20, 25, "sin(a)"
container_end ct_w

container ct_z, 50, 325, 150, 35, "z "

container_begin ct_z
  radio rd_z1,  55, 330, 20, 25, "cos(a)"
  radio rd_z2, 130, 330, 20, 25, "sin(a)"
container_end ct_z

spin spSize, 120, 380, 90, 25, "Taille de l'image "

edit edFile, 110, 420, 100, 25, "Fichier (*.png) "

button btGraph, 10, 460, 200, 30, "Tracer", , T_Button_Return

alpha alImage, 230, 10, 480, 480, , , FL_FLAT_BOX

' -------------------------------------------------------------------
' Proprietes des objets
' -------------------------------------------------------------------

for obj = alEq1 to alEq2
  color_fl obj, FL_DARK_GREEN
  color_caption_fl obj, FL_YELLOW
  font_caption obj, FL_HELVETICA_BOLD, 20
next obj

for obj = ct_p to ct_z
  caption_align obj, FL_ALIGN_LEFT
  font_caption obj, FL_HELVETICA, 20
next obj

mark_on rd_p1
mark_on rd_u1
mark_on rd_v1

mark_on rd_q2
mark_on rd_w2
mark_on rd_z2

color_text_fl spSize, FL_RED
position_range spSize, 100, 450, 10
position spSize, 400

color_text_fl edFile, FL_RED
text edFile, "polar"

color_fl alImage, FL_BLACK

' -------------------------------------------------------------------
' Affectation des sous-programmes aux evenements
' -------------------------------------------------------------------

on_click btGraph, Graph

' -------------------------------------------------------------------
' Lancement de l'application
' -------------------------------------------------------------------

LUT s(), c()

start fmMain

' -------------------------------------------------------------------
' Sous-programmes utilitaires
' -------------------------------------------------------------------

sub LUT (s(), c())
' Look-Up Table : Sinus et Cosinus pour les angles de 0 a 360 degres

  dim i%, a

  for i = 0 to 360
    a = i * 0.01745329252  ' radians
    s(i) = sin(a)
    c(i) = cos(a)
  next i
end sub

sub Calc (r, a%, x, y)
' Calcul des coordonnees (x,y) d'un point
' en fonction du rayon r et de l'angle a en degres

  dim p%, q%, u, v, w, z

  if checked(rd_u1) then u = c(a) else u = s(a)
  if checked(rd_v1) then v = c(a) else v = s(a)
  if checked(rd_w1) then w = c(a) else w = s(a)
  if checked(rd_z1) then z = c(a) else z = s(a)

  if checked(rd_p1) then x = 1 + u else x = 1 - u
  if checked(rd_q1) then y = 1 + w else y = 1 - w

  x = r * x * v
  y = r * y * z
end_sub

function GetColor% (r, a%)
' Calcule la couleur dans le systeme HSV

  dim h, s, v, rr%, gg%, bb%
  
  h = a
  s = 1 - 0.3 * r
  v = 1 - 0.2 * r

  HSVtoRGB h, s, v, rr, gg, bb
  GetColor = RGB(rr, gg, bb)
end_function  

' -------------------------------------------------------------------
' Sous-programmes associes aux evenements
' -------------------------------------------------------------------

sub Graph ()

  const xmin = -1, xmax = 1
  const ymin = -1, ymax = 1

  const stp = 1 / 256

  dim size%                ' Taille de l'image
  dim a%, r, x, y
  dim filename$

  size = get_position(spSize)
  filename = trim(get_text(edFile))

  fb_img_begin 0, size, size
    fb_window xmin, ymin, xmax, ymax

    for r = 0 to 0.5 step stp
      for a = 0 to 360
        Calc r, a, x, y
        fb_pen_color GetColor(r, a)
        fb_point x, y
        fb_point -x, y
      next a
    next r

    if filename <> "" then fb_save filename + ".png"
  fb_img_end

  fb_set_img alImage, 0
  redraw
end_sub



La coloration est faite dans le système HSV, l'angle "a" déterminant la teinte (position sur le cercle de couleurs).

On peut choisir la taille de l'image.

L'image est sauvegardée sous forme de fichier PNG avec fond transparent, ce qui permet de l'utiliser éventuellement comme "sprite" ... pour faire des vaisseaux "aliens" par exemple Smile

Il y a encore quelques bricoles à améliorer ...

Cela pourrait faire l'objet d'un article ; je vois déjà le titre : "56 variations sur un thème de Papydall" Smile
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.unilim.fr/pages_perso/jean.debord/index.htm
papydall

avatar

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

MessageSujet: Re: Compilateur FBPano   Mer 31 Mai 2017 - 15:56

Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
jean_debord

avatar

Nombre de messages : 725
Age : 62
Localisation : Limoges
Date d'inscription : 21/09/2008

MessageSujet: Re: Compilateur FBPano   Jeu 1 Juin 2017 - 11:14

Merci papydall Smile

Voici une version légèrement améliorée qui permet de choisir le nombre de courbes que l'on veut superposer.

Code:

' *******************************************************************
'                      Esthetique polaire
'                          Par Papydall
'             Adaptation pour FBPano par J. Debord
' *******************************************************************

' -------------------------------------------------------------------
' Constantes et variables
' -------------------------------------------------------------------

dim s(360), c(360)  ' Table des sinus et cosinus

dim obj%            ' Indice d'un objet
dim cap$            ' Label d'un objet

' -------------------------------------------------------------------
' Creation de l'interface graphique
' -------------------------------------------------------------------

enum GUI
  fmMain,
  alEq1, alEq2
  ct_p, ct_u, ct_v, ct_q, ct_w, ct_z,
  rd_p1, rd_p2, rd_u1, rd_u2, rd_v1, rd_v2,
  rd_q1, rd_q2, rd_w1, rd_w2, rd_z1, rd_z2,
  spNCurv, spSize,
  edFile,
  btGraph,
  alImage
end enum

set_scheme "gtk+"

form fmMain, 100, 100, 720, 500, "Esthetique polaire"

alpha alEq1, 10, 10, 200, 30, "x = r (1 + p.u) v", , FL_FLAT_BOX
alpha alEq2, 10, 40, 200, 30, "y = r (1 + q.w) z", , FL_FLAT_BOX

container ct_p, 30, 80, 180, 35, "p "

container_begin ct_p
  radio rd_p1,  40, 85, 20, 25, "+1"
  radio rd_p2, 130, 85, 20, 25, "-1"
container_end ct_p

container ct_u, 30, 125, 180, 35, "u "

container_begin ct_u
  radio rd_u1,  40, 130, 20, 25, "cos(a)"
  radio rd_u2, 130, 130, 20, 25, "sin(a)"
container_end ct_u

container ct_v, 30, 170, 180, 35, "v "

container_begin ct_v
  radio rd_v1,  40, 175, 20, 25, "cos(a)"
  radio rd_v2, 130, 175, 20, 25, "sin(a)"
container_end ct_v

container ct_q, 30, 215, 180, 35, "q "

container_begin ct_q
  radio rd_q1,  40, 220, 20, 25, "+1"
  radio rd_q2, 130, 220, 20, 25, "-1"
container_end ct_q

container ct_w, 30, 260, 180, 35, "w "

container_begin ct_w
  radio rd_w1,  40, 265, 20, 25, "cos(a)"
  radio rd_w2, 130, 265, 20, 25, "sin(a)"
container_end ct_w

container ct_z, 30, 305, 180, 35, "z "

container_begin ct_z
  radio rd_z1,  40, 310, 20, 25, "cos(a)"
  radio rd_z2, 130, 310, 20, 25, "sin(a)"
container_end ct_z

spin spNCurv,  120, 355,  90,  25, "Nb de courbes "
spin spSize,   120, 390,  90,  25, "Taille de l'image "
edit edFile,   120, 425,  90,  25, "Fichier (*.png) "
button btGraph, 10, 460, 200,  30, "Tracer", , T_Button_Return
alpha alImage, 230,  10, 480, 480, , , FL_FLAT_BOX

' -------------------------------------------------------------------
' Proprietes des objets
' -------------------------------------------------------------------

for obj = alEq1 to alEq2
  color_fl obj, FL_DARK_GREEN
  color_caption_fl obj, FL_YELLOW
  font_caption obj, FL_HELVETICA_BOLD, 20
next obj

for obj = ct_p to ct_z
  caption_align obj, FL_ALIGN_LEFT
  font_caption obj, FL_HELVETICA, 20
next obj

mark_on rd_p1
mark_on rd_u1
mark_on rd_v1

mark_on rd_q2
mark_on rd_w2
mark_on rd_z2

for obj = spNCurv to edFile
  color_text_fl obj, FL_RED
next obj

position_range spNCurv, 1, 500, 1
position spNCurv, 100
  
position_range spSize, 100, 450, 10
position spSize, 400

text edFile, "polar"

color_fl alImage, FL_BLACK

' -------------------------------------------------------------------
' Affectation des sous-programmes aux evenements
' -------------------------------------------------------------------

on_click btGraph, Graph

' -------------------------------------------------------------------
' Lancement de l'application
' -------------------------------------------------------------------

LUT s(), c()

start fmMain

' -------------------------------------------------------------------
' Sous-programmes utilitaires
' -------------------------------------------------------------------

sub LUT (s(), c())
' Look-Up Table : Sinus et Cosinus pour les angles de 0 a 360 degres

  dim i%, a

  s(0) = 0
  c(0) = 1
  for i = 1 to 360
    a = i * 0.01745329252  ' radians
    s(i) = sin(a)
    c(i) = cos(a)
  next i
end sub

sub Calc (a%, x, y)
' Calcul des coordonnees d'un point de la courbe de reference (r = 1)
' en fonction de l'angle a en degres

  dim u, v, w, z

  if checked(rd_u1) then u = c(a) else u = s(a)
  if checked(rd_v1) then v = c(a) else v = s(a)
  if checked(rd_w1) then w = c(a) else w = s(a)
  if checked(rd_z1) then z = c(a) else z = s(a)

  if checked(rd_p1) then x = 1 + u else x = 1 - u
  if checked(rd_q1) then y = 1 + w else y = 1 - w

  x = x * v
  y = y * z
end_sub

function GetColor% (r, a%)
' Calcule la couleur dans le systeme HSV

  dim h, s, v, rr%, gg%, bb%

  h = a
  s = 1
  v = 1

  HSVtoRGB h, s, v, rr, gg, bb
  GetColor = RGB(rr, gg, bb)
end_function

' -------------------------------------------------------------------
' Sous-programmes associes aux evenements
' -------------------------------------------------------------------

sub Graph ()

  const xmin = -2, xmax = 2
  const ymin = -2, ymax = 2

  dim nc%             ' Nb de courbes              
  dim size%           ' Taille de l'image
  dim x(360), y(360)  ' Pts de la courbe de reference (r = 1)
  dim a%, r, xr, yr   ' Parametres et pts d'une courbe quelconque
  dim i%              ' Indice de la courbe
  dim dr              ' Increment de r
  dim filename$       ' Nom du fichier PNG

  nc = get_position(spNCurv)
  size = get_position(spSize)
  filename = trim(get_text(edFile))

  dr = 1 / nc
  
  ' Calcul de la courbe de refernce
  for a = 0 to 360
    Calc a, x(a), y(a)
  next a

  ' Trace des courbes
  fb_img_begin 0, size, size
    fb_window xmin, ymin, xmax, ymax

    for i = 1 to nc
      r = i * dr
      for a = 0 to 360
        xr = x(a) * r
        yr = y(a) * r
        fb_pen_color GetColor(r, a)
        fb_point xr, yr
        fb_point -xr, yr
      next a
    next i

    if filename <> "" then fb_save filename + ".png"
  fb_img_end

  fb_set_img alImage, 0
  redraw
end_sub

Il est intéressant de pouvoir tracer un petit nombre de courbes, ou même comme ici une seule courbe pour avoir la forme de base.



Le calcul a été amélioré : on calcule d'abord les coordonnees pour une courbe de référence (r = 1) ; pour tracer les autres courbes il suffit de multiplier ces coordonnees par r.

Ceci entraîne une certaine accélération. Le programme PANORAMIC pourrait peut-être en profiter ?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.unilim.fr/pages_perso/jean.debord/index.htm
papydall

avatar

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

MessageSujet: Re: Compilateur FBPano   Jeu 1 Juin 2017 - 15:28

Merci Jean.

A la prochaine !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
jean_debord

avatar

Nombre de messages : 725
Age : 62
Localisation : Limoges
Date d'inscription : 21/09/2008

MessageSujet: Re: Compilateur FBPano   Mer 21 Juin 2017 - 21:03

Nouvelle version 0.23
---------------------

1. Ajout des CONTAINER_TAB et des TABS



Pour les explications voir la documentation : fbpano.htm --> Les objets FLTK (3)

2. Nouveaux programmes de démonstration (dans exemples\FLTK) :

   ex73.bas : "Esthetique polaire" d'après Papydall
   ex74.bas : Démonstration des TABS

3. Nouveaux programmes de fractales (dans exemples\fractal\panomand) :

   biomorph.bas : pour les biomorphes de Pickover
   newton.bas   : pour la méthode de Newton

4. Installation : les fichiers sont sur mon WebDav, dossier FBPano.

   * Si vous avez installé la version 0.22 : ne pas désinstaller ; exécutez le programme de mise à jour update_022_to_023.exe en gardant le même répertoire d'installation que pour la 0.22

   * Si vous avez une version antérieure à 0.22 : désinstallez cette version et installez la version 0.23 complète avec le programme setup_023.exe
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.unilim.fr/pages_perso/jean.debord/index.htm
papydall

avatar

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

MessageSujet: Re: Compilateur FBPano   Jeu 22 Juin 2017 - 1:34

J’ai fais la mise à jour de la version 023
Merci Jean.
A propos, comment connaitre la version de FBPano  que l’on a installée?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
jean_debord

avatar

Nombre de messages : 725
Age : 62
Localisation : Limoges
Date d'inscription : 21/09/2008

MessageSujet: Re: Compilateur FBPano   Jeu 22 Juin 2017 - 9:56

Pour le moment, le seul moyen c'est d'afficher le fichier fbpano.htm

Je ferai en sorte que le programme start_fbpano.exe écrive le numéro de version.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.unilim.fr/pages_perso/jean.debord/index.htm
Contenu sponsorisé




MessageSujet: Re: Compilateur FBPano   

Revenir en haut Aller en bas
 
Compilateur FBPano
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 9 sur 9Aller à la page : Précédent  1, 2, 3, 4, 5, 6, 7, 8, 9
 Sujets similaires
-
» Compilateur FBPano
» compilateur
» Décompilateur GM ? [résolu]
» Problème compilateur C++ Clang
» Compilateur --> ERREUR ’-‘ is not a valid integer value

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: Grands projets réalisés avec Panoramic :: Compilateur FBPANO-
Sauter vers: