Page 1 sur 2

Déplacement sur un Hélice 3D V1.1

Publié : dim. 19/déc./2004 4:38
par Guimauve
Bonjour à tous,

Un autre animation 3D, les mêmes models 3D que la dernière fois. Seulement l'animation est différente.

Édition Version 1.1 - Écran de veille

La mise à jour :

- Optimisation du code.
- Utilisation d'une liste chainé de type structurée.
- Le code pour l'écran de veille est opérationnel. Sauf qu'il manque le "Preview". À venir dans la prochaine version.

A+
Guimauve

Code : Tout sélectionner

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; PureBasic Screensaver - Icosaèdre étoilé
; Nom de l'écran de veille : Icosaèdre étoilé
; Programmation : Version 1.1
; Programmé par : Guimauve
; Date : 18 décembre 2004
; Mise à jour : 24 février 2005
; Codé avec PureBasic V3.92
; >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; Déclaration des procédures

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; Constantes, Variables, Structure, Création des Tableaux, etc.

Enumeration
     
     #Scr_Win_Param
     
     #Txt_version
     #Btn_ok
     #Btn_cancel
     
EndEnumeration

Enumeration
     #CoordonneeX
     #CoordonneeY
     #CoordonneeZ
EndEnumeration

Enumeration = 1
     ; Constante pour l'animation
     #Icosahedron_01
     #Icosahedron_02
     #Icosahedron_03
     #Icosahedron_04
     #Icosahedron_05
     #Icosahedron_06
     #Icosahedron_07
     #Icosahedron_08
     #Icosahedron_09
     #Icosahedron_10
     #Icosahedron_tex_01
     #Icosahedron_tex_02
     #Icosahedron_tex_03
     #Icosahedron_tex_04
     #Icosahedron_tex_05
     #Icosahedron_tex_06
     #Icosahedron_tex_07
     #Icosahedron_tex_08
     #Icosahedron_tex_09
     #Icosahedron_tex_10
     
EndEnumeration

; >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Degré en Radian

Procedure.f DegToRad(Angle.f)
     
     ProcedureReturn Angle * #Pi / 180
     
EndProcedure

; >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Procedure.f SpinFloat(No.f, mini.f, maxi.f, increment.f)
     
     No + increment
     
     If No > maxi
          No = mini
     EndIf
     
     If No < mini
          No = Maxi
     EndIf
     
     ProcedureReturn No
     
EndProcedure

; >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Procedure.f Helice3D(rayon.f, NbSpire.f, Pas.f, Pos_u.f, Calcul.b)
     
     If Calcul = #CoordonneeX
          Resultat.f = rayon * Cos(DegToRad(360 * NbSpire * Pos_u))
          
     ElseIf Calcul = #CoordonneeY
          Resultat.f = rayon * Sin(DegToRad(360 * NbSpire * Pos_u))
          
     ElseIf Calcul = #CoordonneeZ
          Resultat.f = Pas * NbSpire * Pos_u
          
     EndIf
     
     ProcedureReturn Resultat
EndProcedure

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
#Vertical = 0
#Horizontal = 1

ProcedureDLL DrawGradient(Color1.l, Color2.l, NbColor.l, largeur.l, hauteur.l, OutputID.l, Orientation.b)
     
     rt = Red(Color1)
     rd = Red(Color2) - rt
     gt = Green(Color1)
     gd = Green(Color2) - gt
     bt = Blue(Color1)
     bd = Blue(Color2) - bt
     
     StartDrawing(OutputID)
          If Orientation = #Vertical
               While i < NbColor
                    r = MulDiv_(i, rd, NbColor) + rt
                    g = MulDiv_(i, gd, NbColor) + gt
                    b = MulDiv_(i, bd, NbColor) + bt
                    y = MulDiv_(i, hauteur, Nbcolor)
                    h = MulDiv_(i + 2, hauteur, NbColor)
                    Box( 0, y, largeur, h, RGB(r, g, b))
                    i + 1
               Wend
               
          ElseIf Orientation = #Horizontal
               While i < NbColor
                    r = MulDiv_(i, rd, NbColor) + rt
                    g = MulDiv_(i, gd, NbColor) + gt
                    b = MulDiv_(i, bd, NbColor) + bt
                    x = MulDiv_(i, largeur, Nbcolor)
                    l = MulDiv_(i + 2, largeur, NbColor)
                    Box(x, 0, l, hauteur, RGB(r, g, b))
                    i + 1
               Wend
          EndIf
     StopDrawing()
