Page 2 sur 3

Re: Petit cercle "emflammé"

Publié : jeu. 18/août/2022 22:04
par SPH
Ollivier a écrit : jeu. 18/août/2022 20:55 @sph

peut-être que des fois tes questions sont un peu bizarres. Je ne te juge pas (dixeris "mytho ou à plaindre" : paies ton choix...).
Mes questions sont peut etre bizzare parce que tu a des reponses bizzares. Vivre sous un escalier avec un ordi et du 12V, ca me laisse plus que perplexe. Alors, moi, SPH, comment formuler une question "normale" !!?

Bref, je n'insisterais plus, désolé pour la gene occasionnée :idea:

Re: Petit cercle "emflammé"

Publié : jeu. 18/août/2022 23:15
par Ollivier
Petit rappel de la réalité :

Jour -7 : Des projets qui obtiennent validation
Jour 1 : Des magasins vidés
Jour 2 : Une isolation sanitaire par n'importe quel procédé.

Puis des mails successifs qui informent que les projets n'existeront jamais.

Laisse tomber tes seuls deux choix aussi insolites que moqueurs (Réponse 1/2 = Se plaindre; Réponse 2/2 = Être un mythomane).

Ça s'appelle la vie personnelle, et tu n'es pas autorisé à en répéter abusivement un détail passager, à moins que je vois ton adresse mail dans la messagerie privé du forum anglais.

Re: Petit cercle "emflammé"

Publié : ven. 19/août/2022 10:47
par GallyHC
Bonjour;

@SPH > vous êtes tout les deux sur des monologues a deux, donc aucun intérêt pour l'un comme pour l'autre.

@Ollivier > Après ce n'est pas une grande révélation (beaucoup, tout comme moi le savent).

Cordialement,
GallyHC

Re: Petit cercle "emflammé"

