Page 1 sur 3
Petit cercle "emflammé"
Publié : dim. 24/juil./2022 11:28
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
Re: Petit cercle "enflammé"
Publié : dim. 24/juil./2022 14:29
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 ?
Re: Petit cercle "emflammé"
Publié : dim. 24/juil./2022 14:57
par SPH
Ils sont assez similaire. Perso, ça ne ressemble pas vraiment à des flammes...

Re: Petit cercle "emflammé"
Publié : dim. 24/juil./2022 17:01
par threedslider
je sais

, c'est pour dire le mot entre parenthèse pour un "fake" simulation

Re: Petit cercle "emflammé"
Publié : dim. 24/juil./2022 18:19
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 ?
Personnellement je vois un cercle par forte chaleur.
Re: Petit cercle "emflammé"
Publié : dim. 24/juil./2022 23:07
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)
Re: Petit cercle "emflammé"
Publié : dim. 24/juil./2022 23:24
par SPH
Haaa, bravo !
C'est toi qui l'a fait tout seul, comme un grand ??

Re: Petit cercle "emflammé"
Publié : lun. 25/juil./2022 6:45
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.
Re: Petit cercle "emflammé"
Publié : ven. 12/août/2022 23:17
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.
Re: Petit cercle "emflammé"
Publié : sam. 13/août/2022 16:33
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
Re: Petit cercle "emflammé"
Publié : sam. 13/août/2022 20:34
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 ?

Re: Petit cercle "emflammé"
Publié : jeu. 18/août/2022 14:56
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 !
Re: Petit cercle "emflammé"
Publié : jeu. 18/août/2022 15:06
par SPH
Ollivier, où l'art de l'esquive !
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 ??)
Re: Petit cercle "emflammé"
Publié : jeu. 18/août/2022 20:10
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)

Re: Petit cercle "emflammé"
Publié : jeu. 18/août/2022 20:55
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...