EndProcedure


; >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Procedure OnlyOneSCRStart(Name$)
     Shared OnlyOneStartMutex.l
     OnlyOneStartMutex = CreateMutex_(0, 1, Name$)
     OnlyOneStartError.l = GetLastError_()
     If OnlyOneStartMutex <> 0 And OnlyOneStartError = 0
          ProcedureReturn 1
     Else
          CloseHandle_(OnlyOneStartMutex)
          End
     EndIf
EndProcedure

; >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Procedure OnlyOneSCRStop()
     CloseHandle_(OnlyOneStartMutex)
EndProcedure

; >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Procedure InitScreenSaver(ScreenSaverName$, ScrWidth.w, ScrHeight.w, ScrDepth.w)
     
     ; Initialisation des sprites et du clavier.
     If InitSprite() = 0 Or InitKeyboard() = 0
          MessageRequester("Error", "Can't open DirectX 7 Or later", 0)
          End
     EndIf
     
     ; Ouverture du screen
     If OpenScreen(ScrWidth, ScrHeight, ScrDepth, ScreenSaverName$) = 0
          MessageRequester("Error", "Can't open a screen !", 0)
          End
     EndIf
     
EndProcedure

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

ScreenSaverName$ = "Hélice 3D"
ScreenSaverVersion$ = "Version 1.1"