Publié : ven. 19/août/2022 11:37
par SPH
Ollivier, je n'ai rien contre toi; je tiens à te rassurer. Simplement, j'ai toujours pensé (avant d'avoir un doute récement) qu'a tes dires, tu étais quelqu'un à plaindre. :idea:

Vala vala :P

Re: Petit cercle "emflammé"

Publié : ven. 19/août/2022 21:46
par Ollivier
Mon pseudo c'est Olli sur le fofo anglais. Ça sera mieux de converser en mp sph.

Un petit bonjour à gallyhc.

Si quelqu'un a envie de << prendre le flambeau >> en présentant un petit code, ça sera sûrement intéressant.

Re: Petit cercle "enflammé"

Publié : lun. 22/août/2022 20:07
par djes
threedslider a écrit : dim. 24/juil./2022 14:29 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 ?
Chouette, un nouvel afficionado des sinus (atchoum)

Ollivier> Super ton effet ! :o

Re: Petit cercle "emflammé"

Publié : jeu. 25/août/2022 0:21
par Ollivier
Merci djes ! À la base, je voulais un papier vieilli par un algo. - Ça choisit un pixel au hasard
- Ça augmente une ou plusieurs des composantes de la couleur de ce pixel
- Avec la couleur obtenue, ça affiche un trident grâce à line.

Conclusion : beaucoup plus rapide que prévu, le papier s'est mis à brûler.

Re: Petit cercle "emflammé"

Publié : jeu. 25/août/2022 6:19
par nemerod
Bon on va faire plus simple, au moins je sais que tous le monde sera du meme avis

Code : Tout sélectionner

OpenWindow(0,100,100,512,800,"test defo")
CanvasGadget(0,0,0,512,800)
CreateImage(0,512,800,24,0)
Repeat:eee=WindowEvent()
  If eee=0:
    mpoafs1=ElapsedMilliseconds()
    If (mpoafs1-mpoafs2)>=20:mpoafs2=mpoafs1
      fpsm=ElapsedMilliseconds()
      If StartDrawing(CanvasOutput(0))
        If p=2:p=0
          Box(0,0,512,800,0)
          GrabDrawingImage(0,0,0,512,800)
        EndIf
        DrawAlphaImage(ImageID(0),  0,  0,$e0)
        DrawAlphaImage(ImageID(0), -2, -2,$90)
        DrawAlphaImage(ImageID(0),  2, -2,$60)
        DrawingMode($10)
        If p=1
          mx=WindowMouseX(0)-1
          my=WindowMouseY(0)-1
        EndIf
        If lll=1:lll=0
          rx=Random(2)
          ry=Random(2)
        Else:lll+1
        EndIf
        x=mx+rx
        y=my+ry
        c=RGBA($ff,Random(2)<<6,$00,$ff)
        Circle(x,y, 8,c|$ff004000)
        Circle(x,y, 5,  $ff0000ff)
        For a = 0 To 511
          If Random(2)=0
            Line(a,798,2,2,RGBA($ff,Random(2)<<6,$00,$ff))
          Else
            Line(a,798,2,2,$ff000000)
          EndIf
        Next:a=0
        GrabDrawingImage(0,0,0,512,800)
        For a = 0 To 512 Step 2
          If tm=255:tm=0:Else:tm+1:EndIf
          tz=((tm*(512-a))/256)
          For b = 0 To 360 Step 9
            m=3
            If a<128
              m=((100*Sin(Radian(a)))/100)*100
            EndIf
            x=(Cos(Radian(b))*m)+(Sin(Radian(tz*1.40625))*2)
            y=(Sin(Radian(b))*((m+1)/5))+a
            Line(x+256,y+256,1,1,$FFFF008D)
          Next:b=0
        Next:a=0
        fpst1+1
        If fpsb<>fpsa:fpsb=fpsa
          fps1=fpst1:fpst1=0
          fps2=fpst2:fpst2=0
          fps3=fpst3:fpst3=0
          fps4=fpst3:fpst4=0
        EndIf:fpsa=Date()
        DrawText(10,10,RSet(Str(fps1       ),6,"0")+" I",$ff00ffff,$00000000)
        DrawText(10,30,RSet(Str(fps2       ),6,"0")+" G",$ff00ffff,$00000000)
        DrawText(10,50,RSet(Str(fps3       ),6,"0")+" E",$ff00ffff,$00000000)
        DrawText(10,70,RSet(Str(ElapsedMilliseconds()-fpsm),6,"0")+" ms",$ff00ffff,$00000000)
        StopDrawing()
      EndIf
      mpoafs2=mpoafs1
    Else:Delay(1)
    EndIf
  Else:fpst3+1
    Select eee
      Case $201:p=1
      Case $202:p=0
      Case $203:p=2
    EndSelect
  EndIf:fpst2+1
Until eee=$10
Image

mode d'emplois
simple clic = déplace la petit boule de feu
double clic = reset le background

Re: Petit cercle "emflammé"

Publié : mer. 31/août/2022 11:22
par Ollivier
Bonjour Nemerod, ça l'air sympa l'aperçu. Si j'ai un peu de temps, je teste ton code (et celui de threedslider). En tout cas, merci pour cet effort.

Re: Petit cercle "emflammé"

Publié : dim. 04/sept./2022 9:11
par Ollivier
Code testé : c'est artistique. Mais ça manque un peu de réalisme. Pour la source ponctuelle, c'est réussi, mais, est-ce que ça ne prend pas trop de ressources CPU. Peut-être donne un peu ton parcours de connaissances des librairies pureBasic : as-tu vu les sprites ? la librairie Ogre ? OpenGL ?

En tout cas, merci pour ce partage.

Re: Petit cercle "emflammé"

Publié : dim. 04/sept./2022 15:58
par nemerod
En faite, je ne voulais pas utilisé le GPU, je voulais 100% avec le CPU car quant un de mes code fais un rendu, meme une seul image, c'est sur une machine qui n'a pas de GPU, et n'a meme pas d'interface video

donc soit j'utilise pas les sprite, mais justement, je doit ne pas les utilisé, car je passe par une image et le openscreen ne marche pas et encore moins la version dans la fenêtre, mais rien d’interdit de changé un peu le code, pour l'avoir avec des sprite et un support du GPU

c'est cadeau et gratuit ;)
au moins j'ai donné se que j'avais sous la main, je peu que t'encouragé a modifier le code et de mixé avec d'autre chose :)

Re: Petit cercle "emflammé"

Publié : dim. 04/sept./2022 17:10
par Ollivier
Combien il consomme ton matériel ? Moi, je suis à 10W crête.

Re: Petit cercle "emflammé"

Publié : dim. 04/sept./2022 19:48
par SPH
@nemerod : "I", "G" et "E", ça veux dire quoi ?

Et cette fleur, elle représente quoi ?

Re: Petit cercle "emflammé"

