Metaballs 3D / Marching Cubes

Übersicht BlitzBasic Codearchiv

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen

ozzi789

Betreff: Nice!

BeitragSo, Mai 03, 2009 15:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Selbst auf meinem EeePC funktioniert es fast in Echtzeit
(50ms / 20 ms)

Super Arbeit Smile
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5

kog

BeitragSo, Mai 03, 2009 16:03
Antworten mit Zitat
Benutzer-Profile anzeigen
meine angaben:
7/8 ms | 2/3 ms

ATI Radeon HD 4870
Intel Core Duo 3.0 GHz

Noobody

BeitragSo, Mai 03, 2009 16:14
Antworten mit Zitat
Benutzer-Profile anzeigen
MikeDee hat Folgendes geschrieben:
Blöde frage am Rande: für was kann man das gebrauchen?

Noobody hat Folgendes geschrieben:
Sie sind nicht nur schön anzusehen, sondern können auch nützlich werden, wenn man etwa Wassertropfen oder organische Stoffe darstellen will (weswegen sie auch zum Funktionsumfang einiger Modellierungsprogramme gehören).

Aber sie sind hauptsächlich als visueller Effekt gedacht Razz

Da gewünscht, habe ich noch schnell eine kleine FPS - Anzeige reingehackt.
BlitzBasic: [AUSKLAPPEN]
Graphics3D 800, 600, 0, 2
SetBuffer BackBuffer()

Const TRESHOLD# = 0.5

Const GRIDWIDTH = 32
Const GRIDHEIGHT = 32
Const GRIDDEPTH = 32

Dim TLT( 255, 15 )
Dim EdgeTable( 255 )
Dim VoxelData#( 0, 0, 0 )

Type TMetaBall
Field X#
Field Y#
Field Z#

Field VX#
Field VY#
Field VZ#

Field Charge#
End Type

Init()

Timer = CreateTimer( 60 )

While Not KeyHit( 1 )
Counter = MilliSecs()
UpdateMetaballs()
Delta = MilliSecs() - Counter
Mesh = MarchingCubes( GRIDWIDTH, GRIDHEIGHT, GRIDDEPTH )
Delta2 = MilliSecs() - Counter - Delta

ScaleEntity Mesh, 2, 2, 2
UpdateNormals Mesh

RenderWorld

FreeEntity Mesh

Text 0, 0, "Berechnungszeit: Metaballs " + RSet( Delta, 2 ) + "ms Marching Cubes " + RSet( Delta2, 2 ) + "ms" + " FPS " + Int( 1000/Float( MilliSecs() - Counter ) )

Flip 0
WaitTimer Timer
Wend
End

Function Init()
Cam = CreateCamera()
PositionEntity Cam, 32, 32, -32

Light = CreateLight( 2 )
PositionEntity Light, 64, 64, 0
LightRange Light, 32

LoadTLT()
LoadEdgeTable()

SeedRnd MilliSecs()

For i = 1 To 5
MetaBall.TMetaBall = New TMetaBall
MetaBall\X# = Rnd( 8, 24 )
MetaBall\Y# = Rnd( 8, 24 )
MetaBall\Z# = Rnd( 8, 24 )
MetaBall\VX# = Rnd( -0.5, 0.5 )
MetaBall\VY# = Rnd( -0.5, 0.5 )
MetaBall\VZ# = Rnd( -0.5, 0.5 )
MetaBall\Charge# = Rnd( 5, 8 )
Next
End Function

Function UpdateMetaballs()
Dim VoxelData#( GRIDWIDTH - 1, GRIDHEIGHT - 1, GRIDDEPTH - 1 )

For MetaBall.TMetaBall = Each TMetaBall
MetaBall\X# = MetaBall\X# + MetaBall\VX#
MetaBall\Y# = MetaBall\Y# + MetaBall\VY#
MetaBall\Z# = MetaBall\Z# + MetaBall\VZ#

If MetaBall\X# > GRIDWIDTH - 7 Or MetaBall\X# < 7 Then MetaBall\VX# = -MetaBall\VX#
If MetaBall\Y# > GRIDHEIGHT - 7 Or MetaBall\Y# < 7 Then MetaBall\VY# = -MetaBall\VY#
If MetaBall\Z# > GRIDDEPTH - 7 Or MetaBall\Z# < 7 Then MetaBall\VZ# = -MetaBall\VZ#
Next

For X = 0 To GRIDWIDTH - 1
For Y = 0 To GRIDHEIGHT - 1
For Z = 0 To GRIDDEPTH - 1
For MetaBall.TMetaBall = Each TMetaBall
DistSq# = ( X - Metaball\X# )*( X - Metaball\X# ) + ( Y - Metaball\Y# )*( Y - Metaball\Y# ) + ( Z - Metaball\Z# )*( Z - Metaball\Z# )
VoxelData( X, Y, Z ) = VoxelData( X, Y, Z ) + MetaBall\Charge/DistSQ#
Next
Next
Next
Next
End Function

Function LoadTLT()
Restore TLT

For CubeIndex = 0 To 255
For EdgeIndex = 0 To 15
Read TLT( CubeIndex, EdgeIndex )
Next
Next
End Function

Function LoadEdgeTable()
Restore EdgeTable

For CubeIndex = 0 To 255
Read EdgeTable( CubeIndex )
Next
End Function

Function MarchingCubes( Width, Height, Depth )
Local EdgeX#[ 11 ], EdgeY#[ 11 ], EdgeZ#[ 11 ], VertexCount

Local TriMesh = CreateMesh()
Local TriSurf = CreateSurface( TriMesh )

For Z = 0 To Depth - 2
For X = 0 To Width - 2
For Y = 0 To Height - 2
Local CubeIndex = 0

If VoxelData#( X + 0, Y + 1, Z + 1 ) > TRESHOLD# Then CubeIndex = CubeIndex Or %00000001
If VoxelData#( X + 1, Y + 1, Z + 1 ) > TRESHOLD# Then CubeIndex = CubeIndex Or %00000010
If VoxelData#( X + 1, Y + 1, Z + 0 ) > TRESHOLD# Then CubeIndex = CubeIndex Or %00000100
If VoxelData#( X + 0, Y + 1, Z + 0 ) > TRESHOLD# Then CubeIndex = CubeIndex Or %00001000
If VoxelData#( X + 0, Y + 0, Z + 1 ) > TRESHOLD# Then CubeIndex = CubeIndex Or %00010000
If VoxelData#( X + 1, Y + 0, Z + 1 ) > TRESHOLD# Then CubeIndex = CubeIndex Or %00100000
If VoxelData#( X + 1, Y + 0, Z + 0 ) > TRESHOLD# Then CubeIndex = CubeIndex Or %01000000
If VoxelData#( X + 0, Y + 0, Z + 0 ) > TRESHOLD# Then CubeIndex = CubeIndex Or %10000000

If EdgeTable( CubeIndex ) > 0 Then
If EdgeTable( CubeIndex ) And %000000000001 Then InterpolateEdge( X + 0, Y + 1, Z + 1, X + 1, Y + 1, Z + 1, 0, EdgeX, EdgeY, EdgeZ )
If EdgeTable( CubeIndex ) And %000000000010 Then InterpolateEdge( X + 1, Y + 1, Z + 1, X + 1, Y + 1, Z + 0, 1, EdgeX, EdgeY, EdgeZ )
If EdgeTable( CubeIndex ) And %000000000100 Then InterpolateEdge( X + 1, Y + 1, Z + 0, X + 0, Y + 1, Z + 0, 2, EdgeX, EdgeY, EdgeZ )
If EdgeTable( CubeIndex ) And %000000001000 Then InterpolateEdge( X + 0, Y + 1, Z + 0, X + 0, Y + 1, Z + 1, 3, EdgeX, EdgeY, EdgeZ )

If EdgeTable( CubeIndex ) And %000000010000 Then InterpolateEdge( X + 0, Y + 0, Z + 1, X + 1, Y + 0, Z + 1, 4, EdgeX, EdgeY, EdgeZ )
If EdgeTable( CubeIndex ) And %000000100000 Then InterpolateEdge( X + 1, Y + 0, Z + 1, X + 1, Y + 0, Z + 0, 5, EdgeX, EdgeY, EdgeZ )
If EdgeTable( CubeIndex ) And %000001000000 Then InterpolateEdge( X + 1, Y + 0, Z + 0, X + 0, Y + 0, Z + 0, 6, EdgeX, EdgeY, EdgeZ )
If EdgeTable( CubeIndex ) And %000010000000 Then InterpolateEdge( X + 0, Y + 0, Z + 0, X + 0, Y + 0, Z + 1, 7, EdgeX, EdgeY, EdgeZ )

If EdgeTable( CubeIndex ) And %000100000000 Then InterpolateEdge( X + 0, Y + 0, Z + 1, X + 0, Y + 1, Z + 1, 8, EdgeX, EdgeY, EdgeZ )
If EdgeTable( CubeIndex ) And %001000000000 Then InterpolateEdge( X + 1, Y + 0, Z + 1, X + 1, Y + 1, Z + 1, 9, EdgeX, EdgeY, EdgeZ )
If EdgeTable( CubeIndex ) And %010000000000 Then InterpolateEdge( X + 1, Y + 0, Z + 0, X + 1, Y + 1, Z + 0, 10, EdgeX, EdgeY, EdgeZ )
If EdgeTable( CubeIndex ) And %100000000000 Then InterpolateEdge( X + 0, Y + 0, Z + 0, X + 0, Y + 1, Z + 0, 11, EdgeX, EdgeY, EdgeZ )

Local TriIndex = 0
While TLT( CubeIndex, TriIndex ) >= 0
V1 = AddVertex( TriSurf, EdgeX[ TLT( CubeIndex, TriIndex + 0 ) ], EdgeY[ TLT( CubeIndex, TriIndex + 0 ) ], EdgeZ[ TLT( CubeIndex, TriIndex + 0 ) ] )
V2 = AddVertex( TriSurf, EdgeX[ TLT( CubeIndex, TriIndex + 1 ) ], EdgeY[ TLT( CubeIndex, TriIndex + 1 ) ], EdgeZ[ TLT( CubeIndex, TriIndex + 1 ) ] )
V3 = AddVertex( TriSurf, EdgeX[ TLT( CubeIndex, TriIndex + 2 ) ], EdgeY[ TLT( CubeIndex, TriIndex + 2 ) ], EdgeZ[ TLT( CubeIndex, TriIndex + 2 ) ] )

AddTriangle TriSurf, V1, V2, V3

