3D Dice

MODE 1
TILE 0,0,RGB(RED),RGB(BLACK),16,40
TILE 16,0,RGB(GREEN),RGB(BLACK),16,40
TILE 32,0,RGB(BLUE),RGB(BLACK),16,40
TILE 48,0,RGB(YELLOW),RGB(BLACK),16,40
'Print "3D Draw"
'--------------------------
Dim n=1, nv=24, nf=6+8, camera=1
' Load vertices arrey
Dim v(2,nv-1)
Restore vertices2
For i=0 To nv-1: For a=0 To 2: Read v(a,i):Next :Next
' Load facecount arrey
Dim INTEGER facecount(nf-1), facesize=0
Restore facecount2
For i=0 To nf-1: Read facecount(i): Inc facesize,facecount(i): Next
' Load faces arrey
Dim INTEGER faces(facesize-1)
Restore faces2
For i=0 To facesize-1: Read faces(i): Next
' Load colours arreys
Dim INTEGER c(1)=(0,RGB(GREEN))
Dim INTEGER edge(nf-1)=(1,1,1,1,1,1, 1,1,1,1,1,1,1,1)
Dim INTEGER fill(nf-1)=(0,0,0,0,0,0, 0,0,0,0,0,0,0,0)
Math SCALE v(), 100.0, v()
Draw3D CREATE 1,nv,nf,camera,v(),facecount(),faces(),c(),edge(),fill()
Draw3D CREATE 2,nv,nf,camera,v(),facecount(),faces(),c(),edge(),fill()
Draw3D CREATE 3,nv,nf,camera,v(),facecount(),faces(),c(),edge(),fill()
Draw3D CREATE 4,nv,nf,camera,v(),facecount(),faces(),c(),edge(),fill()
Draw3D CREATE 5,nv,nf,camera,v(),facecount(),faces(),c(),edge(),fill()
'--------------------------
nv=84: nf=21: camera=1
' Load vertices arrey
Dim v1(2,nv-1)
Restore vertices3
For i=0 To nv-1: For a=0 To 2: Read v1(a,i):Next :Next
' Load facecount arrey
Dim INTEGER facecount1(nf-1)
facesize=0
Restore facecount3
For i=0 To nf-1: Read facecount1(i): Inc facesize,facecount1(i): Next
' Load faces arrey
Dim INTEGER faces1(facesize-1)
Restore faces3
For i=0 To facesize-1: Read faces1(i): Next
' Load colours arreys
Dim INTEGER edge1(nf-1)=(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1)
Dim INTEGER fill1(nf-1)=(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1)
Math SCALE v1(), 100.0, v1()
Draw3D CREATE 6,nv,nf,camera,v1(),facecount1(),faces1(),c(),edge1(),fill1()
'--------------------------
Dim INTEGER viewplane=400
Draw3D CAMERA n, viewplane
Dim INTEGER x=0, y=0, z=6000
'Draw3D SHOW n, x, y, z
'END
'================================================
Dim FLOAT yaw=Rad(1), pitch=Rad(2), roll=Rad(0.5)
Dim FLOAT q(4)
FRAMEBUFFER CREATE
FRAMEBUFFER WRITE F
Do
Math Q_EULER yaw, pitch, roll, q()
Draw3D ROTATE q(),1
Draw3D ROTATE q(),2
Draw3D ROTATE q(),3
Draw3D ROTATE q(),4
Draw3D ROTATE q(),5
Draw3D ROTATE q(),6
Draw3D SHOW 1,x,y,z
Draw3D WRITE 6,x,y,z
Draw3D SHOW 2,-1800,y,z
Draw3D WRITE 6,-1800,y,z
Draw3D SHOW 3,-3600,y,z
Draw3D WRITE 6,-3600,y,z
Draw3D SHOW 4,1800,y,z
Draw3D WRITE 6,1800,y,z
Draw3D SHOW 5,3600,y,z
Draw3D WRITE 6,3600,y,z
Inc yaw,Rad(4) '1
Inc pitch,Rad(8) '2
Inc roll,Rad(2) '0.5
FRAMEBUFFER copy F,N,b
Loop Until Inkey$<>""
FRAMEBUFFER WRITE N
Memory
FRAMEBUFFER close
End
vertices2: '24/14
Data -4,3,-4, -3,4,-4, 3,4,-4, 4,3,-4, 4,-3,-4, 3,-4,-4, -3,-4,-4, -4,-3,-4
Data -4,4,-3, 4,4,-3, 4,-4,-3, -4,-4,-3, -4,4,3, 4,4,3, 4,-4,3, -4,-4,3
Data -4,3,4, -3,4,4, 3,4,4, 4,3,4, 4,-3,4, 3,-4,4, -3,-4,4, -4,-3,4
facecount2:
Data 8,8,8,8,8,8,3,3,3,3,3,3,3,3
faces2:
Data 0,1,2,3,4,5,6,7, 12,17,18,13,9,2,1,8, 3,9,13,19,20,14,10,4
Data 16,12,8,0,7,11,15,23, 11,6,5,10,14,21,22,15, 19,18,17,16,23,22,21,20
Data 8,1,0, 9,3,2, 10,5,4, 11,7,6, 12,16,17, 13,18,19, 14,20,21, 15,22,23
vertices3: '84/21
Data 0,1,-4,1,0,-4,0,-1,-4,-1,0,-4 '1
Data -2,4,-1,-1,4,-2,-2,4,-3,-3,4,-2, 2,4,3,3,4,2,2,4,1,1,4,2 '2
Data 4,-1,-2,4,-2,-1,4,-3,-2,4,-2,-3,4,1,0,4,0,1,4,-1,0,4,0,-1,4,3,2,4,2,3,4,1,2,4,2,1
Data -4,3,2,-4,2,1,-4,1,2,-4,2,3, -4,3,-2,-4,2,-3,-4,1,-2,-4,2,-1 '4
Data -4,-1,2,-4,-2,1,-4,-3,2,-4,-2,3, -4,-1,-2,-4,-2,-3,-4,-3,-2,-4,-2,-1
Data -2,-4,-3,-1,-4,-2,-2,-4,-1,-3,-4,-2, 2,-4,-3,3,-4,-2,2,-4,-1,1,-4,-2 '5
Data -2,-4,1,-1,-4,2,-2,-4,3,-3,-4,2, 2,-4,1,3,-4,2,2,-4,3,1,-4,2
Data 0,-4,-1, 1,-4,0, 0,-4,1, -1,-4,0
Data 2,3,4,1,2,4,2,1,4,3,2,4, -2,3,4,-3,2,4,-2,1,4,-1,2,4 '6
Data 2,1,4,1,0,4,2,-1,4,3,0,4, -2,1,4,-3,0,4,-2,-1,4,-1,0,4
Data 2,-1,4,1,-2,4,2,-3,4,3,-2,4, -2,-1,4,-3,-2,4,-2,-3,4,-1,-2,4
facecount3:
Data 4, 4,4, 4,4,4, 4,4,4,4, 4,4,4,4,4, 4,4,4,4,4,4
faces3:
Data 0,1,2,3
Data 4,5,6,7, 8,9,10,11
Data 12,13,14,15, 16,17,18,19, 20,21,22,23
Data 24,25,26,27, 28,29,30,31, 32,33,34,35, 36,37,38,39
Data 40,41,42,43, 44,45,46,47, 48,49,50,51, 52,53,54,55, 56,57,58,59
Data 60,61,62,63, 64,65,66,67, 68,69,70,71, 72,73,74,75, 76,77,78,79, 80,81,82,83