Petit cercle "emflammé"

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Avatar de l’utilisateur
threedslider
Messages : 452
Inscription : dim. 01/juil./2018 22:38

Petit cercle "emflammé"

Message par threedslider »

Comme avant pour le cercle complexe mais je voulais voir la possibilité de faire une autre transformation differente ^^

Code : Tout sélectionner

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Created by threedslider 24/07/2022
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

InitSprite()
InitKeyboard()

OpenWindow(1, 0,0,800,600,"Circle as little fire simulation", #PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(1),0,0,800,600,0,0,0)
SetFrameRate(30)

Repeat
  ExamineKeyboard()
  event = WindowEvent()
  ClearScreen(RGB(255,200,0))
  
  StartDrawing(ScreenOutput())
  For x = 0 To 3600
    
    move.f  +  1/10000
    
      wave_x.f =  Cos(move-x/200) * 120
      
      wave_y.f =  Sin(move-x/200) * 120
     
      Line( Cos(wave_x+move)*2+wave_x+400, Cos(wave_x)*4-Sin(wave_y)*8+wave_y+300, 1, 1, RGB(255, 0, 0) )
         
  Next
    
  StopDrawing()
  
  Delay(1) : FlipBuffers()
  
Until event = #PB_Event_CloseWindow Or KeyboardPushed(#PB_Key_Escape)
End
Avatar de l’utilisateur
threedslider
Messages : 452
Inscription : dim. 01/juil./2018 22:38

Re: Petit cercle "enflammé"

Message par threedslider »

Petite mise à jour, peut être avec cela c'est mieux ? Un peu plus correct comme enflammé je pense ^^

Code : Tout sélectionner

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Created by threedslider 24/07/2022
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

InitSprite()
InitKeyboard()

OpenWindow(1, 0,0,800,600,"Circle as little fire simulation", #PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(1),0,0,800,600,0,0,0)
SetFrameRate(30)

Repeat
  ExamineKeyboard()
  event = WindowEvent()
  ClearScreen(RGB(255,200,0))
  
  StartDrawing(ScreenOutput())
  For x = 0 To 3600
    
    move.f  +  1/10000
    
      wave_x.f =  Cos(move-x/200) * 120
      
      wave_y.f =  Sin(move-x/200) * 120
     
      Line( Cos(wave_x+move)*2+wave_x+400, Sin(wave_y)*8+wave_y+300, 1, 1, RGB(255, 0, 0) )
         
  Next
    
  StopDrawing()
  
  Delay(1) : FlipBuffers()
  
Until event = #PB_Event_CloseWindow Or KeyboardPushed(#PB_Key_Escape)
End
Lequel de ces deux codes est mieux ?
Avatar de l’utilisateur
SPH
Messages : 4937
Inscription : mer. 09/nov./2005 9:53

Re: Petit cercle "emflammé"

Message par SPH »

Ils sont assez similaire. Perso, ça ne ressemble pas vraiment à des flammes... 😅

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
threedslider
Messages : 452
Inscription : dim. 01/juil./2018 22:38

Re: Petit cercle "emflammé"

Message par threedslider »

je sais :roll: , c'est pour dire le mot entre parenthèse pour un "fake" simulation :mrgreen:
Avatar de l’utilisateur
falsam
Messages : 7317
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Petit cercle "emflammé"

Message par falsam »

SPH a écrit : dim. 24/juil./2022 14:57 Ils sont assez similaire. Perso, ça ne ressemble pas vraiment à des flammes... 😅
Fais un effort SPH. Un peu d'imagination hein ? :mrgreen:

Personnellement je vois un cercle par forte chaleur.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Petit cercle "emflammé"

Message par Ollivier »

Pas facile de représenter un élément tel que le feu...

Code : Tout sélectionner

DisableDebugger
InitSprite()
InitKeyboard()
ExamineDesktops()
OpenScreen(DesktopWidth(0), DesktopHeight(0), 32, "")
CreateSprite(0, ScreenWidth() / 4, ScreenHeight() / 4)
Procedure drawAdditivePixel(xArea, yArea, wArea, hArea, ci)
    x = xArea + Random(wArea - 1)
    y = yArea + Random(hArea - 1)
    pc = ci & $FFFFFFFF
    nc = ci >> 32 & $FFFFFFFF
    ic = Point(x, y)
    r = Red(ic)
    g = Green(ic)
    b = Blue(ic)
    pr = Red(pc)
    pg = Green(pc)
    pb = Blue(pc)
    nr = Red(nc)
    ng = Green(nc)
    nb = Blue(nc)
    r + pr - nr
    g + pg - ng
    b + pb - nb
    If r > 255: r = 0: EndIf
    If g > 255: g = 0: EndIf
    If b > 255: b = 0: EndIf
    If r < 0: r = 0: EndIf
    If g < 0: g = 0: EndIf
    If b < 0: b = 0: EndIf
    c = RGB(r, g, b)
    delta0 = 1
    delta1 = 2
    LineXY(x - delta0*2, y - delta0, x, y, c)
    LineXY(x, y, x + delta0, y - delta0, c)
    LineXY(x, y - delta1, x, y, c)
EndProcedure
Procedure drawBox(x, y, w, h, c)
        Box(x, y, w, h, c)
EndProcedure
Procedure updateFloor(sprite, *draw, xScale.D, yScale.D, wScale.D, hScale.D, c, times = 1)
    If StartDrawing(SpriteOutput(sprite) )
        x.I = Int(OutputWidth() * xScale)
        y.I = Int(OutputHeight() * yScale)
        w.I = Int(OutputWidth() * wScale)
        h.I = Int(OutputHeight() * hScale)
        For i = 1 To times
            CallFunctionFast(*draw, x, y, w, h, c)
        Next
        StopDrawing()
    EndIf
EndProcedure
updateFloor(0, @drawBox(), 0.0, 0.0, 1.0, 1.0, RGB($FF, $FF, $00) )
updateFloor(0, @drawAdditivePixel(), 0.0, 0.0, 1.0, 1.0, RGB(2, 0, 1) << 32 | RGB(8, 8, 8), 1 << 15)
ZoomSprite(0, ScreenWidth(), ScreenHeight() )
SpriteQuality(1)
Repeat
    Delay(2)
    ClearScreen(0)
    ExamineKeyboard()
    updateFloor(0, @drawAdditivePixel(), 0.0, 0.0, 1.0, 1.0, RGB(0, 0, 0) << 32 | RGB(1, 1, 1), 1 << 15)
    DisplaySprite(0, 0, 0)
    FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)
Avatar de l’utilisateur
SPH
Messages : 4937
Inscription : mer. 09/nov./2005 9:53

Re: Petit cercle "emflammé"

Message par SPH »

Haaa, bravo !
C'est toi qui l'a fait tout seul, comme un grand ?? :?

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Petit cercle "emflammé"

Message par Ollivier »

@sph

tout à fait. C'est récent. Les codes qui ne sont pas de moi, j'ajoute l'origine.

@threedslider

sans avoir pu tester ton code, je l'ai lu, et si tu veux faire des éléments à l'apparence "dynamique" et plutôt répétitive, tu as 3 outils possibles d'accélération matérielle : les sprites (comme ce code), le gadget openGL et Ogre3D. Ça libère ton CPU et c'est la carte graphique qui prend le relais.

Ici, j'utilise mal l'accélération matérielle : c'est fait exprès pour simplifier le code et donc de façon pédagogique faire assimiler le fonctionnement. J'enregistre continuellement la séquence (dessin "draw' = pas d'accélération graphique = CPU utilisé) dans un seul sprite (GPU).

L'étape ultime consiste à enregistrer une dizaine de sprites puis répéter leur affichage (GPU) indéfiniment, sans redessiner les dessins dans chaque sprite.
Avatar de l’utilisateur
threedslider
Messages : 452
Inscription : dim. 01/juil./2018 22:38

Re: Petit cercle "emflammé"

Message par threedslider »

Ollivier a écrit : lun. 25/juil./2022 6:45 ... si tu veux faire des éléments à l'apparence "dynamique" et plutôt répétitive, tu as 3 outils possibles d'accélération matérielle : les sprites (comme ce code), le gadget openGL et Ogre3D. Ça libère ton CPU et c'est la carte graphique qui prend le relais.
Oui je vais explorer les possibilités...peut être avec OpenGL mais je verrais sa.
Avatar de l’utilisateur
TazNormand
Messages : 1297
Inscription : ven. 27/oct./2006 12:19
Localisation : Calvados (14)

Re: Petit cercle "emflammé"

Message par TazNormand »

Salut à tous

@Ollivier : tu me surprends régulièrement, quand on te lit parfois, on a parfois l'impression que tu vis au fin fond d'une "grotte" (allusion au fait qu'il y a quelques années tu nous parlais d'un PC branché sur batterie pour toucher à PB), mais tu nous ponds des codes dignes des démomakers sur Atari ST et Amiga dans les années 80-90.

Je suis curieux de connaître ton parcours
Image
Image
Avatar de l’utilisateur
SPH
Messages : 4937
Inscription : mer. 09/nov./2005 9:53

Re: Petit cercle "emflammé"

Message par SPH »

TazNormand a écrit : sam. 13/août/2022 16:33 @Ollivier : tu me surprends régulièrement, quand on te lit parfois, on a parfois l'impression que tu vis au fin fond d'une "grotte" (allusion au fait qu'il y a quelques années tu nous parlais d'un PC branché sur batterie pour toucher à PB), mais tu nous ponds des codes dignes des démomakers sur Atari ST et Amiga dans les années 80-90.

Je suis curieux de connaître ton parcours
Je dirais pareil. D'ailleurs, j'ai deja écris a Ollivier mais il ne m'a pas répondu. Il a trouvé un prétexte : trop de messages.
J'ai souvenir qu'il m'a dit vivre sous un escalier avec une alim de 12v.

Donc, je ne sais qu'en penser : ollivier le mytho ou ollivier l'homme a plaindre ? :?: :?: :arrow: :|

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Petit cercle "emflammé"

Message par Ollivier »

TazNormand a écrit : sam. 13/août/2022 16:33 Salut à tous

@Ollivier : tu me surprends régulièrement, quand on te lit parfois, on a parfois l'impression que tu vis au fin fond d'une "grotte" (allusion au fait qu'il y a quelques années tu nous parlais d'un PC branché sur batterie pour toucher à PB), mais tu nous ponds des codes dignes des démomakers sur Atari ST et Amiga dans les années 80-90.

Je suis curieux de connaître ton parcours
Moi, ma plus belle démo, c'est juste un trait blancs de 4 pixels qui s'affiche en 640x480 alors que le 80386 a basculé en mode protégé grâce au fichier DEBUG.COM et que la seule touche qui, désormais ne buguera pas, c'est le bouton RESET !

Et je te jure, je suis toujours en 12V. C'est précisément ce que je regarde quand je dois renouveler ma bouse. Parce que combien de fois j'ai regardé une batterie de voiture, un panneau solaire, un allume-cigare, avec un ordinateur éteint à côté parce que c'était du 18V ou du 14.412346V, ou carrément du 220V. Trop de fois !
Avatar de l’utilisateur
SPH
Messages : 4937
Inscription : mer. 09/nov./2005 9:53

Re: Petit cercle "emflammé"

Message par SPH »

Ollivier, où l'art de l'esquive ! 8O

Tu ne réponds pas aux questions qu'on te pose !
Par exemple, ma question est : as tu vécu sous un escalier ? (encore le cas ??)

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Marc56
Messages : 2196
Inscription : sam. 08/févr./2014 15:19

Re: Petit cercle "emflammé"

Message par Marc56 »

Et je te jure, je suis toujours en 12V. C'est précisément ce que je regarde quand je dois renouveler ma bouse. Parce que combien de fois j'ai regardé une batterie de voiture, un panneau solaire, un allume-cigare, avec un ordinateur éteint à côté parce que c'était du 18V ou du 14.412346V, ou carrément du 220V. Trop de fois !
Convertisseur 12V -> 19v ~= 25€

Et si tu veux du matériel 12V hors portable, il y a les MiniPC (12V 5W, j'en utilise plusieurs comme serveur et NAS) qui sont en fait des carte mère de portable et que tu associe avec moniteur 12V (en général un peu plus cher que leurs équivalents 220v)
:wink:
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Petit cercle "emflammé"

Message par Ollivier »

@sph

peut-être que des fois tes questions sont un peu bizarres. Je ne te juge pas (dixeris "mytho ou à plaindre" : paies ton choix...). Pour ça, tu as facebook et autres. Et j'ai dit si tu veux communiquer par mail tu envoies un petit mot avec ton adresse mail en mp sur le forum anglais.

@marc56

Les convertisseurs c'est de la perte et donc à éviter. Je n'en suis pas au stade de créer un NAS (pas d'utilité personnelle), en tout cas, félicitation. C'est une sorte de mini-pc que j'ai : il a juste un grand écran, et un grand clavier. 32giga de flash et 4 giga de RAM, c'est "mini". Un russe (très emmerdé actuellement) m'avait dit << c'est dans les configurations pourries qu'on fait les meilleurs algo, puisqu'il faut se surpasser. >> Et c'est à peu près le cas, puisque les quelques codes sources fournis de ma part ont été programmés sur des bouses. C'est même plutôt gratifiant de voir des membres tester un code source avec une configuration dernier cri. J'ai une LED qui m'indique combien je consomme en instantané. Vous avez le gestionnaire de tâche ou autre. C'est toujours agréable de voir un algo fonctionner, d'être plutôt fluide et de voir qu'il ne consomme que peu. Ça veut dire que greffé à d'autres systèmes, les chances de fiabilité ne sont pas évincées.

Merci à marc56, mais aussi threedslider dans ce sujet qui ont répondu, ça m'encourage à créer un sujet tout autre, car j'ai un petit code inachevé depuis quelques mois, et je reporte beaucoup. J'ai pourtant la certitude qu'il peut être utile à d'autre (même sph évidemment), que ça peut vous inspirer...
Répondre