TriIndex = TriIndex + 3
VertexCount = VertexCount + 3
Wend

If VertexCount > 65000 Then TriSurf = CreateSurface( TriMesh ) ;Die Vertexbuffer von DX sollten wir nicht sprengen
EndIf
Next
Next
Next

Return TriMesh
End Function

Function InterpolateEdge( X1, Y1, Z1, X2, Y2, Z2, Index, EdgeX#[ 11 ], EdgeY#[ 11 ], EdgeZ#[ 11 ] )
Ratio# = ( TRESHOLD# - VoxelData#( X1, Y1, Z1 ) )/( VoxelData#( X2, Y2, Z2 ) - VoxelData#( X1, Y1, Z1 ) )

EdgeX[ Index ] = X1 + Ratio#*( X2 - X1 )
EdgeY[ Index ] = Y1 + Ratio#*( Y2 - Y1 )
EdgeZ[ Index ] = Z1 + Ratio#*( Z2 - Z1 )
End Function

.EdgeTable ;Die Seiten des Würfels, die geschnitten werden
Data $000, $109, $203, $30A, $406, $50F, $605, $70C
Data $80C, $905, $A0F, $B06, $C0A, $D03, $E09, $F00
Data $190, $099, $393, $29A, $596, $49F, $795, $69C
Data $99C, $895, $B9F, $A96, $D9A, $C93, $F99, $E90
Data $230, $339, $033, $13A, $636, $73F, $435, $53C
Data $A3C, $B35, $83F, $936, $E3A, $F33, $C39, $D30
Data $3A0, $2A9, $1A3, $0AA, $7A6, $6AF, $5A5, $4AC
Data $BAC, $AA5, $9AF, $8A6, $fAA, $EA3, $DA9, $CA0
Data $460, $569, $663, $76A, $066, $16F, $265, $36C
Data $C6C, $D65, $E6F, $F66, $86A, $963, $A69, $B60
Data $5F0, $4F9, $7F3, $6FA, $1F6, $0FF, $3F5, $2FC
Data $DFC, $CF5, $FFF, $EF6, $9FA, $8F3, $BF9, $AF0
Data $650, $759, $453, $55A, $256, $35F, $055, $15C
Data $E5C, $F55, $C5F, $D56, $A5A, $B53, $859, $950
Data $7C0, $6C9, $5C3, $4CA, $3C6, $2CF, $1C5, $0CC
Data $FCC, $EC5, $DCF, $CC6, $BCA, $AC3, $9C9, $8C0
Data $8C0, $9C9, $AC3, $BCA, $CC6, $DCF, $EC5, $FCC
Data $0CC, $1C5, $2CF, $3C6, $4CA, $5C3, $6C9, $7C0
Data $950, $859, $B53, $A5A, $D56, $C5F, $F55, $E5C
Data $15C, $055, $35F, $256, $55A, $453, $759, $650
Data $AF0, $BF9, $8F3, $9FA, $EF6, $FFF, $CF5, $DFC
Data $2FC, $3F5, $0FF, $1F6, $6FA, $7F3, $4F9, $5F0
Data $B60, $A69, $963, $86A, $F66, $E6F, $D65, $C6C
Data $36C, $265, $16F, $066, $76A, $663, $569, $460
Data $CA0, $DA9, $EA3, $FAA, $8A6, $9AF, $AA5, $BAC
Data $4AC, $5A5, $6AF, $7A6, $0AA, $1A3, $2A9, $3A0
Data $D30, $C39, $F33, $E3A, $936, $83F, $B35, $A3C
Data $53C, $435, $73F, $636, $13A, $033, $339, $230
Data $E90, $F99, $C93, $D9A, $A96, $B9F, $895, $99C
Data $69C, $795, $49F, $596, $29A, $393, $099, $190
Data $F00, $E09, $D03, $C0A, $B06, $A0F, $905, $80C
Data $70C, $605, $50F, $406, $30A, $203, $109, $000


.TLT ;Triangle Lookup Table
Data -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 0, 8, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 0, 1, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 1, 8, 3, 9, 8, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 1, 2, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 0, 8, 3, 1, 2, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 9, 2, 10, 0, 2, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 2, 8, 3, 2, 10, 8, 10, 9, 8, -1, -1, -1, -1, -1, -1, -1
Data 3, 11, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 0, 11, 2, 8, 11, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 1, 9, 0, 2, 3, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 1, 11, 2, 1, 9, 11, 9, 8, 11, -1, -1, -1, -1, -1, -1, -1
Data 3, 10, 1, 11, 10, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 0, 10, 1, 0, 8, 10, 8, 11, 10, -1, -1, -1, -1, -1, -1, -1
Data 3, 9, 0, 3, 11, 9, 11, 10, 9, -1, -1, -1, -1, -1, -1, -1
Data 9, 8, 10, 10, 8, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 4, 7, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 4, 3, 0, 7, 3, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 0, 1, 9, 8, 4, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 4, 1, 9, 4, 7, 1, 7, 3, 1, -1, -1, -1, -1, -1, -1, -1
Data 1, 2, 10, 8, 4, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 3, 4, 7, 3, 0, 4, 1, 2, 10, -1, -1, -1, -1, -1, -1, -1
Data 9, 2, 10, 9, 0, 2, 8, 4, 7, -1, -1, -1, -1, -1, -1, -1
Data 2, 10, 9, 2, 9, 7, 2, 7, 3, 7, 9, 4, -1, -1, -1, -1
Data 8, 4, 7, 3, 11, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 11, 4, 7, 11, 2, 4, 2, 0, 4, -1, -1, -1, -1, -1, -1, -1
Data 9, 0, 1, 8, 4, 7, 2, 3, 11, -1, -1, -1, -1, -1, -1, -1
Data 4, 7, 11, 9, 4, 11, 9, 11, 2, 9, 2, 1, -1, -1, -1, -1
Data 3, 10, 1, 3, 11, 10, 7, 8, 4, -1, -1, -1, -1, -1, -1, -1
Data 1, 11, 10, 1, 4, 11, 1, 0, 4, 7, 11, 4, -1, -1, -1, -1
Data 4, 7, 8, 9, 0, 11, 9, 11, 10, 11, 0, 3, -1, -1, -1, -1
Data 4, 7, 11, 4, 11, 9, 9, 11, 10, -1, -1, -1, -1, -1, -1, -1
Data 9, 5, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 9, 5, 4, 0, 8, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 0, 5, 4, 1, 5, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 8, 5, 4, 8, 3, 5, 3, 1, 5, -1, -1, -1, -1, -1, -1, -1
Data 1, 2, 10, 9, 5, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 3, 0, 8, 1, 2, 10, 4, 9, 5, -1, -1, -1, -1, -1, -1, -1
Data 5, 2, 10, 5, 4, 2, 4, 0, 2, -1, -1, -1, -1, -1, -1, -1
Data 2, 10, 5, 3, 2, 5, 3, 5, 4, 3, 4, 8, -1, -1, -1, -1
Data 9, 5, 4, 2, 3, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 0, 11, 2, 0, 8, 11, 4, 9, 5, -1, -1, -1, -1, -1, -1, -1
Data 0, 5, 4, 0, 1, 5, 2, 3, 11, -1, -1, -1, -1, -1, -1, -1
Data 2, 1, 5, 2, 5, 8, 2, 8, 11, 4, 8, 5, -1, -1, -1, -1
Data 10, 3, 11, 10, 1, 3, 9, 5, 4, -1, -1, -1, -1, -1, -1, -1
Data 4, 9, 5, 0, 8, 1, 8, 10, 1, 8, 11, 10, -1, -1, -1, -1
Data 5, 4, 0, 5, 0, 11, 5, 11, 10, 11, 0, 3, -1, -1, -1, -1
Data 5, 4, 8, 5, 8, 10, 10, 8, 11, -1, -1, -1, -1, -1, -1, -1
Data 9, 7, 8, 5, 7, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 9, 3, 0, 9, 5, 3, 5, 7, 3, -1, -1, -1, -1, -1, -1, -1
Data 0, 7, 8, 0, 1, 7, 1, 5, 7, -1, -1, -1, -1, -1, -1, -1
Data 1, 5, 3, 3, 5, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 9, 7, 8, 9, 5, 7, 10, 1, 2, -1, -1, -1, -1, -1, -1, -1
Data 10, 1, 2, 9, 5, 0, 5, 3, 0, 5, 7, 3, -1, -1, -1, -1
Data 8, 0, 2, 8, 2, 5, 8, 5, 7, 10, 5, 2, -1, -1, -1, -1
Data 2, 10, 5, 2, 5, 3, 3, 5, 7, -1, -1, -1, -1, -1, -1, -1
Data 7, 9, 5, 7, 8, 9, 3, 11, 2, -1, -1, -1, -1, -1, -1, -1
Data 9, 5, 7, 9, 7, 2, 9, 2, 0, 2, 7, 11, -1, -1, -1, -1
Data 2, 3, 11, 0, 1, 8, 1, 7, 8, 1, 5, 7, -1, -1, -1, -1
Data 11, 2, 1, 11, 1, 7, 7, 1, 5, -1, -1, -1, -1, -1, -1, -1
Data 9, 5, 8, 8, 5, 7, 10, 1, 3, 10, 3, 11, -1, -1, -1, -1
Data 5, 7, 0, 5, 0, 9, 7, 11, 0, 1, 0, 10, 11, 10, 0, -1
Data 11, 10, 0, 11, 0, 3, 10, 5, 0, 8, 0, 7, 5, 7, 0, -1
Data 11, 10, 5, 7, 11, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 10, 6, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 0, 8, 3, 5, 10, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 9, 0, 1, 5, 10, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 1, 8, 3, 1, 9, 8, 5, 10, 6, -1, -1, -1, -1, -1, -1, -1
Data 1, 6, 5, 2, 6, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 1, 6, 5, 1, 2, 6, 3, 0, 8, -1, -1, -1, -1, -1, -1, -1
Data 9, 6, 5, 9, 0, 6, 0, 2, 6, -1, -1, -1, -1, -1, -1, -1
Data 5, 9, 8, 5, 8, 2, 5, 2, 6, 3, 2, 8, -1, -1, -1, -1
Data 2, 3, 11, 10, 6, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 11, 0, 8, 11, 2, 0, 10, 6, 5, -1, -1, -1, -1, -1, -1, -1
Data 0, 1, 9, 2, 3, 11, 5, 10, 6, -1, -1, -1, -1, -1, -1, -1
Data 5, 10, 6, 1, 9, 2, 9, 11, 2, 9, 8, 11, -1, -1, -1, -1
Data 6, 3, 11, 6, 5, 3, 5, 1, 3, -1, -1, -1, -1, -1, -1, -1
Data 0, 8, 11, 0, 11, 5, 0, 5, 1, 5, 11, 6, -1, -1, -1, -1
Data 3, 11, 6, 0, 3, 6, 0, 6, 5, 0, 5, 9, -1, -1, -1, -1
Data 6, 5, 9, 6, 9, 11, 11, 9, 8, -1, -1, -1, -1, -1, -1, -1
Data 5, 10, 6, 4, 7, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 4, 3, 0, 4, 7, 3, 6, 5, 10, -1, -1, -1, -1, -1, -1, -1
Data 1, 9, 0, 5, 10, 6, 8, 4, 7, -1, -1, -1, -1, -1, -1, -1
Data 10, 6, 5, 1, 9, 7, 1, 7, 3, 7, 9, 4, -1, -1, -1, -1
Data 6, 1, 2, 6, 5, 1, 4, 7, 8, -1, -1, -1, -1, -1, -1, -1
Data 1, 2, 5, 5, 2, 6, 3, 0, 4, 3, 4, 7, -1, -1, -1, -1
Data 8, 4, 7, 9, 0, 5, 0, 6, 5, 0, 2, 6, -1, -1, -1, -1
Data 7, 3, 9, 7, 9, 4, 3, 2, 9, 5, 9, 6, 2, 6, 9, -1
Data 3, 11, 2, 7, 8, 4, 10, 6, 5, -1, -1, -1, -1, -1, -1, -1
Data 5, 10, 6, 4, 7, 2, 4, 2, 0, 2, 7, 11, -1, -1, -1, -1
Data 0, 1, 9, 4, 7, 8, 2, 3, 11, 5, 10, 6, -1, -1, -1, -1
Data 9, 2, 1, 9, 11, 2, 9, 4, 11, 7, 11, 4, 5, 10, 6, -1
Data 8, 4, 7, 3, 11, 5, 3, 5, 1, 5, 11, 6, -1, -1, -1, -1
Data 5, 1, 11, 5, 11, 6, 1, 0, 11, 7, 11, 4, 0, 4, 11, -1
Data 0, 5, 9, 0, 6, 5, 0, 3, 6, 11, 6, 3, 8, 4, 7, -1
Data 6, 5, 9, 6, 9, 11, 4, 7, 9, 7, 11, 9, -1, -1, -1, -1
Data 10, 4, 9, 6, 4, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 4, 10, 6, 4, 9, 10, 0, 8, 3, -1, -1, -1, -1, -1, -1, -1
Data 10, 0, 1, 10, 6, 0, 6, 4, 0, -1, -1, -1, -1, -1, -1, -1
Data 8, 3, 1, 8, 1, 6, 8, 6, 4, 6, 1, 10, -1, -1, -1, -1
Data 1, 4, 9, 1, 2, 4, 2, 6, 4, -1, -1, -1, -1, -1, -1, -1
Data 3, 0, 8, 1, 2, 9, 2, 4, 9, 2, 6, 4, -1, -1, -1, -1
Data 0, 2, 4, 4, 2, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 8, 3, 2, 8, 2, 4, 4, 2, 6, -1, -1, -1, -1, -1, -1, -1
Data 10, 4, 9, 10, 6, 4, 11, 2, 3, -1, -1, -1, -1, -1, -1, -1
Data 0, 8, 2, 2, 8, 11, 4, 9, 10, 4, 10, 6, -1, -1, -1, -1
Data 3, 11, 2, 0, 1, 6, 0, 6, 4, 6, 1, 10, -1, -1, -1, -1
Data 6, 4, 1, 6, 1, 10, 4, 8, 1, 2, 1, 11, 8, 11, 1, -1
Data 9, 6, 4, 9, 3, 6, 9, 1, 3, 11, 6, 3, -1, -1, -1, -1
Data 8, 11, 1, 8, 1, 0, 11, 6, 1, 9, 1, 4, 6, 4, 1, -1
Data 3, 11, 6, 3, 6, 0, 0, 6, 4, -1, -1, -1, -1, -1, -1, -1
Data 6, 4, 8, 11, 6, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 7, 10, 6, 7, 8, 10, 8, 9, 10, -1, -1, -1, -1, -1, -1, -1
Data 0, 7, 3, 0, 10, 7, 0, 9, 10, 6, 7, 10, -1, -1, -1, -1
Data 10, 6, 7, 1, 10, 7, 1, 7, 8, 1, 8, 0, -1, -1, -1, -1
Data 10, 6, 7, 10, 7, 1, 1, 7, 3, -1, -1, -1, -1, -1, -1, -1
Data 1, 2, 6, 1, 6, 8, 1, 8, 9, 8, 6, 7, -1, -1, -1, -1
Data 2, 6, 9, 2, 9, 1, 6, 7, 9, 0, 9, 3, 7, 3, 9, -1
Data 7, 8, 0, 7, 0, 6, 6, 0, 2, -1, -1, -1, -1, -1, -1, -1
Data 7, 3, 2, 6, 7, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 2, 3, 11, 10, 6, 8, 10, 8, 9, 8, 6, 7, -1, -1, -1, -1
Data 2, 0, 7, 2, 7, 11, 0, 9, 7, 6, 7, 10, 9, 10, 7, -1
Data 1, 8, 0, 1, 7, 8, 1, 10, 7, 6, 7, 10, 2, 3, 11, -1
Data 11, 2, 1, 11, 1, 7, 10, 6, 1, 6, 7, 1, -1, -1, -1, -1
Data 8, 9, 6, 8, 6, 7, 9, 1, 6, 11, 6, 3, 1, 3, 6, -1
Data 0, 9, 1, 11, 6, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 7, 8, 0, 7, 0, 6, 3, 11, 0, 11, 6, 0, -1, -1, -1, -1
Data 7, 11, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 7, 6, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 3, 0, 8, 11, 7, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 0, 1, 9, 11, 7, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 8, 1, 9, 8, 3, 1, 11, 7, 6, -1, -1, -1, -1, -1, -1, -1
Data 10, 1, 2, 6, 11, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 1, 2, 10, 3, 0, 8, 6, 11, 7, -1, -1, -1, -1, -1, -1, -1
Data 2, 9, 0, 2, 10, 9, 6, 11, 7, -1, -1, -1, -1, -1, -1, -1
Data 6, 11, 7, 2, 10, 3, 10, 8, 3, 10, 9, 8, -1, -1, -1, -1
Data 7, 2, 3, 6, 2, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 7, 0, 8, 7, 6, 0, 6, 2, 0, -1, -1, -1, -1, -1, -1, -1
Data 2, 7, 6, 2, 3, 7, 0, 1, 9, -1, -1, -1, -1, -1, -1, -1
Data 1, 6, 2, 1, 8, 6, 1, 9, 8, 8, 7, 6, -1, -1, -1, -1
Data 10, 7, 6, 10, 1, 7, 1, 3, 7, -1, -1, -1, -1, -1, -1, -1
Data 10, 7, 6, 1, 7, 10, 1, 8, 7, 1, 0, 8, -1, -1, -1, -1
Data 0, 3, 7, 0, 7, 10, 0, 10, 9, 6, 10, 7, -1, -1, -1, -1
Data 7, 6, 10, 7, 10, 8, 8, 10, 9, -1, -1, -1, -1, -1, -1, -1
Data 6, 8, 4, 11, 8, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 3, 6, 11, 3, 0, 6, 0, 4, 6, -1, -1, -1, -1, -1, -1, -1
Data 8, 6, 11, 8, 4, 6, 9, 0, 1, -1, -1, -1, -1, -1, -1, -1
Data 9, 4, 6, 9, 6, 3, 9, 3, 1, 11, 3, 6, -1, -1, -1, -1
Data 6, 8, 4, 6, 11, 8, 2, 10, 1, -1, -1, -1, -1, -1, -1, -1
Data 1, 2, 10, 3, 0, 11, 0, 6, 11, 0, 4, 6, -1, -1, -1, -1
Data 4, 11, 8, 4, 6, 11, 0, 2, 9, 2, 10, 9, -1, -1, -1, -1
Data 10, 9, 3, 10, 3, 2, 9, 4, 3, 11, 3, 6, 4, 6, 3, -1
Data 8, 2, 3, 8, 4, 2, 4, 6, 2, -1, -1, -1, -1, -1, -1, -1
Data 0, 4, 2, 4, 6, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 1, 9, 0, 2, 3, 4, 2, 4, 6, 4, 3, 8, -1, -1, -1, -1
Data 1, 9, 4, 1, 4, 2, 2, 4, 6, -1, -1, -1, -1, -1, -1, -1
Data 8, 1, 3, 8, 6, 1, 8, 4, 6, 6, 10, 1, -1, -1, -1, -1
Data 10, 1, 0, 10, 0, 6, 6, 0, 4, -1, -1, -1, -1, -1, -1, -1
Data 4, 6, 3, 4, 3, 8, 6, 10, 3, 0, 3, 9, 10, 9, 3, -1
Data 10, 9, 4, 6, 10, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 4, 9, 5, 7, 6, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 0, 8, 3, 4, 9, 5, 11, 7, 6, -1, -1, -1, -1, -1, -1, -1
Data 5, 0, 1, 5, 4, 0, 7, 6, 11, -1, -1, -1, -1, -1, -1, -1
Data 11, 7, 6, 8, 3, 4, 3, 5, 4, 3, 1, 5, -1, -1, -1, -1
Data 9, 5, 4, 10, 1, 2, 7, 6, 11, -1, -1, -1, -1, -1, -1, -1
Data 6, 11, 7, 1, 2, 10, 0, 8, 3, 4, 9, 5, -1, -1, -1, -1
Data 7, 6, 11, 5, 4, 10, 4, 2, 10, 4, 0, 2, -1, -1, -1, -1
Data 3, 4, 8, 3, 5, 4, 3, 2, 5, 10, 5, 2, 11, 7, 6, -1
Data 7, 2, 3, 7, 6, 2, 5, 4, 9, -1, -1, -1, -1, -1, -1, -1
Data 9, 5, 4, 0, 8, 6, 0, 6, 2, 6, 8, 7, -1, -1, -1, -1
Data 3, 6, 2, 3, 7, 6, 1, 5, 0, 5, 4, 0, -1, -1, -1, -1
Data 6, 2, 8, 6, 8, 7, 2, 1, 8, 4, 8, 5, 1, 5, 8, -1
Data 9, 5, 4, 10, 1, 6, 1, 7, 6, 1, 3, 7, -1, -1, -1, -1
Data 1, 6, 10, 1, 7, 6, 1, 0, 7, 8, 7, 0, 9, 5, 4, -1
Data 4, 0, 10, 4, 10, 5, 0, 3, 10, 6, 10, 7, 3, 7, 10, -1
Data 7, 6, 10, 7, 10, 8, 5, 4, 10, 4, 8, 10, -1, -1, -1, -1
Data 6, 9, 5, 6, 11, 9, 11, 8, 9, -1, -1, -1, -1, -1, -1, -1
Data 3, 6, 11, 0, 6, 3, 0, 5, 6, 0, 9, 5, -1, -1, -1, -1
Data 0, 11, 8, 0, 5, 11, 0, 1, 5, 5, 6, 11, -1, -1, -1, -1
Data 6, 11, 3, 6, 3, 5, 5, 3, 1, -1, -1, -1, -1, -1, -1, -1
Data 1, 2, 10, 9, 5, 11, 9, 11, 8, 11, 5, 6, -1, -1, -1, -1
Data 0, 11, 3, 0, 6, 11, 0, 9, 6, 5, 6, 9, 1, 2, 10, -1
Data 11, 8, 5, 11, 5, 6, 8, 0, 5, 10, 5, 2, 0, 2, 5, -1
Data 6, 11, 3, 6, 3, 5, 2, 10, 3, 10, 5, 3, -1, -1, -1, -1
Data 5, 8, 9, 5, 2, 8, 5, 6, 2, 3, 8, 2, -1, -1, -1, -1
Data 9, 5, 6, 9, 6, 0, 0, 6, 2, -1, -1, -1, -1, -1, -1, -1
Data 1, 5, 8, 1, 8, 0, 5, 6, 8, 3, 8, 2, 6, 2, 8, -1
Data 1, 5, 6, 2, 1, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 1, 3, 6, 1, 6, 10, 3, 8, 6, 5, 6, 9, 8, 9, 6, -1
Data 10, 1, 0, 10, 0, 6, 9, 5, 0, 5, 6, 0, -1, -1, -1, -1
Data 0, 3, 8, 5, 6, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 10, 5, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 11, 5, 10, 7, 5, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 11, 5, 10, 11, 7, 5, 8, 3, 0, -1, -1, -1, -1, -1, -1, -1
Data 5, 11, 7, 5, 10, 11, 1, 9, 0, -1, -1, -1, -1, -1, -1, -1
Data 10, 7, 5, 10, 11, 7, 9, 8, 1, 8, 3, 1, -1, -1, -1, -1
Data 11, 1, 2, 11, 7, 1, 7, 5, 1, -1, -1, -1, -1, -1, -1, -1
Data 0, 8, 3, 1, 2, 7, 1, 7, 5, 7, 2, 11, -1, -1, -1, -1
Data 9, 7, 5, 9, 2, 7, 9, 0, 2, 2, 11, 7, -1, -1, -1, -1
Data 7, 5, 2, 7, 2, 11, 5, 9, 2, 3, 2, 8, 9, 8, 2, -1
Data 2, 5, 10, 2, 3, 5, 3, 7, 5, -1, -1, -1, -1, -1, -1, -1
Data 8, 2, 0, 8, 5, 2, 8, 7, 5, 10, 2, 5, -1, -1, -1, -1
Data 9, 0, 1, 5, 10, 3, 5, 3, 7, 3, 10, 2, -1, -1, -1, -1
Data 9, 8, 2, 9, 2, 1, 8, 7, 2, 10, 2, 5, 7, 5, 2, -1
Data 1, 3, 5, 3, 7, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 0, 8, 7, 0, 7, 1, 1, 7, 5, -1, -1, -1, -1, -1, -1, -1
Data 9, 0, 3, 9, 3, 5, 5, 3, 7, -1, -1, -1, -1, -1, -1, -1
Data 9, 8, 7, 5, 9, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 5, 8, 4, 5, 10, 8, 10, 11, 8, -1, -1, -1, -1, -1, -1, -1
Data 5, 0, 4, 5, 11, 0, 5, 10, 11, 11, 3, 0, -1, -1, -1, -1
Data 0, 1, 9, 8, 4, 10, 8, 10, 11, 10, 4, 5, -1, -1, -1, -1
Data 10, 11, 4, 10, 4, 5, 11, 3, 4, 9, 4, 1, 3, 1, 4, -1
Data 2, 5, 1, 2, 8, 5, 2, 11, 8, 4, 5, 8, -1, -1, -1, -1
Data 0, 4, 11, 0, 11, 3, 4, 5, 11, 2, 11, 1, 5, 1, 11, -1
Data 0, 2, 5, 0, 5, 9, 2, 11, 5, 4, 5, 8, 11, 8, 5, -1
Data 9, 4, 5, 2, 11, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 2, 5, 10, 3, 5, 2, 3, 4, 5, 3, 8, 4, -1, -1, -1, -1
Data 5, 10, 2, 5, 2, 4, 4, 2, 0, -1, -1, -1, -1, -1, -1, -1
Data 3, 10, 2, 3, 5, 10, 3, 8, 5, 4, 5, 8, 0, 1, 9, -1
Data 5, 10, 2, 5, 2, 4, 1, 9, 2, 9, 4, 2, -1, -1, -1, -1
Data 8, 4, 5, 8, 5, 3, 3, 5, 1, -1, -1, -1, -1, -1, -1, -1
Data 0, 4, 5, 1, 0, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 8, 4, 5, 8, 5, 3, 9, 0, 5, 0, 3, 5, -1, -1, -1, -1
Data 9, 4, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 4, 11, 7, 4, 9, 11, 9, 10, 11, -1, -1, -1, -1, -1, -1, -1
Data 0, 8, 3, 4, 9, 7, 9, 11, 7, 9, 10, 11, -1, -1, -1, -1
Data 1, 10, 11, 1, 11, 4, 1, 4, 0, 7, 4, 11, -1, -1, -1, -1
Data 3, 1, 4, 3, 4, 8, 1, 10, 4, 7, 4, 11, 10, 11, 4, -1
Data 4, 11, 7, 9, 11, 4, 9, 2, 11, 9, 1, 2, -1, -1, -1, -1
Data 9, 7, 4, 9, 11, 7, 9, 1, 11, 2, 11, 1, 0, 8, 3, -1
Data 11, 7, 4, 11, 4, 2, 2, 4, 0, -1, -1, -1, -1, -1, -1, -1
Data 11, 7, 4, 11, 4, 2, 8, 3, 4, 3, 2, 4, -1, -1, -1, -1
Data 2, 9, 10, 2, 7, 9, 2, 3, 7, 7, 4, 9, -1, -1, -1, -1
Data 9, 10, 7, 9, 7, 4, 10, 2, 7, 8, 7, 0, 2, 0, 7, -1
Data 3, 7, 10, 3, 10, 2, 7, 4, 10, 1, 10, 0, 4, 0, 10, -1
Data 1, 10, 2, 8, 7, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 4, 9, 1, 4, 1, 7, 7, 1, 3, -1, -1, -1, -1, -1, -1, -1
Data 4, 9, 1, 4, 1, 7, 0, 8, 1, 8, 7, 1, -1, -1, -1, -1
Data 4, 0, 3, 7, 4, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 4, 8, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 9, 10, 8, 10, 11, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 3, 0, 9, 3, 9, 11, 11, 9, 10, -1, -1, -1, -1, -1, -1, -1
Data 0, 1, 10, 0, 10, 8, 8, 10, 11, -1, -1, -1, -1, -1, -1, -1
Data 3, 1, 10, 11, 3, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 1, 2, 11, 1, 11, 9, 9, 11, 8, -1, -1, -1, -1, -1, -1, -1
Data 3, 0, 9, 3, 9, 11, 1, 2, 9, 2, 11, 9, -1, -1, -1, -1
Data 0, 2, 11, 8, 0, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 3, 2, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 2, 3, 8, 2, 8, 10, 10, 8, 9, -1, -1, -1, -1, -1, -1, -1
Data 9, 10, 2, 0, 9, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 2, 3, 8, 2, 8, 10, 0, 1, 8, 1, 10, 8, -1, -1, -1, -1
Data 1, 10, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 1, 3, 8, 9, 1, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 0, 9, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 0, 3, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1


Die .exe kann hier bezogen werden.

Auch wenn es sehr verlockend ist, hier seine FPS zu posten, möchte ich nochmals darauf hinweisen, dass das hier das Codearchiv ist und sich die Posts grundsätzlich auf die Diskussion des geposteten Codes beschränken sollten - man möge also seine FPS für sich behalten Wink
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun

Nicdel

BeitragSo, Mai 03, 2009 17:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Sehr gut! (Ich hab ca. 30 FPS.) Läuft bei meinem Computer gar nicht schlecht. Very Happy
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7
  • Zuletzt bearbeitet von Nicdel am So, Mai 03, 2009 17:42, insgesamt einmal bearbeitet
 

da_poller

BeitragSo, Mai 03, 2009 17:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Noobody hat Folgendes geschrieben:
Auch wenn es sehr verlockend ist, hier seine FPS zu posten, möchte ich nochmals darauf hinweisen, dass das hier das Codearchiv ist und sich die Posts grundsätzlich auf die Diskussion des geposteten Codes beschränken sollten - man möge also seine FPS für sich behalten Wink


Nicdel hast du den satz mal gelesen?

@ noobody
sieht verdammt chick aus und läuft 1A.. wie von dir gewohnt n super ergebniss

mit welchen netten dingen wirst du uns nächstes mal überraschen?

Nicdel

BeitragSo, Mai 03, 2009 17:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Entschuldigung. Ich hab die vorigen Beiträge nur überflogen...

Farbwechsel:

BlitzBasic: [AUSKLAPPEN]

Select Rand(1,3)
Case 1
If c1s = 0
c1 = c1 + Rand(0,5)
Else
c1 = c1 - Rand(0,5)
EndIf
Case 2
If c2s = 0
c2 = c2 + Rand(0,5)
Else
c2 = c2 - Rand(0,5)
EndIf
Case 3
If c3s = 0
c3 = c3 + Rand(0,5)
Else
c3 = c3 - Rand(0,5)
EndIf
End Select

If c1 > 255 c1s = 1
If c1 < 0 c1s = 0
If c2 > 255 c2s = 1
If c2 < 0 c2s = 0
If c3 > 255 c3s = 1
If c3 < 0 c3s = 0

EntityColor mesh, c1,c2,c3


in die Hauptschleife und

BlitzBasic: [AUSKLAPPEN]

c1 = Rand(0,255)
c2 = Rand(0,255)
c3 = Rand(0,255)


davor.
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7

The_Nici

BeitragSo, Mai 03, 2009 19:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Habe 60 FPS.
Sehr schön, Noo! Smile

Noobody

BeitragDi, März 30, 2010 21:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Da jemand im englischen Forum den Code wieder ausgegraben hat, habe ich die Metaball-Berechnung optimiert und ca. um den Faktor 6 beschleunigt. BlitzBasic: [AUSKLAPPEN]
Graphics3D 800, 600, 0, 2
SetBuffer BackBuffer()

Const TRESHOLD# = 0.5

Const GRIDWIDTH = 32
Const GRIDHEIGHT = 32
Const GRIDDEPTH = 32

Const PRECALC_SIZE = 32

Const PRECALC_RES = 6
Const INV_RESOLUTION# = 1.0/PRECALC_RES

Const PRECALC_GRIDSIZE = PRECALC_RES*PRECALC_SIZE

Dim TLT( 255, 15 )
Dim EdgeTable( 255 )
Dim VoxelData#( 0, 0, 0 )
Dim PrecalcData#( PRECALC_GRIDSIZE, PRECALC_GRIDSIZE, PRECALC_GRIDSIZE )

Type TMetaBall
Field X#
Field Y#
Field Z#

Field VX#
Field VY#
Field VZ#

Field Charge#
End Type

Init()

Timer = CreateTimer( 60 )

While Not KeyHit( 1 )
Counter = MilliSecs()
UpdateMetaballs()
Delta = MilliSecs() - Counter
Mesh = MarchingCubes( GRIDWIDTH, GRIDHEIGHT, GRIDDEPTH )
Delta2 = MilliSecs() - Counter - Delta

ScaleEntity Mesh, 2, 2, 2
UpdateNormals Mesh

RenderWorld

FreeEntity Mesh

Text 0, 0, "Berechnungszeit: Metaballs " + RSet( Delta, 2 ) + "ms Marching Cubes " + RSet( Delta2, 2 ) + "ms" + " FPS (ca.) " + Int( 1000/Float( MilliSecs() - Counter ) )

Flip 0
WaitTimer Timer
Wend
End

Function Init()
Cam = CreateCamera()
PositionEntity Cam, 32, 32, -32

Light = CreateLight( 2 )
PositionEntity Light, 64, 64, 0
LightRange Light, 32

LoadTLT()
LoadEdgeTable()

SeedRnd MilliSecs()

Local Enumerator# = 7.0*PRECALC_RES*PRECALC_RES

For X = 0 To PRECALC_GRIDSIZE
For Y = 0 To PRECALC_GRIDSIZE
For Z = 0 To PRECALC_GRIDSIZE
Local DistSq# = ( X - PRECALC_GRIDSIZE*0.5 )*( X - PRECALC_GRIDSIZE*0.5 ) + ( Y - PRECALC_GRIDSIZE*0.5 )*( Y - PRECALC_GRIDSIZE*0.5 ) + ( Z - PRECALC_GRIDSIZE*0.5 )*( Z - PRECALC_GRIDSIZE*0.5 )

If DistSq Then PrecalcData#( X, Y, Z ) = Enumerator#/DistSq#
Next
Next
Next

For i = 1 To 5
MetaBall.TMetaBall = New TMetaBall
MetaBall\X# = Rnd( 8, 24 )
MetaBall\Y# = Rnd( 8, 24 )
MetaBall\Z# = Rnd( 8, 24 )
MetaBall\VX# = Rnd( -0.5, 0.5 )
MetaBall\VY# = Rnd( -0.5, 0.5 )
MetaBall\VZ# = Rnd( -0.5, 0.5 )
MetaBall\Charge# = Rnd( 5, 8 )
Next
End Function

Function UpdateMetaballs()
Dim VoxelData#( GRIDWIDTH - 1, GRIDHEIGHT - 1, GRIDDEPTH - 1 )

For MetaBall.TMetaBall = Each TMetaBall
MetaBall\X# = MetaBall\X# + MetaBall\VX#
MetaBall\Y# = MetaBall\Y# + MetaBall\VY#
MetaBall\Z# = MetaBall\Z# + MetaBall\VZ#

If MetaBall\X# > GRIDWIDTH - 7 Or MetaBall\X# < 7 Then MetaBall\VX# = -MetaBall\VX#
If MetaBall\Y# > GRIDHEIGHT - 7 Or MetaBall\Y# < 7 Then MetaBall\VY# = -MetaBall\VY#
If MetaBall\Z# > GRIDDEPTH - 7 Or MetaBall\Z# < 7 Then MetaBall\VZ# = -MetaBall\VZ#
Next

For MetaBall.TMetaBall = Each TMetaBall
Local StartX = Int( MetaBall\X - 0.5 )
Local StartY = Int( MetaBall\Y - 0.5 )
Local StartZ = Int( MetaBall\Z - 0.5 )

Local AddX = PRECALC_RES - Int( ( Metaball\X - StartX )*PRECALC_RES + 0.5 ) - 1
Local AddY = PRECALC_RES - Int( ( Metaball\Y - StartY )*PRECALC_RES + 0.5 ) - 1
Local AddZ = PRECALC_RES - Int( ( Metaball\Z - StartZ )*PRECALC_RES - 0.5 )

StartX = StartX - PRECALC_SIZE/2
StartY = StartY - PRECALC_SIZE/2
StartZ = StartZ - PRECALC_SIZE/2

Local PrecalcStartX = AddX
Local PrecalcStartY = AddY
Local PrecalcStartZ = AddZ

Local EndX = StartX + PRECALC_SIZE - 1
Local EndY = StartY + PRECALC_SIZE - 1
Local EndZ = StartZ + PRECALC_SIZE - 1

If StartX < 0 Then PrecalcStartX = PrecalcStartX - StartX*PRECALC_RES : StartX = 0
If StartY < 0 Then PrecalcStartY = PrecalcStartY - StartY*PRECALC_RES : StartY = 0
If StartZ < 0 Then PrecalcStartZ = PrecalcStartZ - StartZ*PRECALC_RES : StartZ = 0
If EndX >= GRIDWIDTH Then EndX = GRIDWIDTH - 1
If EndY >= GRIDHEIGHT Then EndY = GRIDHEIGHT - 1
If EndZ >= GRIDDEPTH Then EndZ = GRIDDEPTH - 1

Local PrecalcX = PrecalcStartX

For X = StartX To EndX
Local PrecalcY = PrecalcStartY

For Y = StartY To EndY
Local PrecalcZ = PrecalcStartZ

For Z = StartZ To EndZ
VoxelData( X, Y, Z ) = VoxelData( X, Y, Z ) + PrecalcData( PrecalcX, PrecalcY, PrecalcZ )

PrecalcZ = PrecalcZ + PRECALC_RES
Next

PrecalcY = PrecalcY + PRECALC_RES
Next

PrecalcX = PrecalcX + PRECALC_RES
Next
Next
End Function

Function LoadTLT()
Restore TLT

For CubeIndex = 0 To 255
For EdgeIndex = 0 To 15
Read TLT( CubeIndex, EdgeIndex )
Next
Next
End Function

Function LoadEdgeTable()
Restore EdgeTable

For CubeIndex = 0 To 255
Read EdgeTable( CubeIndex )
Next
End Function

Function MarchingCubes( Width, Height, Depth )
Local EdgeX#[ 11 ], EdgeY#[ 11 ], EdgeZ#[ 11 ], VertexCount

Local TriMesh = CreateMesh()
Local TriSurf = CreateSurface( TriMesh )

For Z = 0 To Depth - 2
For X = 0 To Width - 2
For Y = 0 To Height - 2
Local CubeIndex = 0

If VoxelData#( X + 0, Y + 1, Z + 1 ) > TRESHOLD# Then CubeIndex = CubeIndex Or %00000001
If VoxelData#( X + 1, Y + 1, Z + 1 ) > TRESHOLD# Then CubeIndex = CubeIndex Or %00000010
If VoxelData#( X + 1, Y + 1, Z + 0 ) > TRESHOLD# Then CubeIndex = CubeIndex Or %00000100
If VoxelData#( X + 0, Y + 1, Z + 0 ) > TRESHOLD# Then CubeIndex = CubeIndex Or %00001000
If VoxelData#( X + 0, Y + 0, Z + 1 ) > TRESHOLD# Then CubeIndex = CubeIndex Or %00010000
If VoxelData#( X + 1, Y + 0, Z + 1 ) > TRESHOLD# Then CubeIndex = CubeIndex Or %00100000
If VoxelData#( X + 1, Y + 0, Z + 0 ) > TRESHOLD# Then CubeIndex = CubeIndex Or %01000000
If VoxelData#( X + 0, Y + 0, Z + 0 ) > TRESHOLD# Then CubeIndex = CubeIndex Or %10000000

If EdgeTable( CubeIndex ) > 0 Then
If EdgeTable( CubeIndex ) And %000000000001 Then InterpolateEdge( X + 0, Y + 1, Z + 1, X + 1, Y + 1, Z + 1, 0, EdgeX, EdgeY, EdgeZ )
If EdgeTable( CubeIndex ) And %000000000010 Then InterpolateEdge( X + 1, Y + 1, Z + 1, X + 1, Y + 1, Z + 0, 1, EdgeX, EdgeY, EdgeZ )
If EdgeTable( CubeIndex ) And %000000000100 Then InterpolateEdge( X + 1, Y + 1, Z + 0, X + 0, Y + 1, Z + 0, 2, EdgeX, EdgeY, EdgeZ )
If EdgeTable( CubeIndex ) And %000000001000 Then InterpolateEdge( X + 0, Y + 1, Z + 0, X + 0, Y + 1, Z + 1, 3, EdgeX, EdgeY, EdgeZ )

If EdgeTable( CubeIndex ) And %000000010000 Then InterpolateEdge( X + 0, Y + 0, Z + 1, X + 1, Y + 0, Z + 1, 4, EdgeX, EdgeY, EdgeZ )
If EdgeTable( CubeIndex ) And %000000100000 Then InterpolateEdge( X + 1, Y + 0, Z + 1, X + 1, Y + 0, Z + 0, 5, EdgeX, EdgeY, EdgeZ )
If EdgeTable( CubeIndex ) And %000001000000 Then InterpolateEdge( X + 1, Y + 0, Z + 0, X + 0, Y + 0, Z + 0, 6, EdgeX, EdgeY, EdgeZ )
If EdgeTable( CubeIndex ) And %000010000000 Then InterpolateEdge( X + 0, Y + 0, Z + 0, X + 0, Y + 0, Z + 1, 7, EdgeX, EdgeY, EdgeZ )

If EdgeTable( CubeIndex ) And %000100000000 Then InterpolateEdge( X + 0, Y + 0, Z + 1, X + 0, Y + 1, Z + 1, 8, EdgeX, EdgeY, EdgeZ )
If EdgeTable( CubeIndex ) And %001000000000 Then InterpolateEdge( X + 1, Y + 0, Z + 1, X + 1, Y + 1, Z + 1, 9, EdgeX, EdgeY, EdgeZ )
If EdgeTable( CubeIndex ) And %010000000000 Then InterpolateEdge( X + 1, Y + 0, Z + 0, X + 1, Y + 1, Z + 0, 10, EdgeX, EdgeY, EdgeZ )
If EdgeTable( CubeIndex ) And %100000000000 Then InterpolateEdge( X + 0, Y + 0, Z + 0, X + 0, Y + 1, Z + 0, 11, EdgeX, EdgeY, EdgeZ )

Local TriIndex = 0
While TLT( CubeIndex, TriIndex ) >= 0
V1 = AddVertex( TriSurf, EdgeX[ TLT( CubeIndex, TriIndex + 0 ) ], EdgeY[ TLT( CubeIndex, TriIndex + 0 ) ], EdgeZ[ TLT( CubeIndex, TriIndex + 0 ) ] )
V2 = AddVertex( TriSurf, EdgeX[ TLT( CubeIndex, TriIndex + 1 ) ], EdgeY[ TLT( CubeIndex, TriIndex + 1 ) ], EdgeZ[ TLT( CubeIndex, TriIndex + 1 ) ] )
V3 = AddVertex( TriSurf, EdgeX[ TLT( CubeIndex, TriIndex + 2 ) ], EdgeY[ TLT( CubeIndex, TriIndex + 2 ) ], EdgeZ[ TLT( CubeIndex, TriIndex + 2 ) ] )

AddTriangle TriSurf, V1, V2, V3

TriIndex = TriIndex + 3
VertexCount = VertexCount + 3
Wend

If VertexCount > 65000 Then TriSurf = CreateSurface( TriMesh ) ;Die Vertexbuffer von DX sollten wir nicht sprengen
EndIf
Next
Next
Next

Return TriMesh
End Function

Function InterpolateEdge( X1, Y1, Z1, X2, Y2, Z2, Index, EdgeX#[ 11 ], EdgeY#[ 11 ], EdgeZ#[ 11 ] )
Ratio# = ( TRESHOLD# - VoxelData#( X1, Y1, Z1 ) )/( VoxelData#( X2, Y2, Z2 ) - VoxelData#( X1, Y1, Z1 ) )

EdgeX[ Index ] = X1 + Ratio#*( X2 - X1 )
EdgeY[ Index ] = Y1 + Ratio#*( Y2 - Y1 )
EdgeZ[ Index ] = Z1 + Ratio#*( Z2 - Z1 )
End Function

.EdgeTable ;Die Seiten des Würfels, die geschnitten werden
Data $000, $109, $203, $30A, $406, $50F, $605, $70C
Data $80C, $905, $A0F, $B06, $C0A, $D03, $E09, $F00
Data $190, $099, $393, $29A, $596, $49F, $795, $69C
Data $99C, $895, $B9F, $A96, $D9A, $C93, $F99, $E90
Data $230, $339, $033, $13A, $636, $73F, $435, $53C
Data $A3C, $B35, $83F, $936, $E3A, $F33, $C39, $D30
Data $3A0, $2A9, $1A3, $0AA, $7A6, $6AF, $5A5, $4AC
Data $BAC, $AA5, $9AF, $8A6, $fAA, $EA3, $DA9, $CA0
Data $460, $569, $663, $76A, $066, $16F, $265, $36C
Data $C6C, $D65, $E6F, $F66, $86A, $963, $A69, $B60
Data $5F0, $4F9, $7F3, $6FA, $1F6, $0FF, $3F5, $2FC
Data $DFC, $CF5, $FFF, $EF6, $9FA, $8F3, $BF9, $AF0
Data $650, $759, $453, $55A, $256, $35F, $055, $15C
Data $E5C, $F55, $C5F, $D56, $A5A, $B53, $859, $950
Data $7C0, $6C9, $5C3, $4CA, $3C6, $2CF, $1C5, $0CC
Data $FCC, $EC5, $DCF, $CC6, $BCA, $AC3, $9C9, $8C0
Data $8C0, $9C9, $AC3, $BCA, $CC6, $DCF, $EC5, $FCC
Data $0CC, $1C5, $2CF, $3C6, $4CA, $5C3, $6C9, $7C0
Data $950, $859, $B53, $A5A, $D56, $C5F, $F55, $E5C
Data $15C, $055, $35F, $256, $55A, $453, $759, $650
Data $AF0, $BF9, $8F3, $9FA, $EF6, $FFF, $CF5, $DFC
Data $2FC, $3F5, $0FF, $1F6, $6FA, $7F3, $4F9, $5F0
Data $B60, $A69, $963, $86A, $F66, $E6F, $D65, $C6C
Data $36C, $265, $16F, $066, $76A, $663, $569, $460
Data $CA0, $DA9, $EA3, $FAA, $8A6, $9AF, $AA5, $BAC
Data $4AC, $5A5, $6AF, $7A6, $0AA, $1A3, $2A9, $3A0
Data $D30, $C39, $F33, $E3A, $936, $83F, $B35, $A3C
Data $53C, $435, $73F, $636, $13A, $033, $339, $230
Data $E90, $F99, $C93, $D9A, $A96, $B9F, $895, $99C
Data $69C, $795, $49F, $596, $29A, $393, $099, $190
Data $F00, $E09, $D03, $C0A, $B06, $A0F, $905, $80C
Data $70C, $605, $50F, $406, $30A, $203, $109, $000


.TLT ;Triangle Lookup Table
Data -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 0, 8, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 0, 1, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 1, 8, 3, 9, 8, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 1, 2, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 0, 8, 3, 1, 2, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 9, 2, 10, 0, 2, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 2, 8, 3, 2, 10, 8, 10, 9, 8, -1, -1, -1, -1, -1, -1, -1
Data 3, 11, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 0, 11, 2, 8, 11, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 1, 9, 0, 2, 3, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 1, 11, 2, 1, 9, 11, 9, 8, 11, -1, -1, -1, -1, -1, -1, -1
Data 3, 10, 1, 11, 10, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 0, 10, 1, 0, 8, 10, 8, 11, 10, -1, -1, -1, -1, -1, -1, -1
Data 3, 9, 0, 3, 11, 9, 11, 10, 9, -1, -1, -1, -1, -1, -1, -1
Data 9, 8, 10, 10, 8, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 4, 7, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 4, 3, 0, 7, 3, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 0, 1, 9, 8, 4, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 4, 1, 9, 4, 7, 1, 7, 3, 1, -1, -1, -1, -1, -1, -1, -1
Data 1, 2, 10, 8, 4, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 3, 4, 7, 3, 0, 4, 1, 2, 10, -1, -1, -1, -1, -1, -1, -1
Data 9, 2, 10, 9, 0, 2, 8, 4, 7, -1, -1, -1, -1, -1, -1, -1
Data 2, 10, 9, 2, 9, 7, 2, 7, 3, 7, 9, 4, -1, -1, -1, -1
Data 8, 4, 7, 3, 11, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 11, 4, 7, 11, 2, 4, 2, 0, 4, -1, -1, -1, -1, -1, -1, -1
Data 9, 0, 1, 8, 4, 7, 2, 3, 11, -1, -1, -1, -1, -1, -1, -1
Data 4, 7, 11, 9, 4, 11, 9, 11, 2, 9, 2, 1, -1, -1, -1, -1
Data 3, 10, 1, 3, 11, 10, 7, 8, 4, -1, -1, -1, -1, -1, -1, -1
Data 1, 11, 10, 1, 4, 11, 1, 0, 4, 7, 11, 4, -1, -1, -1, -1
Data 4, 7, 8, 9, 0, 11, 9, 11, 10, 11, 0, 3, -1, -1, -1, -1
Data 4, 7, 11, 4, 11, 9, 9, 11, 10, -1, -1, -1, -1, -1, -1, -1
Data 9, 5, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 9, 5, 4, 0, 8, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 0, 5, 4, 1, 5, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 8, 5, 4, 8, 3, 5, 3, 1, 5, -1, -1, -1, -1, -1, -1, -1
Data 1, 2, 10, 9, 5, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 3, 0, 8, 1, 2, 10, 4, 9, 5, -1, -1, -1, -1, -1, -1, -1
Data 5, 2, 10, 5, 4, 2, 4, 0, 2, -1, -1, -1, -1, -1, -1, -1
Data 2, 10, 5, 3, 2, 5, 3, 5, 4, 3, 4, 8, -1, -1, -1, -1
Data 9, 5, 4, 2, 3, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 0, 11, 2, 0, 8, 11, 4, 9, 5, -1, -1, -1, -1, -1, -1, -1
Data 0, 5, 4, 0, 1, 5, 2, 3, 11, -1, -1, -1, -1, -1, -1, -1
Data 2, 1, 5, 2, 5, 8, 2, 8, 11, 4, 8, 5, -1, -1, -1, -1
Data 10, 3, 11, 10, 1, 3, 9, 5, 4, -1, -1, -1, -1, -1, -1, -1
Data 4, 9, 5, 0, 8, 1, 8, 10, 1, 8, 11, 10, -1, -1, -1, -1
Data 5, 4, 0, 5, 0, 11, 5, 11, 10, 11, 0, 3, -1, -1, -1, -1
Data 5, 4, 8, 5, 8, 10, 10, 8, 11, -1, -1, -1, -1, -1, -1, -1
Data 9, 7, 8, 5, 7, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 9, 3, 0, 9, 5, 3, 5, 7, 3, -1, -1, -1, -1, -1, -1, -1
Data 0, 7, 8, 0, 1, 7, 1, 5, 7, -1, -1, -1, -1, -1, -1, -1
Data 1, 5, 3, 3, 5, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 9, 7, 8, 9, 5, 7, 10, 1, 2, -1, -1, -1, -1, -1, -1, -1
Data 10, 1, 2, 9, 5, 0, 5, 3, 0, 5, 7, 3, -1, -1, -1, -1
Data 8, 0, 2, 8, 2, 5, 8, 5, 7, 10, 5, 2, -1, -1, -1, -1
Data 2, 10, 5, 2, 5, 3, 3, 5, 7, -1, -1, -1, -1, -1, -1, -1
Data 7, 9, 5, 7, 8, 9, 3, 11, 2, -1, -1, -1, -1, -1, -1, -1
Data 9, 5, 7, 9, 7, 2, 9, 2, 0, 2, 7, 11, -1, -1, -1, -1
Data 2, 3, 11, 0, 1, 8, 1, 7, 8, 1, 5, 7, -1, -1, -1, -1
Data 11, 2, 1, 11, 1, 7, 7, 1, 5, -1, -1, -1, -1, -1, -1, -1
Data 9, 5, 8, 8, 5, 7, 10, 1, 3, 10, 3, 11, -1, -1, -1, -1
Data 5, 7, 0, 5, 0, 9, 7, 11, 0, 1, 0, 10, 11, 10, 0, -1
Data 11, 10, 0, 11, 0, 3, 10, 5, 0, 8, 0, 7, 5, 7, 0, -1
Data 11, 10, 5, 7, 11, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 10, 6, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 0, 8, 3, 5, 10, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 9, 0, 1, 5, 10, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 1, 8, 3, 1, 9, 8, 5, 10, 6, -1, -1, -1, -1, -1, -1, -1
Data 1, 6, 5, 2, 6, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 1, 6, 5, 1, 2, 6, 3, 0, 8, -1, -1, -1, -1, -1, -1, -1
Data 9, 6, 5, 9, 0, 6, 0, 2, 6, -1, -1, -1, -1, -1, -1, -1
Data 5, 9, 8, 5, 8, 2, 5, 2, 6, 3, 2, 8, -1, -1, -1, -1
Data 2, 3, 11, 10, 6, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 11, 0, 8, 11, 2, 0, 10, 6, 5, -1, -1, -1, -1, -1, -1, -1
Data 0, 1, 9, 2, 3, 11, 5, 10, 6, -1, -1, -1, -1, -1, -1, -1
Data 5, 10, 6, 1, 9, 2, 9, 11, 2, 9, 8, 11, -1, -1, -1, -1
Data 6, 3, 11, 6, 5, 3, 5, 1, 3, -1, -1, -1, -1, -1, -1, -1
Data 0, 8, 11, 0, 11, 5, 0, 5, 1, 5, 11, 6, -1, -1, -1, -1
Data 3, 11, 6, 0, 3, 6, 0, 6, 5, 0, 5, 9, -1, -1, -1, -1
Data 6, 5, 9, 6, 9, 11, 11, 9, 8, -1, -1, -1, -1, -1, -1, -1
Data 5, 10, 6, 4, 7, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 4, 3, 0, 4, 7, 3, 6, 5, 10, -1, -1, -1, -1, -1, -1, -1
Data 1, 9, 0, 5, 10, 6, 8, 4, 7, -1, -1, -1, -1, -1, -1, -1
Data 10, 6, 5, 1, 9, 7, 1, 7, 3, 7, 9, 4, -1, -1, -1, -1
Data 6, 1, 2, 6, 5, 1, 4, 7, 8, -1, -1, -1, -1, -1, -1, -1
Data 1, 2, 5, 5, 2, 6, 3, 0, 4, 3, 4, 7, -1, -1, -1, -1
Data 8, 4, 7, 9, 0, 5, 0, 6, 5, 0, 2, 6, -1, -1, -1, -1
Data 7, 3, 9, 7, 9, 4, 3, 2, 9, 5, 9, 6, 2, 6, 9, -1
Data 3, 11, 2, 7, 8, 4, 10, 6, 5, -1, -1, -1, -1, -1, -1, -1
Data 5, 10, 6, 4, 7, 2, 4, 2, 0, 2, 7, 11, -1, -1, -1, -1
Data 0, 1, 9, 4, 7, 8, 2, 3, 11, 5, 10, 6, -1, -1, -1, -1
Data 9, 2, 1, 9, 11, 2, 9, 4, 11, 7, 11, 4, 5, 10, 6, -1
Data 8, 4, 7, 3, 11, 5, 3, 5, 1, 5, 11, 6, -1, -1, -1, -1
Data 5, 1, 11, 5, 11, 6, 1, 0, 11, 7, 11, 4, 0, 4, 11, -1
Data 0, 5, 9, 0, 6, 5, 0, 3, 6, 11, 6, 3, 8, 4, 7, -1
Data 6, 5, 9, 6, 9, 11, 4, 7, 9, 7, 11, 9, -1, -1, -1, -1
Data 10, 4, 9, 6, 4, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 4, 10, 6, 4, 9, 10, 0, 8, 3, -1, -1, -1, -1, -1, -1, -1
Data 10, 0, 1, 10, 6, 0, 6, 4, 0, -1, -1, -1, -1, -1, -1, -1
Data 8, 3, 1, 8, 1, 6, 8, 6, 4, 6, 1, 10, -1, -1, -1, -1
Data 1, 4, 9, 1, 2, 4, 2, 6, 4, -1, -1, -1, -1, -1, -1, -1
Data 3, 0, 8, 1, 2, 9, 2, 4, 9, 2, 6, 4, -1, -1, -1, -1
Data 0, 2, 4, 4, 2, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 8, 3, 2, 8, 2, 4, 4, 2, 6, -1, -1, -1, -1, -1, -1, -1
Data 10, 4, 9, 10, 6, 4, 11, 2, 3, -1, -1, -1, -1, -1, -1, -1
Data 0, 8, 2, 2, 8, 11, 4, 9, 10, 4, 10, 6, -1, -1, -1, -1
Data 3, 11, 2, 0, 1, 6, 0, 6, 4, 6, 1, 10, -1, -1, -1, -1
Data 6, 4, 1, 6, 1, 10, 4, 8, 1, 2, 1, 11, 8, 11, 1, -1
Data 9, 6, 4, 9, 3, 6, 9, 1, 3, 11, 6, 3, -1, -1, -1, -1
Data 8, 11, 1, 8, 1, 0, 11, 6, 1, 9, 1, 4, 6, 4, 1, -1
Data 3, 11, 6, 3, 6, 0, 0, 6, 4, -1, -1, -1, -1, -1, -1, -1
Data 6, 4, 8, 11, 6, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 7, 10, 6, 7, 8, 10, 8, 9, 10, -1, -1, -1, -1, -1, -1, -1
Data 0, 7, 3, 0, 10, 7, 0, 9, 10, 6, 7, 10, -1, -1, -1, -1
Data 10, 6, 7, 1, 10, 7, 1, 7, 8, 1, 8, 0, -1, -1, -1, -1
Data 10, 6, 7, 10, 7, 1, 1, 7, 3, -1, -1, -1, -1, -1, -1, -1
Data 1, 2, 6, 1, 6, 8, 1, 8, 9, 8, 6, 7, -1, -1, -1, -1
Data 2, 6, 9, 2, 9, 1, 6, 7, 9, 0, 9, 3, 7, 3, 9, -1
Data 7, 8, 0, 7, 0, 6, 6, 0, 2, -1, -1, -1, -1, -1, -1, -1
Data 7, 3, 2, 6, 7, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 2, 3, 11, 10, 6, 8, 10, 8, 9, 8, 6, 7, -1, -1, -1, -1
Data 2, 0, 7, 2, 7, 11, 0, 9, 7, 6, 7, 10, 9, 10, 7, -1
Data 1, 8, 0, 1, 7, 8, 1, 10, 7, 6, 7, 10, 2, 3, 11, -1
Data 11, 2, 1, 11, 1, 7, 10, 6, 1, 6, 7, 1, -1, -1, -1, -1
Data 8, 9, 6, 8, 6, 7, 9, 1, 6, 11, 6, 3, 1, 3, 6, -1
Data 0, 9, 1, 11, 6, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 7, 8, 0, 7, 0, 6, 3, 11, 0, 11, 6, 0, -1, -1, -1, -1
Data 7, 11, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 7, 6, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 3, 0, 8, 11, 7, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 0, 1, 9, 11, 7, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 8, 1, 9, 8, 3, 1, 11, 7, 6, -1, -1, -1, -1, -1, -1, -1
Data 10, 1, 2, 6, 11, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 1, 2, 10, 3, 0, 8, 6, 11, 7, -1, -1, -1, -1, -1, -1, -1
Data 2, 9, 0, 2, 10, 9, 6, 11, 7, -1, -1, -1, -1, -1, -1, -1
Data 6, 11, 7, 2, 10, 3, 10, 8, 3, 10, 9, 8, -1, -1, -1, -1
Data 7, 2, 3, 6, 2, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 7, 0, 8, 7, 6, 0, 6, 2, 0, -1, -1, -1, -1, -1, -1, -1
Data 2, 7, 6, 2, 3, 7, 0, 1, 9, -1, -1, -1, -1, -1, -1, -1
Data 1, 6, 2, 1, 8, 6, 1, 9, 8, 8, 7, 6, -1, -1, -1, -1
Data 10, 7, 6, 10, 1, 7, 1, 3, 7, -1, -1, -1, -1, -1, -1, -1
Data 10, 7, 6, 1, 7, 10, 1, 8, 7, 1, 0, 8, -1, -1, -1, -1
Data 0, 3, 7, 0, 7, 10, 0, 10, 9, 6, 10, 7, -1, -1, -1, -1
Data 7, 6, 10, 7, 10, 8, 8, 10, 9, -1, -1, -1, -1, -1, -1, -1
Data 6, 8, 4, 11, 8, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 3, 6, 11, 3, 0, 6, 0, 4, 6, -1, -1, -1, -1, -1, -1, -1
Data 8, 6, 11, 8, 4, 6, 9, 0, 1, -1, -1, -1, -1, -1, -1, -1
Data 9, 4, 6, 9, 6, 3, 9, 3, 1, 11, 3, 6, -1, -1, -1, -1
Data 6, 8, 4, 6, 11, 8, 2, 10, 1, -1, -1, -1, -1, -1, -1, -1
Data 1, 2, 10, 3, 0, 11, 0, 6, 11, 0, 4, 6, -1, -1, -1, -1
Data 4, 11, 8, 4, 6, 11, 0, 2, 9, 2, 10, 9, -1, -1, -1, -1
Data 10, 9, 3, 10, 3, 2, 9, 4, 3, 11, 3, 6, 4, 6, 3, -1
Data 8, 2, 3, 8, 4, 2, 4, 6, 2, -1, -1, -1, -1, -1, -1, -1
Data 0, 4, 2, 4, 6, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 1, 9, 0, 2, 3, 4, 2, 4, 6, 4, 3, 8, -1, -1, -1, -1
Data 1, 9, 4, 1, 4, 2, 2, 4, 6, -1, -1, -1, -1, -1, -1, -1
Data 8, 1, 3, 8, 6, 1, 8, 4, 6, 6, 10, 1, -1, -1, -1, -1
Data 10, 1, 0, 10, 0, 6, 6, 0, 4, -1, -1, -1, -1, -1, -1, -1
Data 4, 6, 3, 4, 3, 8, 6, 10, 3, 0, 3, 9, 10, 9, 3, -1
Data 10, 9, 4, 6, 10, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 4, 9, 5, 7, 6, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 0, 8, 3, 4, 9, 5, 11, 7, 6, -1, -1, -1, -1, -1, -1, -1
Data 5, 0, 1, 5, 4, 0, 7, 6, 11, -1, -1, -1, -1, -1, -1, -1
Data 11, 7, 6, 8, 3, 4, 3, 5, 4, 3, 1, 5, -1, -1, -1, -1
Data 9, 5, 4, 10, 1, 2, 7, 6, 11, -1, -1, -1, -1, -1, -1, -1
Data 6, 11, 7, 1, 2, 10, 0, 8, 3, 4, 9, 5, -1, -1, -1, -1
Data 7, 6, 11, 5, 4, 10, 4, 2, 10, 4, 0, 2, -1, -1, -1, -1
Data 3, 4, 8, 3, 5, 4, 3, 2, 5, 10, 5, 2, 11, 7, 6, -1
Data 7, 2, 3, 7, 6, 2, 5, 4, 9, -1, -1, -1, -1, -1, -1, -1
Data 9, 5, 4, 0, 8, 6, 0, 6, 2, 6, 8, 7, -1, -1, -1, -1
Data 3, 6, 2, 3, 7, 6, 1, 5, 0, 5, 4, 0, -1, -1, -1, -1
Data 6, 2, 8, 6, 8, 7, 2, 1, 8, 4, 8, 5, 1, 5, 8, -1
Data 9, 5, 4, 10, 1, 6, 1, 7, 6, 1, 3, 7, -1, -1, -1, -1
Data 1, 6, 10, 1, 7, 6, 1, 0, 7, 8, 7, 0, 9, 5, 4, -1
Data 4, 0, 10, 4, 10, 5, 0, 3, 10, 6, 10, 7, 3, 7, 10, -1
Data 7, 6, 10, 7, 10, 8, 5, 4, 10, 4, 8, 10, -1, -1, -1, -1
Data 6, 9, 5, 6, 11, 9, 11, 8, 9, -1, -1, -1, -1, -1, -1, -1
Data 3, 6, 11, 0, 6, 3, 0, 5, 6, 0, 9, 5, -1, -1, -1, -1
Data 0, 11, 8, 0, 5, 11, 0, 1, 5, 5, 6, 11, -1, -1, -1, -1
Data 6, 11, 3, 6, 3, 5, 5, 3, 1, -1, -1, -1, -1, -1, -1, -1
Data 1, 2, 10, 9, 5, 11, 9, 11, 8, 11, 5, 6, -1, -1, -1, -1
Data 0, 11, 3, 0, 6, 11, 0, 9, 6, 5, 6, 9, 1, 2, 10, -1
Data 11, 8, 5, 11, 5, 6, 8, 0, 5, 10, 5, 2, 0, 2, 5, -1
Data 6, 11, 3, 6, 3, 5, 2, 10, 3, 10, 5, 3, -1, -1, -1, -1
Data 5, 8, 9, 5, 2, 8, 5, 6, 2, 3, 8, 2, -1, -1, -1, -1
Data 9, 5, 6, 9, 6, 0, 0, 6, 2, -1, -1, -1, -1, -1, -1, -1
Data 1, 5, 8, 1, 8, 0, 5, 6, 8, 3, 8, 2, 6, 2, 8, -1
Data 1, 5, 6, 2, 1, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 1, 3, 6, 1, 6, 10, 3, 8, 6, 5, 6, 9, 8, 9, 6, -1
Data 10, 1, 0, 10, 0, 6, 9, 5, 0, 5, 6, 0, -1, -1, -1, -1
Data 0, 3, 8, 5, 6, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 10, 5, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 11, 5, 10, 7, 5, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 11, 5, 10, 11, 7, 5, 8, 3, 0, -1, -1, -1, -1, -1, -1, -1
Data 5, 11, 7, 5, 10, 11, 1, 9, 0, -1, -1, -1, -1, -1, -1, -1
Data 10, 7, 5, 10, 11, 7, 9, 8, 1, 8, 3, 1, -1, -1, -1, -1
Data 11, 1, 2, 11, 7, 1, 7, 5, 1, -1, -1, -1, -1, -1, -1, -1
Data 0, 8, 3, 1, 2, 7, 1, 7, 5, 7, 2, 11, -1, -1, -1, -1
Data 9, 7, 5, 9, 2, 7, 9, 0, 2, 2, 11, 7, -1, -1, -1, -1
Data 7, 5, 2, 7, 2, 11, 5, 9, 2, 3, 2, 8, 9, 8, 2, -1
Data 2, 5, 10, 2, 3, 5, 3, 7, 5, -1, -1, -1, -1, -1, -1, -1
Data 8, 2, 0, 8, 5, 2, 8, 7, 5, 10, 2, 5, -1, -1, -1, -1
Data 9, 0, 1, 5, 10, 3, 5, 3, 7, 3, 10, 2, -1, -1, -1, -1
Data 9, 8, 2, 9, 2, 1, 8, 7, 2, 10, 2, 5, 7, 5, 2, -1
Data 1, 3, 5, 3, 7, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 0, 8, 7, 0, 7, 1, 1, 7, 5, -1, -1, -1, -1, -1, -1, -1
Data 9, 0, 3, 9, 3, 5, 5, 3, 7, -1, -1, -1, -1, -1, -1, -1
Data 9, 8, 7, 5, 9, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 5, 8, 4, 5, 10, 8, 10, 11, 8, -1, -1, -1, -1, -1, -1, -1
Data 5, 0, 4, 5, 11, 0, 5, 10, 11, 11, 3, 0, -1, -1, -1, -1
Data 0, 1, 9, 8, 4, 10, 8, 10, 11, 10, 4, 5, -1, -1, -1, -1
Data 10, 11, 4, 10, 4, 5, 11, 3, 4, 9, 4, 1, 3, 1, 4, -1
Data 2, 5, 1, 2, 8, 5, 2, 11, 8, 4, 5, 8, -1, -1, -1, -1
Data 0, 4, 11, 0, 11, 3, 4, 5, 11, 2, 11, 1, 5, 1, 11, -1
Data 0, 2, 5, 0, 5, 9, 2, 11, 5, 4, 5, 8, 11, 8, 5, -1
Data 9, 4, 5, 2, 11, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 2, 5, 10, 3, 5, 2, 3, 4, 5, 3, 8, 4, -1, -1, -1, -1
Data 5, 10, 2, 5, 2, 4, 4, 2, 0, -1, -1, -1, -1, -1, -1, -1
Data 3, 10, 2, 3, 5, 10, 3, 8, 5, 4, 5, 8, 0, 1, 9, -1
Data 5, 10, 2, 5, 2, 4, 1, 9, 2, 9, 4, 2, -1, -1, -1, -1
Data 8, 4, 5, 8, 5, 3, 3, 5, 1, -1, -1, -1, -1, -1, -1, -1
Data 0, 4, 5, 1, 0, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 8, 4, 5, 8, 5, 3, 9, 0, 5, 0, 3, 5, -1, -1, -1, -1
Data 9, 4, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 4, 11, 7, 4, 9, 11, 9, 10, 11, -1, -1, -1, -1, -1, -1, -1
Data 0, 8, 3, 4, 9, 7, 9, 11, 7, 9, 10, 11, -1, -1, -1, -1
Data 1, 10, 11, 1, 11, 4, 1, 4, 0, 7, 4, 11, -1, -1, -1, -1
Data 3, 1, 4, 3, 4, 8, 1, 10, 4, 7, 4, 11, 10, 11, 4, -1
Data 4, 11, 7, 9, 11, 4, 9, 2, 11, 9, 1, 2, -1, -1, -1, -1
Data 9, 7, 4, 9, 11, 7, 9, 1, 11, 2, 11, 1, 0, 8, 3, -1
Data 11, 7, 4, 11, 4, 2, 2, 4, 0, -1, -1, -1, -1, -1, -1, -1
Data 11, 7, 4, 11, 4, 2, 8, 3, 4, 3, 2, 4, -1, -1, -1, -1
Data 2, 9, 10, 2, 7, 9, 2, 3, 7, 7, 4, 9, -1, -1, -1, -1
Data 9, 10, 7, 9, 7, 4, 10, 2, 7, 8, 7, 0, 2, 0, 7, -1
Data 3, 7, 10, 3, 10, 2, 7, 4, 10, 1, 10, 0, 4, 0, 10, -1
Data 1, 10, 2, 8, 7, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 4, 9, 1, 4, 1, 7, 7, 1, 3, -1, -1, -1, -1, -1, -1, -1
Data 4, 9, 1, 4, 1, 7, 0, 8, 1, 8, 7, 1, -1, -1, -1, -1
Data 4, 0, 3, 7, 4, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 4, 8, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 9, 10, 8, 10, 11, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 3, 0, 9, 3, 9, 11, 11, 9, 10, -1, -1, -1, -1, -1, -1, -1
Data 0, 1, 10, 0, 10, 8, 8, 10, 11, -1, -1, -1, -1, -1, -1, -1
Data 3, 1, 10, 11, 3, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 1, 2, 11, 1, 11, 9, 9, 11, 8, -1, -1, -1, -1, -1, -1, -1
Data 3, 0, 9, 3, 9, 11, 1, 2, 9, 2, 11, 9, -1, -1, -1, -1
Data 0, 2, 11, 8, 0, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 3, 2, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 2, 3, 8, 2, 8, 10, 10, 8, 9, -1, -1, -1, -1, -1, -1, -1
Data 9, 10, 2, 0, 9, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 2, 3, 8, 2, 8, 10, 0, 1, 8, 1, 10, 8, -1, -1, -1, -1
Data 1, 10, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 1, 3, 8, 9, 1, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 0, 9, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data 0, 3, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Data -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group