Algo Black Hole Spiral

Sujets variés concernant le développement en PureBasic
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Re: Algo Black Hole Spiral

Message par Thyphoon »

l'image est dans mon post précédent !

En tout cas chapeau pour quelqu'un qui n'a jamais fait de Trigo ! En tout cas ça me conforte dans mon idée... que ceux qui font des "grandes" études ne sont pas toujours les plus intelligent ! Et que le défaut de notre société c'est de se basé sur un bout de papier et pas sur les compétences !!

tient je remet l'image ici ça sera plus simple : Image
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Algo Black Hole Spiral

Message par Backup »

:lol: mon nc10 a la lumiere au minimum , et ton soleil blanc n'apparaissait pas sur le fond du forum
je ne l'avais tout simplement pas vu :D
Merci
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Re: Algo Black Hole Spiral

Message par Thyphoon »

Dobro a écrit ::lol: mon nc10 a la lumiere au minimum , et ton soleil blanc n'apparaissait pas sur le fond du forum
je ne l'avais tout simplement pas vu :D
Merci
lollll j'ai eu le même problème avec mon msi u100 :P
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Re: Algo Black Hole Spiral

Message par Thyphoon »

Je me demande si il ne va pas faloire que je passe part des vrai calcul 3D ! Car là je bloque.. pour que le centre soit bien au centre et que les étoiles se place bien ...
Car là j'arrive a rien ... grrrrrrr !!!! Par contre j'ai réussi a optimisé un peu le code... je vais faire quelques test et je posterais ça !
Avatar de l’utilisateur
venom
Messages : 3137
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: Algo Black Hole Spiral

Message par venom »

je m'incruste vite fait dans votre discutions :D

le rendu est top je ne pensai pas qu'un tel effet pouvais se faire en ci peut de ligne. Bravo






@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Re: Algo Black Hole Spiral

Message par Thyphoon »

venom a écrit :je m'incruste vite fait dans votre discutions :D
le rendu est top je ne pensai pas qu'un tel effet pouvais se faire en ci peut de ligne. Bravo
Merci ! Et encore j'ai vu une demo sur amiga qui avait fait bien mieux .. dans un 4Ko Intro ... bien plus réaliste !
Mais bon je suis pas aussi doué ! Heureusemnt que Dobro m'a donné un coup de main .. mais bon là j'avance pu trop .... Il parait que la nuit porte conseille !!
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Algo Black Hole Spiral

Message par Backup »

faudrai utiliser le moteur de Tmyke ;)

N3xtD :)
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Re: Algo Black Hole Spiral

Message par djes »

Ca commence à bien donner!
Il y a quelques années, j'avais fait deux petits trucs dans le genre, mais ce n'était pas du pure!

Un petit essai en flash (c'était l'occasion de tester les objets)
http://djes.free.fr/nebul4.swf

Un petit rendu avec lightwave
Image
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Re: Algo Black Hole Spiral

Message par Thyphoon »

Dobro a écrit :faudrai utiliser le moteur de Tmyke ;)

N3xtD :)
Oui j'y ai pensé mais vu l'utilisation que je vais en faire ça sera dommage... En vérité c'est de la pure décoration pour un jeu de Quizz que j'ai développé ! (je le posterais)
djes a écrit :Ca commence à bien donner!
merci ! reste a bien le finir lolllll :lol:
djes a écrit : Il y a quelques années, j'avais fait deux petits trucs dans le genre, mais ce n'était pas du pure!
Un petit essai en flash (c'était l'occasion de tester les objets)
sympa ! :)
djes a écrit : Un petit rendu avec lightwave
Image
Sympa ce rendu ! ça me donne une petite idée je vais essayer ....
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Re: Algo Black Hole Spiral

Message par Progi1984 »

Et voilà, tu viens d'emmener Thyphon dans ta spirale :p
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Re: Algo Black Hole Spiral

Message par Thyphoon »

Progi1984 a écrit :Et voilà, tu viens d'emmener Thyphon dans ta spirale :p
lolllllllllllll

Bon voici ce que donne mon dernier code (il est pas tres propre faut que je fasse du nettoyage)
voici un nouveau sprite a rajouter a la collection :
l'image est juste ici >>Image (je précise pour Dobro qui voit rien avec sont ecran :P )
Et voilà ce que ça donne comme rendu chez moi (je crois que le rendu est légèrement différent selon la resolution de votre ecran)

