javavi
 Guru
 Joined: 01/10/2023 Location: UkrainePosts: 561 |
| Posted: 05:46am 13 Dec 2024 |
|
|
|
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
|