Publié : sam. 10/sept./2022 0:12
par nemerod
le I veux dire le total d'image rendu durant la dernier seconde
le G veux dire le total d'event qu'il a traité durent la dernier seconde
le E veux dire le total d'event qu'il a eu sur la seconde
et le ms c'est le temps qu'il a prise pour faire tout les operation avec le cpu
ensuit la fleur c'est pas une fleur mais un champignon fais en direct par une suite d'operation, en temps normal se sont des operation que tu donne en temps normal a une sorti analogique pour l'avoir sur un oscilloscope

Re: Petit cercle "emflammé"

Publié : dim. 22/janv./2023 8:11
par threedslider
Ollivier a écrit : dim. 24/juil./2022 23:07 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)
Cool j'avais pas testé ton code, il est génial merci du partage :)

nemerod a écrit : jeu. 25/août/2022 6:19 Bon on va faire plus simple, au moins je sais que tous le monde sera du meme avis

Code : Tout sélectionner

OpenWindow(0,100,100,512,800,"test defo")
CanvasGadget(0,0,0,512,800)
CreateImage(0,512,800,24,0)
Repeat:eee=WindowEvent()
  If eee=0:
    mpoafs1=ElapsedMilliseconds()
    If (mpoafs1-mpoafs2)>=20:mpoafs2=mpoafs1
      fpsm=ElapsedMilliseconds()
      If StartDrawing(CanvasOutput(0))
        If p=2:p=0
          Box(0,0,512,800,0)
          GrabDrawingImage(0,0,0,512,800)
        EndIf
        DrawAlphaImage(ImageID(0),  0,  0,$e0)
        DrawAlphaImage(ImageID(0), -2, -2,$90)
        DrawAlphaImage(ImageID(0),  2, -2,$60)
        DrawingMode($10)
        If p=1
          mx=WindowMouseX(0)-1
          my=WindowMouseY(0)-1
        EndIf
        If lll=1:lll=0
          rx=Random(2)
          ry=Random(2)
        Else:lll+1
        EndIf
        x=mx+rx
        y=my+ry
        c=RGBA($ff,Random(2)<<6,$00,$ff)
        Circle(x,y, 8,c|$ff004000)
        Circle(x,y, 5,  $ff0000ff)
        For a = 0 To 511
          If Random(2)=0
            Line(a,798,2,2,RGBA($ff,Random(2)<<6,$00,$ff))
          Else
            Line(a,798,2,2,$ff000000)
          EndIf
        Next:a=0
        GrabDrawingImage(0,0,0,512,800)
        For a = 0 To 512 Step 2
          If tm=255:tm=0:Else:tm+1:EndIf
          tz=((tm*(512-a))/256)
          For b = 0 To 360 Step 9
            m=3
            If a<128
              m=((100*Sin(Radian(a)))/100)*100
            EndIf
            x=(Cos(Radian(b))*m)+(Sin(Radian(tz*1.40625))*2)
            y=(Sin(Radian(b))*((m+1)/5))+a
            Line(x+256,y+256,1,1,$FFFF008D)
          Next:b=0
        Next:a=0
        fpst1+1
        If fpsb<>fpsa:fpsb=fpsa
          fps1=fpst1:fpst1=0
          fps2=fpst2:fpst2=0
          fps3=fpst3:fpst3=0
          fps4=fpst3:fpst4=0
        EndIf:fpsa=Date()
        DrawText(10,10,RSet(Str(fps1       ),6,"0")+" I",$ff00ffff,$00000000)
        DrawText(10,30,RSet(Str(fps2       ),6,"0")+" G",$ff00ffff,$00000000)
        DrawText(10,50,RSet(Str(fps3       ),6,"0")+" E",$ff00ffff,$00000000)
        DrawText(10,70,RSet(Str(ElapsedMilliseconds()-fpsm),6,"0")+" ms",$ff00ffff,$00000000)
        StopDrawing()
      EndIf
      mpoafs2=mpoafs1
    Else:Delay(1)
    EndIf
  Else:fpst3+1
    Select eee
      Case $201:p=1
      Case $202:p=0
      Case $203:p=2
    EndSelect
  EndIf:fpst2+1
Until eee=$10
Image

mode d'emplois
simple clic = déplace la petit boule de feu
double clic = reset le background
Ah oué pareil j'avais pas testé celui là, trop cool aussi ^^


Est ce que parmi vous a réussi à faire le feu en OpenGL pur ?? :P