Image

Code : Tout sélectionner

UsePNGImageDecoder()
#dobro=1
#Police=1
#sprite=1
; ***********************************
InitSprite()
InitSprite3D()
InitKeyboard()
FontID = LoadFont(#Police, "arial", 50, #PB_Font_Bold )
EcranX = GetSystemMetrics_(#SM_CXSCREEN):;=largeur de l'ecran
EcranY = GetSystemMetrics_(#SM_CYSCREEN):;=hauteur de l'ecran
    WindowID = OpenWindow(1, 0, 0, EcranX, EcranY, "hello", #PB_Window_SystemMenu|#PB_Window_BorderLess |#PB_Window_ScreenCentered )
    WindowID = WindowID(1)
    Result = OpenWindowedScreen(WindowID,0,0, EcranX, EcranY, 1, 0,0)
   
   Structure Prefs
     ScreenWidth.l
     ScreenHeight.l
   EndStructure
   Global Prefs.prefs
   Prefs\ScreenWidth=EcranX
   Prefs\Screenheight=EcranY
      
   CompilerIf Subsystem("Directx9") 
    Structure D3DTLVERTEX
     x.f
     y.f
     z.f
     rhw.f
     Color.l
     tu.f
     tv.f
   EndStructure

   Structure PB_Sprite3D
     TexRes.l                    ; TexRes
     Vertice.D3DTLVERTEX[4]       ; The 4 vertices for the rectangle sprite
     TmpVertice.D3DTLVERTEX[4]   ; The 4 vertices for the rectangle sprite
     Width.l                     ; width set with ZoomSprite3D()
     Height.l                     ; height set with ZoomSprite3D()
     RealWidth.l
     RealHeight.l
     Angle.f
     Transformed.l
   EndStructure 
   
   
     CompilerElse ;Directx7
     
    ;Thanks Cpl.Bator !!!
    Structure vertex
          sx.f
          sy.f
          sz.f
          rhw.f
          Color.l
          specular.l
          tu.f
          tv.f
    EndStructure

    Structure PB_Sprite3D
             Texture.l         
             Vertice.vertex[4]
             Width.w
             Height.w
    EndStructure 
CompilerEndIf

    Procedure SetSpriteLuminosityEx(spriteid.l,lum.c)
      Protected RGB_LUM.l,*S.PB_Sprite3D
      ;doit être dans un Start3D
      ; 255 = Pleine luminosité 0 = noir
      
      RGB_LUM = RGBA(255,Lum,Lum,255)
      *S=IsSprite3D(spriteid)
      *S\Vertice[0]\Color = RGB_LUM
      *S\Vertice[1]\Color = RGB_LUM
      *S\Vertice[3]\Color = RGB_LUM
      *S\Vertice[2]\Color = RGB_LUM
    EndProcedure

    LoadSprite(20,"Gfx/holehand.png",#PB_Sprite_Texture|#PB_Sprite_AlphaBlending)
    CreateSprite3D(20,20)
    LoadSprite(21,"Gfx/sun.png",#PB_Sprite_Texture|#PB_Sprite_AlphaBlending)
    CreateSprite3D(21,21)
     LoadSprite(22,"Gfx/star.png",#PB_Sprite_Texture|#PB_Sprite_AlphaBlending)
    CreateSprite3D(22,22)
Structure MyHole
  Rayon.l
  StarAngle.l
EndStructure

Global NewList MyHole.MyHole()

NbStar=40
For z=NbStar To 1 Step -1
  AddElement(MyHole())
  MyHole()\Rayon=Pow(z,1.3)*(Prefs\ScreenWidth/4)/(NbStar*2)
  MyHole()\StarAngle.l=Random(360)
Next


Procedure Spiral() 
  degres=-15
  Coef=7

  t.f=ElapsedMilliseconds()/10000
  CordX=Prefs\ScreenWidth/2
  CordY=Prefs\ScreenHeight/2
  AngleNova.f=degres*#PI/180
  
  BA.f=#PI
  BB.f=#PI/2
  BC.f=#PI+#PI/2
  
  ForEach MyHole()
    AngleStar.f=t+ListIndex(MyHole())/Coef
    x=MyHole()\Rayon*Cos(AngleStar)
    y=MyHole()\Rayon/2*Sin(AngleStar)
    x2=MyHole()\Rayon*Cos(BA+AngleStar)
    y2=MyHole()\Rayon/2*Sin(BA+AngleStar)
    x3=MyHole()\Rayon*Cos(BB+AngleStar)
    y3=MyHole()\Rayon/2*Sin(BB+AngleStar)
    x4=MyHole()\Rayon*Cos(BC+AngleStar)
    y4=MyHole()\Rayon/2*Sin(BC+AngleStar)
  
  ; ********* voici la formule de la rotation d'image *********
    ;<------------ en degres !!! :o)
    
     x= x * Cos (AngleNova) +( Y)* Sin (AngleNova)
     Y=x * Sin (AngleNova) + (Y)* Cos (AngleNova) 
               
     x2= x2 * Cos (AngleNova) +( y2)* Sin (AngleNova)
     y2= x2 * Sin (AngleNova) + (y2)* Cos (AngleNova) 
                 
     x3= x3 * Cos (AngleNova) +( y3)* Sin (AngleNova)
     y3= x3 * Sin (AngleNova) + (y3)* Cos (AngleNova) 
                 
     x4= x4 * Cos (AngleNova) +( Y4)* Sin (AngleNova)
     Y4= x4 * Sin (AngleNova) + (Y4)* Cos (AngleNova) 
                 
     ;***************************************************** 
  
    size=(ListSize(MyHole())-ListIndex(MyHole()))*128/ListSize(MyHole())
    Angle=(ListSize(MyHole())-ListIndex(MyHole()))*360/ListSize(MyHole())
    Alpha=255-((ListSize(MyHole())-ListIndex(MyHole()))*255/ListSize(MyHole()))
    ZoomSprite3D(20,size,size)
    ZoomSprite3D(22,size,size)
    RotateSprite3D(22,MyHole()\StarAngle,#PB_Absolute)
    RotateSprite3D(20,Angle,#PB_Absolute)
    SetSpriteLuminosityEx(20,Alpha)
    DisplaySprite3D(20,CordX+x-Size/2,CordY+y-Size/2,Alpha)
    DisplaySprite3D(22,CordX+x-Size/2,CordY+y-Size/2,255)
    DisplaySprite3D(20,CordX+x2-Size/2,CordY+y2-Size/2,Alpha)
    DisplaySprite3D(22,CordX+x2-Size/2,CordY+y2-Size/2,255)
    DisplaySprite3D(20,CordX+x3-Size/2,CordY+y3-Size/2,Alpha)
    DisplaySprite3D(22,CordX+x3-Size/2,CordY+y3-Size/2,255)
    DisplaySprite3D(20,CordX+x4-Size/2,CordY+y4-Size/2,Alpha)
    DisplaySprite3D(22,CordX+x4-Size/2,CordY+y4-Size/2,255)
  Next
  ZoomSprite3D(21,32,32)
  DisplaySprite3D(21,CordX-16,CordY-16,200)
  
EndProcedure

    Repeat
        ExamineKeyboard()
        Event=WindowEvent()
        Delay(1)
        ClearScreen(RGB(0,0,0)) ;  *****<------- si tu Rem ceci le sprite laisse une trace :D
        Start3D()
        Spiral()
        Stop3D()
        FlipBuffers():; affiche l'ecran 
     

        Event=WindowEvent()
         If KeyboardPushed(#PB_Key_Escape)
            End
        EndIf
        
        If KeyboardReleased(#PB_Key_Down) And degres>-45
          degres=degres-1
        EndIf 
        
        If KeyboardReleased(#PB_Key_Up) And degres<50
          degres=degres+1
        EndIf 
        
    Until Event=#PB_Event_CloseWindow
Fred
Site Admin
Messages : 2808
Inscription : mer. 21/janv./2004 11:03

Re: Algo Black Hole Spiral

Message par Fred »

Sympa !
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Re: Algo Black Hole Spiral

Message par Thyphoon »

Fred a écrit :Sympa !
Un message de Dieu le père, ça me vas droit au coeur ! Merci beaucoup ! il faut avouer que c'est du a un travail Collectif Dont tu fais aussi parti!
Sans Fred Pas de Purebasic
Sans Dobro je serais encore en train de me demander comme dessiné une spiral
Sans djes et son rendu lightwave j'aurais pas eu l'idée pour faire Des étoiles avec un rendu correcte
Sans Cpl.Bator l'effet sur les Sprites 3D aurait été moins bon etc...

Tient d'ailleur j'en profite J'ai modifier le sprite pour les étoiles le rendu est encore meilleur
Image<<Ici Dobro ! ( :wink: )

J'ai juste fait des points de taille différentes ...le rendu n'en est que meilleur ...
J'ai aussi fait quelques modification dans le code

Code : Tout sélectionner

UsePNGImageDecoder()
#dobro=1
#Police=1
#sprite=1
; ***********************************
InitSprite()
InitSprite3D()
InitKeyboard()
FontID = LoadFont(#Police, "arial", 50, #PB_Font_Bold )
EcranX = GetSystemMetrics_(#SM_CXSCREEN):;=largeur de l'ecran
EcranY = GetSystemMetrics_(#SM_CYSCREEN):;=hauteur de l'ecran
    WindowID = OpenWindow(1, 0, 0, EcranX, EcranY, "hello", #PB_Window_SystemMenu|#PB_Window_BorderLess |#PB_Window_ScreenCentered )
    WindowID = WindowID(1)
    Result = OpenWindowedScreen(WindowID,0,0, EcranX, EcranY, 1, 0,0)
   
   Structure Prefs
     ScreenWidth.l
     ScreenHeight.l
   EndStructure
   Global Prefs.prefs
   Prefs\ScreenWidth=EcranX
   Prefs\Screenheight=EcranY
      
   CompilerIf Subsystem("Directx9") 
    Structure D3DTLVERTEX
     x.f
     y.f
     z.f
     rhw.f
     Color.l
     tu.f
     tv.f
   EndStructure

   Structure PB_Sprite3D
     TexRes.l                    ; TexRes
     Vertice.D3DTLVERTEX[4]       ; The 4 vertices for the rectangle sprite
     TmpVertice.D3DTLVERTEX[4]   ; The 4 vertices for the rectangle sprite
     Width.l                     ; width set with ZoomSprite3D()
     Height.l                     ; height set with ZoomSprite3D()
     RealWidth.l
     RealHeight.l
     Angle.f
     Transformed.l
   EndStructure 
   
   
     CompilerElse ;Directx7
     
    ;Thanks Cpl.Bator !!!
    Structure vertex
          sx.f
          sy.f
          sz.f
          rhw.f
          Color.l
          specular.l
          tu.f
          tv.f
    EndStructure

    Structure PB_Sprite3D
             Texture.l         
             Vertice.vertex[4]
             Width.w
             Height.w
    EndStructure 
CompilerEndIf

    Procedure SetSpriteLuminosityEx(spriteid.l,lum.c)
      Protected RGB_LUM.l,*S.PB_Sprite3D
      ;doit être dans un Start3D
      ; 255 = Pleine luminosité 0 = noir
      
      RGB_LUM = RGBA(255,Lum,Lum,255)
      *S=IsSprite3D(spriteid)
      *S\Vertice[0]\Color = RGB_LUM
      *S\Vertice[1]\Color = RGB_LUM
      *S\Vertice[3]\Color = RGB_LUM
      *S\Vertice[2]\Color = RGB_LUM
    EndProcedure

    LoadSprite(20,"Gfx/holehand.png",#PB_Sprite_Texture|#PB_Sprite_AlphaBlending)
    CreateSprite3D(20,20)
    LoadSprite(21,"Gfx/sun.png",#PB_Sprite_Texture|#PB_Sprite_AlphaBlending)
    CreateSprite3D(21,21)
     LoadSprite(22,"Gfx/star.png",#PB_Sprite_Texture|#PB_Sprite_AlphaBlending)
    CreateSprite3D(22,22)
Structure MyHole
  Rayon.l
  StarAngle.l
EndStructure

Global NewList MyHole.MyHole()

NbStar=40
For z=NbStar To 1 Step -1
  AddElement(MyHole())
  MyHole()\Rayon=Pow(z,1.3)*(Prefs\ScreenWidth/4)/(NbStar*2)
  MyHole()\StarAngle.l=Random(360)
Next


Procedure Spiral() 
  degres=-15
  Coef=7

  t.f=ElapsedMilliseconds()/40000
  CordX=Prefs\ScreenWidth/2
  CordY=Prefs\ScreenHeight/2
  AngleNova.f=degres*#PI/180
  
  BA.f=#PI
  BB.f=#PI/2
  BC.f=#PI+#PI/2

  ForEach MyHole()
    AngleStar.f=t+ListIndex(MyHole())/Coef
    x=MyHole()\Rayon*Cos(AngleStar)
    y=MyHole()\Rayon/2*Sin(AngleStar)
    x2=MyHole()\Rayon*Cos(BA+AngleStar)
    y2=MyHole()\Rayon/2*Sin(BA+AngleStar)
    x3=MyHole()\Rayon*Cos(BB+AngleStar)
    y3=MyHole()\Rayon/2*Sin(BB+AngleStar)
    x4=MyHole()\Rayon*Cos(BC+AngleStar)
    y4=MyHole()\Rayon/2*Sin(BC+AngleStar)
  
  ; ********* voici la formule de la rotation d'image *********
    ;<------------ en degres !!! :o)
    
     x= x * Cos (AngleNova) +( Y)* Sin (AngleNova)
     Y=x * Sin (AngleNova) + (Y)* Cos (AngleNova) 
               
     x2= x2 * Cos (AngleNova) +( y2)* Sin (AngleNova)
     y2= x2 * Sin (AngleNova) + (y2)* Cos (AngleNova) 
                 
     x3= x3 * Cos (AngleNova) +( y3)* Sin (AngleNova)
     y3= x3 * Sin (AngleNova) + (y3)* Cos (AngleNova) 
                 
     x4= x4 * Cos (AngleNova) +( Y4)* Sin (AngleNova)
     Y4= x4 * Sin (AngleNova) + (Y4)* Cos (AngleNova) 
                 
     ;***************************************************** 
  
    size=(ListSize(MyHole())-ListIndex(MyHole()))*128/ListSize(MyHole())
    
    Angle=(ListSize(MyHole())-ListIndex(MyHole()))*360/ListSize(MyHole())
    Alpha=255-((ListSize(MyHole())-ListIndex(MyHole()))*255/ListSize(MyHole()))
    ZoomSprite3D(20,size,size)
    ZoomSprite3D(22,size,size)
    RotateSprite3D(22,MyHole()\StarAngle,#PB_Absolute)
    RotateSprite3D(20,Angle,#PB_Absolute)
    SetSpriteLuminosityEx(20,Alpha)
    DisplaySprite3D(20,CordX+x-Size/2,CordY+y-Size/2,Alpha)
    DisplaySprite3D(22,CordX+x-Size/2,CordY+y-Size/2,255)
    DisplaySprite3D(20,CordX+x2-Size/2,CordY+y2-Size/2,Alpha)
    DisplaySprite3D(22,CordX+x2-Size/2,CordY+y2-Size/2,255)
    DisplaySprite3D(20,CordX+x3-Size/2,CordY+y3-Size/2,Alpha)
    DisplaySprite3D(22,CordX+x3-Size/2,CordY+y3-Size/2,255)
    DisplaySprite3D(20,CordX+x4-Size/2,CordY+y4-Size/2,Alpha)
    DisplaySprite3D(22,CordX+x4-Size/2,CordY+y4-Size/2,255)
  Next
  ZoomSprite3D(21,64,64)
  DisplaySprite3D(21,CordX-32,CordY-32,200)
  
EndProcedure

    Repeat
        ExamineKeyboard()
        Event=WindowEvent()
        Delay(1)
        ClearScreen(RGB(0,0,0)) ;  *****<------- si tu Rem ceci le sprite laisse une trace :D
        Start3D()
        Spiral()
        Stop3D()
        FlipBuffers():; affiche l'ecran 
     

        Event=WindowEvent()
         If KeyboardPushed(#PB_Key_Escape)
            End
        EndIf
        
        If KeyboardReleased(#PB_Key_Down) And degres>-45
          degres=degres-1
        EndIf 
        
        If KeyboardReleased(#PB_Key_Up) And degres<50
          degres=degres+1
        EndIf 
        
    Until Event=#PB_Event_CloseWindow
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Algo Black Hole Spiral

Message par Backup »

manque RGBA() !! :)
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Re: Algo Black Hole Spiral

Message par Thyphoon »

Dobro a écrit :manque RGBA() !! :)
A oui je l'ai viré car je compile avec la 4.40B5

voici ce qui manque

Code : Tout sélectionner

    Macro RGBA(r,g,b,a)
    a << 24 + b << 16 +g << 8 + r 
    EndMacro
mais c'est possible qu'il faille inversé les variable r et b ... :P
Répondre