ScreenW = GetSystemMetrics_(#SM_CXSCREEN)
ScreenH = GetSystemMetrics_(#SM_CYSCREEN)
ScreenD = 32

Structure Info
     
     ModelID.l
     HelixRadius.f
     HelixNbSpire.f
     HelixPitch.f
     PosU.f
     PosX.f
     PosY.f
     PosZ.f
     ScaleFactor.f
     TextureID.l
     TextureSize.w
     TextureColor01.l
     TextureColor02.l
     
EndStructure

Dim Color(2, 10)

Color(1, 1) = RGB(000, 255, 000)
Color(2, 1) = RGB(100, 000, 155)

Color(1, 2) = RGB(000, 255, 000)
Color(2, 2) = RGB(000, 000, 255)

Color(1, 3) = RGB(255, 000, 000)
Color(2, 3) = RGB(150, 150, 150)

Color(1, 4) = RGB(255, 255, 255)
Color(2, 4) = RGB(100, 000, 160)

Color(1, 5) = RGB(000, 255, 255)
Color(2, 5) = RGB(150, 000, 150)

Color(1, 6) = RGB(000, 000, 255)
Color(2, 6) = RGB(255, 255, 000)

Color(1, 7) = RGB(255, 255, 000)
Color(2, 7) = RGB(000, 000, 255)

Color(1, 8) = RGB(000, 255, 000)
Color(2, 8) = RGB(100, 000, 155)

Color(1, 9) = RGB(255, 255, 128)
Color(2, 9) = RGB(180, 000, 000)

Color(1, 10) = RGB(255, 255, 000)
Color(2, 10) = RGB(255, 000, 000)


NewList Model.Info()

; >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Programme principale
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

OnlyOneSCRStart(ScreenSaverName$)

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; On regarde quel paramètre à été donné au programme

FirstParam$ = ProgramParameter()
command$ = LCase(Left(ReplaceString(FirstParam$, "-", "/"), 2))
ParentWindow.l = Val(StringField(FirstParam$, 2, ":")) | Val(ProgramParameter())

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; L'écran de veille, le scr est lancé avec /s comme paramètre

Select command$
          
     Case "/s"
          
          InitEngine3D()
          InitScreenSaver(ScreenSaverName$, ScreenW, ScreenH, ScreenD)
          
          GetCursorPos_(SourisOrigine.POINT)
          ShowCursor_(0)
          
          For model = #Icosahedron_01 To #Icosahedron_10
               AddElement(Model())
               Model()\ModelID = model
               Model()\HelixRadius = 14.5
               Model()\HelixNbSpire = 5
               Model()\HelixPitch = 15
               Model()\PosU = 0.000 + u1.f
               Model()\PosX = Helice3D(Model()\HelixRadius, Model()\HelixNbSpire, Model()\HelixPitch, Model()\PosU, #CoordonneeZ)
               Model()\PosY = Helice3D(Model()\HelixRadius, Model()\HelixNbSpire, Model()\HelixPitch, Model()\PosU, #CoordonneeY)
               Model()\PosZ = Helice3D(Model()\HelixRadius, Model()\HelixNbSpire, Model()\HelixPitch, Model()\PosU, #CoordonneeX)
               Model()\ScaleFactor = 0.65
               Model()\TextureID = model + #Icosahedron_10
               Model()\TextureSize = 128
               Model()\TextureColor01 = Color(1, model)
               Model()\TextureColor02 = Color(2, model)
               u1 = SpinFloat(u1, 0, 1, 0.145)
          Next
          
          ForEach Model()
               CreateMesh(Model()\ModelID)
               SetMeshData(Model()\ModelID, 0, ?Vertices, 180)
               SetMeshData(Model()\ModelID, 1, ?FacesIndexes, 60)
               SetMeshData(Model()\ModelID, 2, ?TextureCoordinates, 180)
               CreateEntity(Model()\ModelID, MeshID(Model()\ModelID), CreateMaterial(Model()\TextureID, CreateTexture(Model()\TextureID, Model()\TextureSize, Model()\TextureSize)))
               EntityLocate(Model()\ModelID, 0, 0, 0)
               ScaleEntity(Model()\ModelID, Model()\ScaleFactor, Model()\ScaleFactor, Model()\ScaleFactor)
               DrawGradient(Model()\TextureColor01, Model()\TextureColor02, 255, Model()\TextureSize, Model()\TextureSize, TextureOutput(Model()\TextureID), #Vertical)
          Next
          
          CreateCamera(0, 0, 0, 100, 100)
          CameraLocate(0, 50, 0, 50)
          
          speed.b = 1
          
          Repeat
               
               ClearScreen(0, 0, 0)
               
               If frame = 500
                    
                    If set.b = 0
                         speed = 1
                         frame = 0
                         set = 1
                         
                    ElseIf set = 1
                         speed = -1
                         frame = 0
                         set = 0
                    EndIf
               EndIf
               
               ; Ici on fait la mise à jour des positions des models 3D et on positionne les models à leurs nouvelles positions.
               ForEach Model()
                    Model()\PosU = SpinFloat(Model()\PosU, 0, 1, 0.0015)
                    Model()\PosX = Helice3D(Model()\HelixRadius, Model()\HelixNbSpire, Model()\HelixPitch, Model()\PosU, #CoordonneeZ)
                    Model()\PosY = Helice3D(Model()\HelixRadius, Model()\HelixNbSpire, Model()\HelixPitch, Model()\PosU, #CoordonneeY)
                    Model()\PosZ = Helice3D(Model()\HelixRadius, Model()\HelixNbSpire, Model()\HelixPitch, Model()\PosU, #CoordonneeX)
                    EntityLocate(Model()\ModelID, Model()\PosX, Model()\PosY, Model()\PosZ)
                    RotateEntity(Model()\ModelID, -2 * speed, -2 * speed, -2 * speed)
               Next
               
               RenderWorld()
               
               frame + 1
               ExamineKeyboard()
               
               FlipBuffers()
               
               ; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
               ; On vérifie si l'utilisateur touche au clavier ou à la souris
               
               GetCursorPos_(Souris.POINT)
               ExamineKeyboard()
               
          Until KeyboardPushed(#PB_Key_All) > 0 Or Souris\x <> SourisOrigine\x Or Souris\y <> SourisOrigine\y ; WindowEvent() = #PB_Event_CloseWindow Or
          
          ; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
          ; Fenètre de paramétrage de l'écran de veille
          
     Case "/c"
          
          If OpenWindow(#Scr_Win_Param, 0, 0, 300, 225, #PB_Window_ScreenCentered | #PB_Window_SystemMenu, ScreenSaverName$) <> 0
               
               If CreateGadgetList(WindowID(#Scr_Win_Param)) <> 0
                    
                    TextGadget(#PB_any, 5, 5, 290, 20, "Il n'y a aucun paramètre pour cet écran de veille.")
                    TextGadget(#Txt_version, 10, 200, 150, 20, ScreenSaverVersion$)
                    ButtonGadget(#Btn_ok, 130, 195, 75, 25, "Ok")
                    ButtonGadget(#Btn_cancel, 215, 195, 75, 25, "Cancel")
                    
               EndIf
               
               Repeat
                    
                    EventID.l = WaitWindowEvent()
                    
                    If EventID = #PB_EventGadget
                         Select EventGadgetID()
                                   
                              Case #Btn_ok
                                   EventID = #PB_EventCloseWindow
                                   
                              Case #Btn_cancel
                                   EventID = #PB_EventCloseWindow
                                   
                         EndSelect
                    EndIf
                    
               Until EventID = #PB_EventCloseWindow
               
          EndIf
          
          ; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
          ; Code pour l'affichage de l'aperçu
          
     Case "/p"
          End
          
EndSelect

OnlyOneSCRStop()

End

; >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; <<<<<<<<<<<<<<<<<<<<<<<<<<<< Procédures Secondaires, Data, etc >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

DataSection
     
     Vertices :
          Data.f - 4.014306, 5.254795, 0.000000
          Data.f 0.000000, 4.000000, 0.000000
          Data.f - 2.894427, 1.788854, 2.102924
          Data.f - 4.014306, 5.254795, 0.000000
          Data.f - 2.894427, 1.788854, -2.102924
          Data.f 0.000000, 4.000000, 0.000000
          Data.f - 4.014306, 5.254795, 0.000000
          Data.f - 2.894427, 1.788854, 2.102924
          Data.f - 2.894427, 1.788854, -2.102924
          Data.f - 1.240489, 5.254795, 3.817832
          Data.f 0.000000, 4.000000, 0.000000
          Data.f 1.105573, 1.788854, 3.402603
          Data.f - 1.240489, 5.254795, 3.817832
          Data.f - 2.894427, 1.788854, 2.102924
          Data.f 0.000000, 4.000000, 0.000000
          Data.f - 1.240489, 5.254795, 3.817832
          Data.f 1.105573, 1.788854, 3.402603
          Data.f - 2.894427, 1.788854, 2.102924
          Data.f 3.247642, 5.254795, 2.359550
          Data.f 0.000000, 4.000000, 0.000000
          Data.f 3.577708, 1.788854, 0.000000
          Data.f 3.247642, 5.254795, 2.359550
          Data.f 1.105573, 1.788854, 3.402603
          Data.f 0.000000, 4.000000, 0.000000
          Data.f 3.247642, 5.254795, 2.359550
          Data.f 3.577708, 1.788854, 0.000000
          Data.f 1.105573, 1.788854, 3.402603
          Data.f 3.247642, 5.254795, -2.359550
          Data.f 0.000000, 4.000000, 0.000000
          Data.f 1.105573, 1.788854, -3.402603
          Data.f 3.247642, 5.254795, -2.359550
          Data.f 3.577708, 1.788854, 0.000000
          Data.f 0.000000, 4.000000, 0.000000
          Data.f 3.247642, 5.254795, -2.359550
          Data.f 1.105573, 1.788854, -3.402603
          Data.f 3.577708, 1.788854, 0.000000
          Data.f - 1.240489, 5.254795, -3.817832
          Data.f 0.000000, 4.000000, 0.000000
          Data.f - 2.894427, 1.788854, -2.102924
          Data.f - 1.240489, 5.254795, -3.817832
          Data.f 1.105573, 1.788854, -3.402603
          Data.f 0.000000, 4.000000, 0.000000
          Data.f - 1.240489, 5.254795, -3.817832
          Data.f - 2.894427, 1.788854, -2.102924
          Data.f 1.105573, 1.788854, -3.402603
          Data.f - 6.495283, 1.240489, 0.000000
          Data.f - 3.577709, -1.788854, 0.000000
          Data.f - 2.894427, 1.788854, -2.102924
          Data.f - 6.495283, 1.240489, 0.000000
          Data.f - 2.894427, 1.788854, 2.102924
          Data.f - 3.577709, -1.788854, 0.000000
          Data.f - 6.495283, 1.240489, 0.000000
          Data.f - 2.894427, 1.788854, -2.102924
          Data.f - 2.894427, 1.788854, 2.102924
          Data.f - 2.007153, 1.240489, 6.177382
          Data.f - 1.105573, -1.788854, 3.402603
          Data.f - 2.894427, 1.788854, 2.102924
          Data.f - 2.007153, 1.240489, 6.177382
          Data.f 1.105573, 1.788854, 3.402603
          Data.f - 1.105573, -1.788854, 3.402603
          Data.f - 2.007153, 1.240489, 6.177382
          Data.f - 2.894427, 1.788854, 2.102924
          Data.f 1.105573, 1.788854, 3.402603
          Data.f 5.254795, 1.240489, 3.817831
          Data.f 2.894427, -1.788854, 2.102924
          Data.f 1.105573, 1.788854, 3.402603
          Data.f 5.254795, 1.240489, 3.817832
          Data.f 3.577708, 1.788854, -0.000000
          Data.f 2.894427, -1.788854, 2.102924
          Data.f 5.254795, 1.240489, 3.817831
          Data.f 1.105573, 1.788854, 3.402603
          Data.f 3.577708, 1.788854, -0.000000
          Data.f 5.254794, 1.240489, -3.817832
          Data.f 2.894427, -1.788854, -2.102925
          Data.f 3.577708, 1.788854, -0.000000
          Data.f 5.254794, 1.240489, -3.817832
          Data.f 1.105572, 1.788854, -3.402603
          Data.f 2.894427, -1.788854, -2.102925
          Data.f 5.254794, 1.240489, -3.817832
          Data.f 3.577708, 1.788854, -0.000000
          Data.f 1.105572, 1.788854, -3.402603
          Data.f - 2.007153, 1.240489, -6.177382
          Data.f - 1.105573, -1.788854, -3.402603
          Data.f 1.105572, 1.788854, -3.402603
          Data.f - 2.007153, 1.240489, -6.177382
          Data.f - 2.894427, 1.788854, -2.102924
          Data.f - 1.105573, -1.788854, -3.402603
          Data.f - 2.007153, 1.240489, -6.177382
          Data.f 1.105572, 1.788854, -3.402603
          Data.f - 2.894427, 1.788854, -2.102924
          Data.f 2.007153, -1.240489, -6.177382
          Data.f 1.105573, 1.788854, -3.402603
          Data.f - 1.105572, -1.788854, -3.402603
          Data.f 2.007153, -1.240489, -6.177382
          Data.f 2.894427, -1.788854, -2.102924
          Data.f 1.105573, 1.788854, -3.402603
          Data.f 2.007153, -1.240489, -6.177382
          Data.f - 1.105572, -1.788854, -3.402603
          Data.f 2.894427, -1.788854, -2.102924
          Data.f - 5.254794, -1.240489, -3.817832
          Data.f - 2.894427, 1.788854, -2.102925
          Data.f - 3.577708, -1.788854, -0.000000
          Data.f - 5.254794, -1.240489, -3.817832
          Data.f - 1.105572, -1.788854, -3.402603
          Data.f - 2.894427, 1.788854, -2.102925
          Data.f - 5.254794, -1.240489, -3.817832
          Data.f - 3.577708, -1.788854, -0.000000
          Data.f - 1.105572, -1.788854, -3.402603
          Data.f - 5.254795, -1.240489, 3.817831
          Data.f - 2.894427, 1.788854, 2.102924
          Data.f - 1.105573, -1.788854, 3.402603
          Data.f - 5.254795, -1.240489, 3.817832
          Data.f - 3.577708, -1.788854, -0.000000
          Data.f - 2.894427, 1.788854, 2.102924
          Data.f - 5.254795, -1.240489, 3.817831
          Data.f - 1.105573, -1.788854, 3.402603
          Data.f - 3.577708, -1.788854, -0.000000
          Data.f 2.007153, -1.240489, 6.177382
          Data.f 1.105573, 1.788854, 3.402603
          Data.f 2.894427, -1.788854, 2.102924
          Data.f 2.007153, -1.240489, 6.177382
          Data.f - 1.105573, -1.788854, 3.402603
          Data.f 1.105573, 1.788854, 3.402603
          Data.f 2.007153, -1.240489, 6.177382
          Data.f 2.894427, -1.788854, 2.102924
          Data.f - 1.105573, -1.788854, 3.402603
          Data.f 6.495283, -1.240489, 0.000000
          Data.f 3.577709, 1.788854, 0.000000
          Data.f 2.894427, -1.788854, -2.102924
          Data.f 6.495283, -1.240489, 0.000000
          Data.f 2.894427, -1.788854, 2.102924
          Data.f 3.577709, 1.788854, 0.000000
          Data.f 6.495283, -1.240489, 0.000000
          Data.f 2.894427, -1.788854, -2.102924
          Data.f 2.894427, -1.788854, 2.102924
          Data.f 1.240489, -5.254795, -3.817832
          Data.f 0.000000, -4.000000, 0.000000
          Data.f 2.894427, -1.788854, -2.102924
          Data.f 1.240489, -5.254795, -3.817832
          Data.f - 1.105573, -1.788854, -3.402603
          Data.f 0.000000, -4.000000, 0.000000
          Data.f 1.240489, -5.254795, -3.817832
          Data.f 2.894427, -1.788854, -2.102924
          Data.f - 1.105573, -1.788854, -3.402603
          Data.f - 3.247642, -5.254795, -2.359550
          Data.f 0.000000, -4.000000, 0.000000
          Data.f - 1.105573, -1.788854, -3.402603
          Data.f - 3.247642, -5.254795, -2.359550
          Data.f - 3.577708, -1.788854, 0.000000
          Data.f 0.000000, -4.000000, 0.000000
          Data.f - 3.247642, -5.254795, -2.359550
          Data.f - 1.105573, -1.788854, -3.402603
          Data.f - 3.577708, -1.788854, 0.000000
          Data.f - 3.247642, -5.254795, 2.359550
          Data.f - 0.000000, -4.000000, 0.000000
          Data.f - 3.577708, -1.788854, 0.000000
          Data.f - 3.247642, -5.254795, 2.359550
          Data.f - 1.105573, -1.788854, 3.402603
          Data.f - 0.000000, -4.000000, 0.000000
          Data.f - 3.247642, -5.254795, 2.359550
          Data.f - 3.577708, -1.788854, 0.000000
          Data.f - 1.105573, -1.788854, 3.402603
          Data.f 1.240489, -5.254795, 3.817832
          Data.f 0.000000, -4.000000, 0.000000
          Data.f - 1.105573, -1.788854, 3.402603
          Data.f 1.240489, -5.254795, 3.817832
          Data.f 2.894427, -1.788854, 2.102924
          Data.f 0.000000, -4.000000, 0.000000
          Data.f 1.240489, -5.254795, 3.817832
          Data.f - 1.105573, -1.788854, 3.402603
          Data.f 2.894427, -1.788854, 2.102924
          Data.f 4.014306, -5.254795, 0.000000
          Data.f 0.000000, -4.000000, 0.000000
          Data.f 2.894427, -1.788854, 2.102924
          Data.f 4.014306, -5.254795, 0.000000
          Data.f 2.894427, -1.788854, -2.102924
          Data.f 0.000000, -4.000000, 0.000000
          Data.f 4.014306, -5.254795, 0.000000
          Data.f 2.894427, -1.788854, 2.102924
          Data.f 2.894427, -1.788854, -2.102924
     
     FacesIndexes :
          Data.w 2, 1, 0
          Data.w 5, 4, 3
          Data.w 8, 7, 6
          Data.w 11, 10, 9
          Data.w 14, 13, 12
          Data.w 17, 16, 15
          Data.w 20, 19, 18
          Data.w 23, 22, 21
          Data.w 26, 25, 24
          Data.w 29, 28, 27
          Data.w 32, 31, 30
          Data.w 35, 34, 33
          Data.w 38, 37, 36
          Data.w 41, 40, 39
          Data.w 44, 43, 42
          Data.w 47, 46, 45
          Data.w 50, 49, 48
          Data.w 53, 52, 51
          Data.w 56, 55, 54
          Data.w 59, 58, 57
          Data.w 62, 61, 60
          Data.w 65, 64, 63
          Data.w 68, 67, 66
          Data.w 71, 70, 69
          Data.w 74, 73, 72
          Data.w 77, 76, 75
          Data.w 80, 79, 78
          Data.w 83, 82, 81
          Data.w 86, 85, 84
          Data.w 89, 88, 87
          Data.w 92, 91, 90
          Data.w 95, 94, 93
          Data.w 98, 97, 96
          Data.w 101, 100, 99
          Data.w 104, 103, 102
          Data.w 107, 106, 105
          Data.w 110, 109, 108
          Data.w 113, 112, 111
          Data.w 116, 115, 114
          Data.w 119, 118, 117
          Data.w 122, 121, 120
          Data.w 125, 124, 123
          Data.w 128, 127, 126
          Data.w 131, 130, 129
          Data.w 134, 133, 132
          Data.w 137, 136, 135
          Data.w 140, 139, 138
          Data.w 143, 142, 141
          Data.w 146, 145, 144
          Data.w 149, 148, 147
          Data.w 152, 151, 150
          Data.w 155, 154, 153
          Data.w 158, 157, 156
          Data.w 161, 160, 159
          Data.w 164, 163, 162
          Data.w 167, 166, 165
          Data.w 170, 169, 168
          Data.w 173, 172, 171
          Data.w 176, 175, 174
          Data.w 179, 178, 177
     
     TextureCoordinates :
          Data.f 0.500000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
          Data.f 0.500000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
          Data.f 0.500000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
          Data.f 0.500000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
          Data.f 0.500000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
          Data.f 0.500000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
          Data.f 0.500000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
          Data.f 0.500000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
          Data.f 0.500000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
          Data.f 0.500000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
          Data.f 0.500000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
          Data.f 0.500000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
          Data.f 0.500000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
          Data.f 0.500000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
          Data.f 0.500000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
          Data.f 0.500000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
          Data.f 0.500000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
          Data.f 0.500000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
          Data.f 0.500000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
          Data.f 0.500000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
          Data.f 0.500000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
          Data.f 0.500000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
          Data.f 0.500000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
          Data.f 0.500000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
          Data.f 0.500000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
          Data.f 0.500000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
          Data.f 0.500000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
          Data.f 0.500000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
          Data.f 0.500000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
          Data.f 0.500000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
          Data.f 0.500000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
          Data.f 0.500000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
          Data.f 0.500000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
          Data.f 0.500000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
          Data.f 0.500000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
          Data.f 0.500000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
          Data.f 0.500000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
          Data.f 0.500000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
          Data.f 0.500000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
          Data.f 0.500000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
          Data.f 0.500000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
          Data.f 0.500000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
          Data.f 0.500000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
          Data.f 0.500000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
          Data.f 0.500000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
          Data.f 0.500000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
          Data.f 0.500000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
          Data.f 0.500000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
          Data.f 0.500000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
          Data.f 0.500000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
          Data.f 0.500000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
          Data.f 0.500000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
          Data.f 0.500000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
          Data.f 0.500000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
          Data.f 0.500000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
          Data.f 0.500000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
          Data.f 0.500000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
          Data.f 0.500000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
          Data.f 0.500000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
          Data.f 0.500000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
     
EndDataSection
; fin

Publié : dim. 19/déc./2004 11:07
par Oliv
8O sympa :D

Publié : dim. 19/déc./2004 11:47
par Backup
j'ai le mal de mer !! :D

est-ce parceque j'utilise les derniere librairie keyboard mis en ligne par Fred
que lorsque j'appuis sur F1 il n'y a rien qui s'affiche ?? pas d'infos :?

Publié : dim. 19/déc./2004 12:34
par Anonyme2
Chapeau Guimauve :10:


Tout simplement excellent et fluide :wink:

Publié : dim. 19/déc./2004 13:42
par filperj
Sympa, la danse des oursins :lol:

@Dobro: J'ai la même lib et F1 marche :roll:

Publié : dim. 19/déc./2004 16:58
par Guimauve
Dobro a écrit :j'ai le mal de mer !! :D

est-ce parceque j'utilise les derniere librairie keyboard mis en ligne par Fred
que lorsque j'appuis sur F1 il n'y a rien qui s'affiche ?? pas d'infos :?
C'est bizarre ça, j'ai mis à jour les librairies il n'y a pas très long temps. Est-ce que ça le fait à quelqu'un d'autre ?

Moi de mon côté, ça fonctionne très bien.

A+
Guimauve

Publié : dim. 19/déc./2004 17:00
par comtois
ça fonctionne très bien pour moi aussi , avec les dernières libs , y compris les libs spéciales markus :)

Publié : ven. 25/févr./2005 21:10
par Guimauve
Bonjour à tous,

Je viens de faire une mise à jour du code.

A+
Guimauve

Publié : ven. 25/févr./2005 21:16
par comtois
J'ai ce message
---------------------------
jaPBe - Erreur du compilateur !
---------------------------
Line 255 - DrawGradient() is not a function, an array, or a linked list
---------------------------
OK
---------------------------

Publié : ven. 25/févr./2005 21:23
par Guimauve
Oui je sais, je viens de m'en rendre compte.

La voiçi :

Code : Tout sélectionner


#Vertical = 0
#Horizontal = 1

ProcedureDLL DrawGradient(Color1.l, Color2.l, NbColor.l, largeur.l, hauteur.l, OutputID.l, Orientation.b)
     
     rt = Red(Color1)
     rd = Red(Color2) - rt
     gt = Green(Color1)
     gd = Green(Color2) - gt
     bt = Blue(Color1)
     bd = Blue(Color2) - bt
     
     StartDrawing(OutputID)
          If Orientation = #Vertical
               While i < NbColor
                    r = MulDiv_(i, rd, NbColor) + rt
                    g = MulDiv_(i, gd, NbColor) + gt
                    b = MulDiv_(i, bd, NbColor) + bt
                    y = MulDiv_(i, hauteur, Nbcolor)
                    h = MulDiv_(i + 2, hauteur, NbColor)
                    Box( 0, y, largeur, h, RGB(r, g, b))
                    i + 1
               Wend
               
          ElseIf Orientation = #Horizontal
               While i < NbColor
                    r = MulDiv_(i, rd, NbColor) + rt
                    g = MulDiv_(i, gd, NbColor) + gt
                    b = MulDiv_(i, bd, NbColor) + bt
                    x = MulDiv_(i, largeur, Nbcolor)
                    l = MulDiv_(i + 2, largeur, NbColor)
                    Box(x, 0, l, hauteur, RGB(r, g, b))
                    i + 1
               Wend
          EndIf
     StopDrawing()
EndProcedure
C'est le problème de se faire des librairie perso, les autres ne les ont pas toujours. Puis on ne peut pas tester le code pour voir s'il manque quelque chose.

Désolé

A+
Guimauve

Publié : ven. 25/févr./2005 21:54
par nico
Il faut faire une manip pour utiliser le code; car chez moi, il se passe rien du tout.

Publié : ven. 25/févr./2005 21:57
par Le Soldat Inconnu
il faut mettre /s en paramètre de lancement (dans japbe) ou insérer

command$ = "/s" avant ceci

Code : Tout sélectionner

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
; L'écran de veille, le scr est lancé avec /s comme paramètre 

Select command$ 
          
     Case "/s"

Publié : ven. 25/févr./2005 22:00
par Guimauve
Il faut aller dans les options de compilation et mettre /s comme argument.

Ou le compiler comme un exe puis avec l'explorateur windows changer l'extension .exe pour .scr.

Et bien sûr la Engine3D.dll doit être dans le même répertoire.

A+
Guimauve

Publié : ven. 25/févr./2005 22:39
par nico
Merci à vous. :D

Publié : sam. 26/févr./2005 0:20
par Oliv
ça marche :D