Déplacement sur un Hélice 3D V1.1
Publié : dim. 19/déc./2004 4:38
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
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