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
» I Love You
par papydall Aujourd'hui à 2:58

» MARK_ON déclenche un événement ON_CLICK à la place de ...
par Jean Claude Hier à 18:08

» mise a jour calculatrice
par joeeee2017 Hier à 15:57

» [solved] 3D_LINE How to ?
par Jicehel Hier à 11:01

» Convertisseur de base 10 de 2 à 36
par gigi75 Mar 17 Oct 2017 - 18:49

» calculatrice avec touches movibles
par joeeee2017 Dim 15 Oct 2017 - 1:11

» CORTANA
par gigi75 Sam 14 Oct 2017 - 16:32

» Calculatrice
par Jean Claude Sam 14 Oct 2017 - 12:30

» Compilateur FBPano
par jean_debord Jeu 12 Oct 2017 - 9:53

» KGF_dll - nouvelles versions
par Klaus Mar 10 Oct 2017 - 18:49

» à propos de Panoramic_Editor [Résolu]
par Klaus Mar 10 Oct 2017 - 3:19

» Un petit "coucou" à tous les Panoramiciens !
par Jack Ven 6 Oct 2017 - 10:24

» Pourquoi le compilateur stagne
par mindstorm Mer 4 Oct 2017 - 20:38

» Panoramic ?
par Marc37 Mer 4 Oct 2017 - 0:39

» Premiers pas avec Arduino
par Marc37 Mer 4 Oct 2017 - 0:29

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Octobre 2017
LunMarMerJeuVenSamDim
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
CalendrierCalendrier

Partagez | 
 

 Biomorphes de Pickover

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
jean_debord

avatar

Nombre de messages : 756
Age : 63
Localisation : Limoges
Date d'inscription : 21/09/2008

MessageSujet: Biomorphes de Pickover   Sam 26 Avr 2014 - 17:35

Les Biomorphes de Pickover sont des ensembles de Julia coloriés de manière à imiter des animaux microscopiques. Le programme suivant en trace quelques-uns à partir de la formule classique z^2 + c. On peut obtenir des images différentes en changeant les coordonnées c_X et c_Y du paramètre c.

Tout ceci sera développé dans un prochain article.

Ce programme est pour le compilateur. Il marche aussi avec l'interpréteur, mais beaucoup plus lentement.

Code:

' **********************************************************************
' Biomorphe de Pickover
' **********************************************************************

' Variables definies par l'utilisateur

dim PicWidth%  : PicWidth%  = 640   : ' Taille de l'image en pixels
dim PicHeight% : PicHeight% = 480

dim c_X        : c_X = 0.4          : ' Coordonnees du parametre c
dim c_Y        : c_Y = 0.7

dim x0         : x0 = 0             : ' Coord. du centre de l'image
dim y0         : y0 = 0
dim Esc        : Esc = 10           : ' Rayon d'echappement
dim MaxIter%   : MaxIter% = 100     : ' Nb maxi d'iterations
dim ZoomFact   : ZoomFact = 1       : ' Facteur de zoom
dim ColorFact  : ColorFact = -2     : ' Facteur de coloration
dim CstVal     : CstVal = 0.9       : ' Luminosite HSV (constante)

' Variables supplementaires

dim HalfPicWidth%  : HalfPicWidth%  = PicWidth% / 2
dim HalfPicHeight% : HalfPicHeight% = PicHeight% / 2

dim Ln2   : Ln2   = log(2)
dim Esc2  : Esc2  = Esc * Esc
dim LnEsc : LnEsc = log(Esc)

dim H, S, V, R%, G%, B%  : ' Parametres de coloration

dim AbsColor             : ' abs(ColorFact)
dim ScaleFact            : ' Facteur d'echelle = distance entre 2 pixels

dim Nx%, Ny%             : ' Coordonnees d'un point (pixels)
dim xt, yt               : ' Coordonnees d'un point (algebriques)

dim Iter%                : ' Nb d'iterations
dim zn_x, zn_y           : ' Nombre complexe z(n)

' Variables utilisees en interne par les sous-programmes

dim II%, ZZ, FF, PP, QQ, TT, RR, GG, BB  : ' HSVtoRGB
dim M2, Dwell, Q, Angle, Radius          : ' MdbCol
dim x, y                                 : ' Biomorph

label Func, Biomorph, MdbCol, HSVtoRGB

' ----------------------------------------------------------------------
' Description des objets
' ----------------------------------------------------------------------

' Fenetre principale

left    0, 50
top     0, 50
width   0, PicWidth% + 70
height  0, PicHeight% + 120
caption 0, "Biomorphe de Pickover ... Veuillez patienter."

' Image

picture 1
left    1, 30
top     1, 40
width   1, PicWidth%
height  1, PicHeight%

2d_target_is 1

' ----------------------------------------------------------------------
' Programme principal
' ----------------------------------------------------------------------

ColorFact = 0.01 * ColorFact
AbsColor  = abs(ColorFact)
ScaleFact = 4 / (PicHeight% * ZoomFact)

for Ny% = 0 to PicHeight% - 1
  yt = y0 - ScaleFact * (Ny% - HalfPicHeight%)
  for Nx% = 0 to PicWidth% - 1
    xt = x0 + ScaleFact * (Nx% - HalfPicWidth%)
    gosub Biomorph
    2d_pen_color R%, G%, B%
    2d_point Nx%, Ny%
  next Nx%
next Ny%

caption 0, "Biomorphe de Pickover ... Terminé."

end

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

Func:
' Calcul de la fonction complexe : (zn_x, zn_y) = f(x, y) + c

  zn_x = x * x - y * y + c_X
  zn_y = 2 * x * y + c_Y
return

Biomorph:
' Iteration de la fonction complexe au point (xt, yt)

  zn_x = xt
  zn_y = yt
  
  Iter% = 0
  M2 = 0

  while Iter% < MaxIter% and M2 < Esc2

    x = zn_x
    y = zn_y

    gosub Func

    M2 = zn_x * zn_x + zn_y * zn_y
    
    Iter% = Iter% + 1

  end_while

  if abs(zn_x) < Esc or abs(zn_y) < Esc
    R% = 0
    G% = 0
    B% = 0
    return
  end_if

  gosub MdbCol
return

MdbCol:
' Determine la teinte (Hue, H) et la Saturation (S)
' d'apres le "Continuous dwell"

  Dwell = Iter% + log(LnEsc / log(M2)) / Ln2
  if Dwell <= 0 then Dwell = 0.1
  Q = log(Dwell) * AbsColor

  if Q < 0.5
    Q = 1 - 1.5 * Q
    Angle = 1 - Q
  else
    Q = 1.5 * Q - 0.5
    Angle = Q
  end_if

  Radius = sqr(Q)

' Si ColorFact > 0, assombrir une bande sur 2

  V = CstVal

  if (ColorFact > 0) and (odd(Iter%) > 0)
    V = 0.85 * V
    Radius = 0.667 * Radius
  end_if

  H = Angle * 10
  H = H - int(H)
  H = H * 360

  S = Radius - int(Radius)

' Convertir HSV en RGB

  gosub HSVtoRGB
return

HSVtoRGB:
' Conversion HSV --> RGB.
' Entree : H, S, V. Sortie : R%, G%, B%

  if S = 0
    R% = int(V * 255)
    G% = R%
    B% = R%
    return
  end_if

  ZZ  = H / 60
  II% = int(ZZ)
  FF  = ZZ - int(ZZ)
  PP  = V * (1 - S)
  QQ  = V * (1 - S * FF)
  TT  = V * (1 - S * (1 - FF))

  select II%
    case 0
      RR = V  : GG = TT : BB = PP
    case 1
      RR = QQ : GG = V  : BB = PP
    case 2
      RR = PP : GG = V  : BB = TT
    case 3
      RR = PP : GG = QQ : BB = V
    case 4
      RR = TT : GG = PP : BB = V
    case 5
      RR = V  : GG = PP : BB = QQ
  end_select

  R% = int(RR * 255)
  G% = int(GG * 255)
  B% = int(BB * 255)
return
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 : 5546
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Biomorphes de Pickover   Sam 26 Avr 2014 - 17:45

Très intéressant !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Jicehel

avatar

Nombre de messages : 5858
Age : 45
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: Biomorphes de Pickover   Sam 26 Avr 2014 - 18:56

Joli Wink
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Biomorphes de Pickover   

Revenir en haut Aller en bas
 
Biomorphes de Pickover
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC Le compilateur :: Le Compilateur-
Sauter vers: